谢谢了!!!
解决方案 »
- 为什么我的登录窗口会出现两次
- 测试连接失败,因为初始化程序提供时发生错误。发生了一个Oracle错误,但无法从Oracle中检索错误信息”
- 开方我的MIS系统几个模块源码.简单的块就不贴了.
- 请大家帮忙看看这个问题,如何从一行文本中提取出有用的数据?
- SQLS中varchar转日期的问题,急!
- DBGrid的简单显示问题
- b1:=TBitmap.Create;//这里已经建立成功的了//为什么已经建立了B1但竟然不能让我用
- 请问如何编程测试对方的操作系统是2000还是98?
- 《DELPHI5 开发人员指南》!
- Kylix Enterprise 下載地址。
- 简单adoquery问题,送分,反正我分多。
- 急寻:谁有Delphi6 Sp2的升级补丁的下载地址。
procedure TForm1.but_GetShotCutClick(Sender: TObject);
var
sLink: IShellLink;
PersFile: IPersistFile;
Path2Icon, Path2Link: String;
FndData: TWin32FindData;
FBuf : array[0..1024] of Char;
IconNum: Integer;
const
IID_IPersistFile: TGUID = (D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
begin
Path2Link := 'C:\Stuff\Web.lnk';
CoInitialize(nil);
try
if CoCreateInstance(CLSID_ShellLink, nil,
CLSCTX_INPROC_SERVER, IID_IShellLinkA, sLink) = S_OK then
begin
if sLink.QueryInterface(IID_IPersistFile,PersFile) = S_OK then
begin
if PersFile.Load(StringToOLEStr(Path2Link),0) = S_OK then
begin
if sLink.GetPath(@FBuf,1024,FndData,SLGP_UNCPRIORITY) <> NOERROR then
begin
ShowMessage('Could not get Shortcut path');
Exit;
end;;
Path2Link := FBuf;
Label2.Caption := Path2Link;
if (sLink.GetIconLocation(@FBuf, 1024, IconNum) <> NOERROR) or (FBuf[0] = #0) then
begin
Path2Icon := Path2Link;
IconNum := 0;
end else
Path2Icon := FBuf;
Label3.Caption := Path2Icon+' IconNum '+IntToStr(IconNum);
end else
ShowMessage('Path to the Shortcut is incorrect, No Shortcut there');
end;
end;
finally
CoUninitialize;
end;
end;
function GetShortcutTarget(ShortcutFilename: string): string;
var
Psl: IShellLink;
Ppf: IPersistFile;
WideName: array[0..MAX_PATH] of WideChar;
pResult: array[0..MAX_PATH - 1] of Char;
Data: TWin32FindData;
k:word;
i:integer;
const IID_IPersistFile: TGUID = (
D1: $0000010B; D2: $0000; D3: $0000; D4: ($C0, $00, $00, $00, $00, $00, $00, $46));
begin CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl); psl.QueryInterface(IID_IPersistFile, ppf); MultiByteToWideChar(CP_ACP, 0, pChar(ShortcutFilename), -1, WideName, Max_Path); ppf.Load(WideName, STGM_READ); psl.Resolve(0, SLR_ANY_MATCH); psl.GetPath(@pResult, MAX_PATH, Data, SLGP_UNCPRIORITY);//对应文件
Result := StrPas(@pResult);
psl.GetWorkingDirectory(@pResult, MAX_PATH);
showmessage('路径'+pResult);
psl.GetHotkey(k);
showmessage('hotkey:'+Floattostr(k));
psl.GetArguments(@pResult, MAX_PATH);
showmessage('参数:'+pResult);
psl.GetShowCmd(i);
showmessage('State:'+Floattostr(i));
psl.GetIconLocation(@pResult, MAX_PATH,i);
showmessage('icon:'+pResult);
end;
PersFile: IPersistFile;
如何声明呢??/