尝试在控制台应用程序中使用 JclShell 创建 ShellLink 快捷方式失败
Trying to create a ShellLink Shortcut with JclShell in a console app fails
我尝试在 Delphi Rio 10.3.3 的简单控制台应用程序中使用 JclShell
创建 ShellLink 快捷方式:
program ShellLinkShortcutHashTest;
{$APPTYPE CONSOLE}
{$R *.res}
uses
JclShell,
System.SysUtils;
const
ShortcutFile = 'R:\myshortcut.lnk';
ShortcutTarget = 'C:\Windows\System32\notepad.exe';
function SaveShortcutShellLink(const AFile: string): string;
var
SL: JclShell.TShellLink;
HR: Integer;
begin
Result := 'error';
SL.Target := ShortcutTarget;
SL.Description := 'My description';
HR := JclShell.ShellLinkCreate(SL, AFile);
Result := IntToStr(HR);
end;
begin
try
Writeln(SaveShortcutShellLink(ShortcutFile));
Readln;
except
on E: Exception do
begin
Writeln(E.ClassName, ': ', E.Message);
Readln;
end;
end;
end.
但是,没有创建 ShellLink 快捷方式,结果如下:
-2147221008
我试过不同的路径常量(没有写保护),但总是失败。
我的 OS: Windows 7 x64 SP1
在上述目录的 Windows 文件资源管理器中手动创建 ShellLink 快捷方式没有问题。
JclShell
有什么问题吗?
Winapi.ActiveX.OleInitialize(nil);
try
Writeln(SaveShortcutShellLink(ShortcutFile));
finally
Winapi.ActiveX.OleUninitialize;
end;
Readln;
我尝试在 Delphi Rio 10.3.3 的简单控制台应用程序中使用 JclShell
创建 ShellLink 快捷方式:
program ShellLinkShortcutHashTest;
{$APPTYPE CONSOLE}
{$R *.res}
uses
JclShell,
System.SysUtils;
const
ShortcutFile = 'R:\myshortcut.lnk';
ShortcutTarget = 'C:\Windows\System32\notepad.exe';
function SaveShortcutShellLink(const AFile: string): string;
var
SL: JclShell.TShellLink;
HR: Integer;
begin
Result := 'error';
SL.Target := ShortcutTarget;
SL.Description := 'My description';
HR := JclShell.ShellLinkCreate(SL, AFile);
Result := IntToStr(HR);
end;
begin
try
Writeln(SaveShortcutShellLink(ShortcutFile));
Readln;
except
on E: Exception do
begin
Writeln(E.ClassName, ': ', E.Message);
Readln;
end;
end;
end.
但是,没有创建 ShellLink 快捷方式,结果如下:
-2147221008
我试过不同的路径常量(没有写保护),但总是失败。
我的 OS: Windows 7 x64 SP1
在上述目录的 Windows 文件资源管理器中手动创建 ShellLink 快捷方式没有问题。
JclShell
有什么问题吗?
Winapi.ActiveX.OleInitialize(nil);
try
Writeln(SaveShortcutShellLink(ShortcutFile));
finally
Winapi.ActiveX.OleUninitialize;
end;
Readln;