Entwickler-Ecke
Dateizugriff - OpenDialog und Desktop + Verknüpfungen
Jakane - Mi 18.05.11 10:16
Titel: OpenDialog und Desktop + Verknüpfungen
Hallo liebe Delphi-Helfer :)
Ich möchte mittels meinem Programm eine relativ komplette Ordner-Struktur automatisch aufbauen. Hab dabei aber 2 kleine Probleme:
1. Wie erstellt man (wenn's geht mit OpenDialog) eine Verknüpfung eines vorbestimmten Ordners (zB: \Neuer testOrdner\Test) und
2. Wie finde ich das Desktop-Verzeichnis eines beliebigen PC's um dort Ordner oder Verknüpfungen abzulegen :)
Danke für die Hilfen :)
Martok - Mi 18.05.11 11:07
Hallo,
bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt.
Mindestens für 2. wirst du mit der Forensuche erfolgreich sein ;)
Entscheide dich bitte für eine Frage, die hier diskutiert werden soll und erstelle ggf. ein zweites Thema für die andere.
Viele Grüße,
Martok
Jakane - Mi 18.05.11 12:31
Für mich hängt beides zusammen :(
Aber 1. die Verknüpfung erstellen ist mir vorerst wichtiger.
Jakane - Do 19.05.11 09:24
Ich versteh die in dem Thema beschriebene Funktion nicht :(
Delete - Do 19.05.11 09:41
Jakane hat folgendes geschrieben : |
Ich versteh die in dem Thema beschriebene Funktion nicht :( |
Und jetzt? Wie wäre es, wenn du uns sagst, was du nicht verstehst?
Jakane - Do 19.05.11 10:19
:cry:
nun, das einzigste was ich aus der funktion lesen kann ist das da 2 if funktionen drin sind, alles andere versteh ich nicht :cry:
hatte gehoft es gibt ein einfacheren weg eine verknüpfung zu machen
Andreas L. - Do 19.05.11 10:57
Wo liegt das Problem? Die Funktion in deine .pas-Datei kopieren.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| function CreateLink(const AFilename, ALNKFilename, ADescription, AArgument: string) : Boolean; var psl : IShellLink; ppf : IPersistFile; wsz : PWideChar; begin result:=false; if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_inPROC_SERVER, IID_IShellLinkA, psl)) then begin psl.SetPath(PChar(AFilename)); psl.SetDescription(PChar(ADescription)); psl.SetWorkingDirectory(PChar(ExtractFilePath(AFilename))); psl.SetArguments(PChar(AArgument)); if SUCCEEDED(psl.QueryInterface(IPersistFile, ppf)) then begin GetMem(wsz, MAX_PATH*2); try MultiByteToWideChar(CP_ACP, 0, PChar(ALNKFilename), -1, wsz, MAX_PATH); ppf.Save(wsz, true); result:=true; finally FreeMem(wsz, MAX_PATH*2); end; end; end; end; |
Und in z. B. einem ButtonClick-Ereignis aufrufen:
Delphi-Quelltext
1: 2: 3: 4:
| if CreateLink('C:\programm.exe', 'Pfad-zum-Desktop\Programm.lnk', 'Beschreibung', 'ggf. Parameter') then ShowMessage('Link wurde erstellt') else ShowMessage('Da lief was schief... :-('); |
Jakane - Do 19.05.11 11:13
[Fehler] SetUp_01.pas(210): Undefinierter Bezeichner: 'IShellLink'
[Fehler] SetUp_01.pas(211): Undefinierter Bezeichner: 'IPersistFile'
[Fehler] SetUp_01.pas(215): Undefinierter Bezeichner: 'CoCreateInstance'
[Fehler] SetUp_01.pas(215): Undefinierter Bezeichner: 'CLSID_ShellLink'
[Fehler] SetUp_01.pas(216): Undefinierter Bezeichner: 'CLSCTX_inPROC_SERVER'
[Fehler] SetUp_01.pas(216): Undefinierter Bezeichner: 'IID_IShellLinkA'
[Fehler] SetUp_01.pas(218): Operator oder Semikolon fehlt
[Fehler] SetUp_01.pas(219): Operator oder Semikolon fehlt
[Fehler] SetUp_01.pas(220): Operator oder Semikolon fehlt
[Fehler] SetUp_01.pas(221): Operator oder Semikolon fehlt
[Fehler] SetUp_01.pas(222): ')' erwartet, aber Bezeichner 'QueryInterface' gefunden
[Fehler] SetUp_01.pas(227): Operator oder Semikolon fehlt
Das ist mein Problem bei Funktionen die ich nicht kenne und nicht verstehe :(
Andreas L. - Do 19.05.11 12:37
Lösung: IShellLink im MSDN oder Delphi-Hilfe eingeben und schauen in welcher Datei das definiert ist. Glaube das war ShellAPI oder ShlObj. Alternativ im Forum danach suchen. Bisschen Eigeninitiative wäre schon angebracht!
Jakane - Do 19.05.11 13:37
Wenn meine Eigeninitiative Ergebnisse gehabt hätte, hätte ich kein Thema geschrieben, aber hier scheint man lieber zu meckern.
Danke, inzwischen hat mir ein Freund helfen können
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!