IShellLink.SetPath() Problem

IShellLink.SetPath() Problem

Beitragvon compmgmt » 18. Aug 2017, 07:20 IShellLink.SetPath() Problem

Hi,

ich verwende den folgenden Code in einer Win32-CLI-Anwendung um einen soft link zu erstellen.
Code: Alles auswählen
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;

Der Code an sich funktioniert und erstellt mir die entsprechende Verknüpfung, allerdings warte ich nach dem Ausführen mittels einem ReadLn, bis der Benutzer Enter drückt. Wenn ich nun allerdings Enter drücke, passiert nichts. Im Debugger habe ich dann gesehen, dass das Programm bei der Zeile psl.SetPath(PChar(AFilename)); hängen bleibt.

OS: Win 10 64-Bit
Laz: 1.6.4 Stable
FPC: 3.0.2 Stable

Gruß
Patrick

P.S.: Falls das Problem nicht zu lösen ist, kann ich notfalls auch per ShellExecute oder TProcess "mklink.exe" aufrufen, ist aber eine nicht ganz so schöne Variante.
Beim Laden der Signatur ist Systemfehler 0 (ERROR_SUCCESS) aufgetreten
compmgmt
 
Beiträge: 293
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro + Linux Manjaro 17.0.2 | Lazarus 1.6.4 | FPC 3.0.2 | 
CPU-Target: i386 + x86_64
Nach oben

Beitragvon compmgmt » 18. Aug 2017, 07:25 Re: IShellLink.SetPath() Problem

Kleiner Nachtrag: Das Merkwürdige ist, dass Anweisungen danach durchaus ausgeführt werden, allerdings reagiert das Programm nicht mehr richtig.
Beim Laden der Signatur ist Systemfehler 0 (ERROR_SUCCESS) aufgetreten
compmgmt
 
Beiträge: 293
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro + Linux Manjaro 17.0.2 | Lazarus 1.6.4 | FPC 3.0.2 | 
CPU-Target: i386 + x86_64
Nach oben

• Themenende •

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried