[轉貼]delphi中如何由 *.lnk档取得其 exe 档案的指向

有關Delphi 的語法, 程式, 等
回覆文章
頭像
tim
文章: 1379
註冊時間: 2008年 11月 26日, 00:49

[轉貼]delphi中如何由 *.lnk档取得其 exe 档案的指向

文章 tim »

轉貼自: http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=58436

由 .lnk 檔找出所指向的執行目標程式!!

代碼: 選擇全部

     
    function ResolveLink(const ALinkfile: String): String; 
    var 
      link: IShellLink; 
      storage: IPersistFile; 
      filedata: TWin32FindData; 
      buf: Array[0..MAX_PATH] of Char; 
      widepath: WideString; 
    begin 
      OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, link)); 
      OleCheck(link.QueryInterface(IPersistFile, storage)); 
      widepath := ALinkFile; 
      Result := 'unable to resolve link'; 
      If Succeeded(storage.Load(@widepath[1], STGM_READ)) Then 
        If Succeeded(link.Resolve(GetActiveWindow, SLR_NOUPDATE)) Then 
          If Succeeded(link.GetPath(buf, sizeof(buf), filedata, SLGP_UNCPRIORITY)) Then 
            Result := buf; 
      storage := nil; 
      link:= nil; 
    end; 
     
    // 用法: 
    procedure Tform1.Button1Click(Sender: TObject); 
    begin 
      ShowMessage(ResolveLink('C:桌面delphi32.lnk')); 
    end; 
多多留言, 整理文章, 把經驗累積下來.....
回覆文章