Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verknüpfung erstellen? (https://www.delphipraxis.net/32472-verknuepfung-erstellen.html)

fkerber 24. Okt 2004 13:21

Re: Verknüpfung erstellen?
 
Hi!

Du musst min. mal noch SHLOBJ oben zu den uses dazu schreiben, evtl. noch mehr.
Markiere einfach das wort, dass er nicht kennt und drücke F1.

Ciao Frederic

CalganX 24. Okt 2004 13:24

Re: Verknüpfung erstellen?
 
Hi,
außerdem noch ShellAPI. ;)

Chris

malo 24. Okt 2004 13:29

Re: Verknüpfung erstellen?
 
Nachdem ich SHLOBJ in die Uses-Klausel aufgenommen hab, hat sich die Anzahl der Fehldermeldungen stark verringert.

[Fehler] Unit2.pas(35): Undefinierter Bezeichner: 'IPersistFile'
[Fehler] Unit2.pas(45): Undefinierter Bezeichner: 'CoCreateInstance'
[Fehler] Unit2.pas(47): Undefinierter Bezeichner: 'CLSCTX_INPROC_SERVER'
[Fehler] Unit2.pas(56): Operator oder Semikolon fehlt
[Fehler] Unit2.pas(58): Operator oder Semikolon fehlt
[Fataler Fehler] Project2.dpr(5): Verwendete Unit 'Unit2.pas' kann nicht compiliert werden


Ich hab dann versucht, die Sachen mit F1 nachzuschlagen, aber in dem Englischen Text(trotz deutscher Delphi-Version) konnte ich keine Hilfe für mich finden, bzw. hab sie nicht verstanden :(

edit: shellAPI hab ich auch hinzugefügt, hat mir jedoch in den Fehlermeldungen keine Änderung gebracht :(

fkerber 24. Okt 2004 13:40

Re: Verknüpfung erstellen?
 
Hi!

Die hier evtl. mal noch:
ActiveX, ComObj;



Ciao Frederic

malo 24. Okt 2004 13:56

Re: Verknüpfung erstellen?
 
Jetzt Compiliert Delphi mein programm. Wenn ich jetzt die Verknüpfung erstellen will, beendet sich mein Programm und ein Textfenster erscheint.

Zitat:

Zitat von Fehlermeldung
Im Projekt Project2.exe ist eine Exception der Klasse EAccesViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse blabla in Modul 'Project2.exe'. Lesen der Adresse blabla'. Prozess wurde angehalten

So ungefähr steht das da. Dann ist diese Zeile blau unterlegt:

Delphi-Quellcode:
CreateLink (MyPath1+'Project2.exe', 'F:\Verknüpfung.exe', 'Verknüpfung');
Wobei MyPath1 eine Variable ist, um den Programmpfad herauszufinden. Was ist falsch?

DelphiFreund 24. Okt 2004 14:28

Re: Verknüpfung erstellen?
 
Hier, ein wenig googeln hätte nicht geschadet:

Delphi-Quellcode:
function CreateLink(lpszPathObj,lpszPathLink,lpszDesc:string):Boolean;
var psl : IShellLink;
    ppf : IPersistFile;
begin
    result := False;
    if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl)) then begin
       psl.SetPath(PChar(lpszPathObj));
       psl.SetDescription(PChar(lpszDesc));
       if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,ppf)) then begin
           ppf.Save(StringToOLEStr(lpszPathLink),TRUE);
           Result := true;
//           ppf._Release;      ---> Runtime-Error wenn aktiv
         end;
       end;
//   psl._Release;             ---> Runtime-Error wenn aktiv
  //end;
end;
lpszPathObj = Datei, die verlinkt werden soll
lpszPathLink = Beschreibung
lpszDesc = Ordner in der die Verknüpfung erstellt werden soll
Result = Erfolg, oder Nichterfolg

Ich hab es ausprobiert, es funktioniert.




Gruß DelphiFreund

malo 24. Okt 2004 15:09

Re: Verknüpfung erstellen?
 
Wenn du dir den Thread durchgelesen hättest, wüsstest du, dass ich bereits eine functin eingebaut habe. Bei deiner function hab ich dasselbe Problem wie bei der anderen: die auf seite 1 (letzter Post) beschriebe Fehlermeldung.

Trotzdem danke ;)

fkerber 24. Okt 2004 15:11

Re: Verknüpfung erstellen?
 
Hi!

Hast du mal überprüft, ob in MyPath1 das richtige drinsteht?
Existiert F:\
Darfst du dort schreiben?


Ciao Frederic

Luckie 24. Okt 2004 15:30

Re: Verknüpfung erstellen?
 
Zitat:

Zitat von malo
@Luckie: Unit einbinden? Was für 'ne Unit und wo genau? Sry, ich kenn mich da einfach nich aus :(

Ja, wie es auch in dem Tipp in der Code-Lib steht:
Zitat:

Zitat von Code-Lib
Benötigt wird die Unit ShlOBJ.


malo 24. Okt 2004 17:40

Re: Verknüpfung erstellen?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von malo
@Luckie: Unit einbinden? Was für 'ne Unit und wo genau? Sry, ich kenn mich da einfach nich aus :(

Ja, wie es auch in dem Tipp in der Code-Lib steht:
Zitat:

Zitat von Code-Lib
Benötigt wird die Unit ShlOBJ.


Interressant wäre da, dass der Post erst heute Mittag editiert wurde :roll:
Ich hab da nämlich das Gefühl, dass das erst heute eingefügt wurde, denn als ich mir das zuletzt angesehen hab, stand da noch nichts wegen einer unit ;)

Naja, wie dem auch sei. Ich hab ja ShlOBJ in der uses-klausel, damit dürfte das wohl erledigt sein, denke ich(berichtigt mich bitte, wenn ich falsch liege).

F:\ existiert und man darf dort schreiben.

Zu MyPath1:

MyPath1 ermittelt den eigenen Programmpfad. Hier mal der Quellcode aus dem OnClick-Ereignis:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var MyPath1 : string;
begin
  MyPath1 := ExtractFilePath(Application.ExeName);
  CreateLink (MyPath1+'Project2.exe', 'F:\Verknüpfung.exe', 'Verknüpfung');
end;
Da wird nun der aktuelle Programmpfad ermittelt und in der Variable MyPath1 gespeichert. Danach wird direkt mit dieser Variable weitergearbeitet. Ich hab also den Programmpfad, hänge da noch den Dateinamen an und das ist dann mein Zielprogramm ;)

Mir ist übrigens grade aufgefallen, dass die Datei "Verknüpfung.exe" erstellt wird, nur ist es halt eine ganz normale .exe ohne irgendeine Funktion :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz