Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verknüpfung zum eigenen Programm mit Paramentern (https://www.delphipraxis.net/85763-verknuepfung-zum-eigenen-programm-mit-paramentern.html)

MCXSC 4. Feb 2007 14:54


Verknüpfung zum eigenen Programm mit Paramentern
 
Hallo!

Ich habe folgendes Problem:

Ich habe einen SvaeDialog, in dem der User einen Dateinamen angeben kann. Nun wird dementsprechend eine Verknüpfung zu meinem Programm erstellt...

Delphi-Quellcode:
function CreateLink(const AFilename, ALNKFilename, ADescription: 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)));
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;
Das ist die Funktion und das ist der Aufruf:

Delphi-Quellcode:
if dialog_verknuepfung.Execute then CreateLink(Application.ExeName + ' parameter', dialog_verknuepfung.FileName, dialog_verknuepfung.FileName);
Funktioniert auch, nur dass der Link dann auf folgendes Ziel verweist:

"Pfad+Exe parameter"

Somit findet Windoof des natürlich nicht...

Weiß jemand, wie ich die Verknüpfung samt Parameter korrekt erstellen kann? Ich hab nirgends was brauchbares dazu gefunden... :(

MCXSC

chaosben 4. Feb 2007 15:11

Re: Verknüpfung zum eigenen Programm mit Paramentern
 
Hi!

So aus dem Hut würde ich folgendes vorschlagen:
Delphi-Quellcode:
CreateLink('"' + Application.ExeName + '" parameter',...
Dadurch sollte Windows verstehen, was bei deiner Übergabe der Parameter und was das Programm ist.

MCXSC 4. Feb 2007 15:20

Re: Verknüpfung zum eigenen Programm mit Paramentern
 
Nee, dann sieht das Ziel der Verknüpfung wie folgt aus:

"C:\"Pfad+EXE" parameter"

chaosben 4. Feb 2007 15:36

Re: Verknüpfung zum eigenen Programm mit Paramentern
 
:-D

Die Antwort ist so simpel, das man kaum drauf kommt.

Zitat:

Zitat von Die Delphi-Hilfe ©Borland
IShellLink::SetArguments Method
Sets the command-line arguments for a Shell link object.

Syntax
HRESULT SetArguments(LPCTSTR pszArgs);

Parameters
pszArgs
Pointer to a buffer that contains the new command-line arguments.

Return Value
Returns S_OK if successful, or an error value otherwise.

Remarks
This method is useful when creating a link to an application that takes special flags as arguments, such as a compiler.

Auf deutsch:
Man erweitere den Funktionskopf so ...
Delphi-Quellcode:
function CreateLink(const AFilename, AArgs, ALNKFilename, ADescription: String) : Boolean;
... und füge folgende Zeile ein:
Delphi-Quellcode:
psl.SetArguments(PChar(AArgs));

MCXSC 4. Feb 2007 16:34

Re: Verknüpfung zum eigenen Programm mit Paramentern
 
Super danke...! So funktioniert es :)

Hatt mich zwar in der Hilfe wegen IShellLink umgeschaut, aber das Argumente Parameter sind... :) Dazu war ich wohl im Halbschlaf nicht in der Lage... Danke jedenfalls! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr.

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