線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1797
推到 Plurk!
推到 Facebook!

請問各位大大如何使用DELPHI來產生 .lnk 的捷徑檔呢?

尚未結案
saam
初階會員


發表:61
回覆:75
積分:27
註冊:2003-03-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-26 16:28:04 IP:211.75.xxx.xxx 未訂閱
請問各位大大如何使用DELPHI來產生 .lnk 的捷徑檔呢? 由於我不會Borland C , 所看不懂先前己有的文章, 請大大不吝指導~~~ ^^
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-26 16:57:48 IP:147.8.xxx.xxx 未訂閱
This one? http://delphi.ktop.com.tw/topic.php?topic_id=22505
const
    IID_IShellLink: TCLSID  = (D1:$000214EE; D2:$0; D3:$0; D4:($C0,$0,$0,$0,$0,$0,$0,$46));
    IID_IPersistFile: TGUID = (D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));    function CreateLink(const lpszPathObj, lpszPathLink, lpszDesc: PChar): HRESULT;
var
    hres: HRESULT;
    psl: IShellLink;
    ppf: IPersistFile;
    wsz: array[0..MAX_PATH] of WideChar;
begin
    hres := CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER,
        IID_IShellLink, psl);
    if (SUCCEEDED(hres)) then begin
        psl.SetPath(lpszPathObj);
        psl.SetDescription(lpszDesc);
        hres := psl.QueryInterface(IID_IPersistFile,ppf);
        if (SUCCEEDED(hres)) then begin
            MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH);
            hres := ppf.Save(wsz, TRUE);
            ppf := nil;
        end;
        psl := nil;
    end;
    Result := hres;
end;
saam
初階會員


發表:61
回覆:75
積分:27
註冊:2003-03-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-26 17:33:48 IP:211.75.xxx.xxx 未訂閱
謝謝william大大指導: 可是我把您的程式碼放上去RUN, 卻跑出一堆未定義的變數,請問我要 加什麼東西上去嗎??
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-26 17:48:46 IP:147.8.xxx.xxx 未訂閱
Uses ShlObj and ActiveX. Remember to CoInitialize if needed.
saam
初階會員


發表:61
回覆:75
積分:27
註冊:2003-03-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-30 09:25:55 IP:211.75.xxx.xxx 未訂閱
謝謝 william 大大: 未定義的變數的問題己經解決了, 但是程式執行到 hres := CoCreateInstance(CLSID_ShellLink, nil,CLSCTX_INPROC_SERVER,IID_IShellLink, psl); 這行後 SUCCEEDED(hres) 都是失敗, 進不到if裏面的程式碼~ 請問大大要如何解決呢? 另外使用function方式是不是 CreateLink ('要建立捷徑的檔案路徑 檔名','建立捷徑的路徑','捷徑名稱 .lnk') 呢?? 謝謝 william 大大
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-30 09:37:29 IP:147.8.xxx.xxx 未訂閱
Take a look at the function CoInitialize and CoUninitialize.
saam
初階會員


發表:61
回覆:75
積分:27
註冊:2003-03-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-30 10:46:00 IP:211.75.xxx.xxx 未訂閱
謝謝 william大大 我看了一位先進用到這個方式 hres:=S_FALSE; hres:=CoInitialize(0); 但雖然進入if 內 ,但執行到 psl.SetPath(lpszPathObj);時會EAccessViolation 的例外錯誤,請問要怎麼做才對呢, 請大大不吝指導~~~謝謝~~~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-30 10:54:32 IP:147.8.xxx.xxx 未訂閱
Are you using CoInitialize at the very beginning? e.g. CoInitialize(nil); hres := CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLink, psl); ....
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-30 10:57:36 IP:147.8.xxx.xxx 未訂閱
FYI, if you are not building dll, uses ComObj there are initialization and finalization sections calling CoInitialize and CoUninitialize for you.
saam
初階會員


發表:61
回覆:75
積分:27
註冊:2003-03-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-30 14:14:23 IP:211.75.xxx.xxx 未訂閱
謝謝william大大不厭其煩的敎導~~~ 加上ComObj後就可以了~~ 因為我是學藝不精,讓您熱心的回覆~~~ ^^ ~
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-09-06 12:21:14 IP:210.69.xxx.xxx 未訂閱
引言: 另外使用function方式是不是 CreateLink ('要建立捷徑的檔案路徑 檔名','建立捷徑的路徑','捷徑名稱 .lnk') 呢??
可否舉例說明, 小弟用下面測試, 沒有在 C:\ 中產生 A 捷徑, 該怎樣用 ? THANKS ! CreateLink ('C:\AUTOEXEC.BAT', 'C:\', 'A.LNK'); CreateLink ('C:\AUTOEXEC.BAT', 'C:\AUTOEXEC.BAT', 'A.LNK'); CreateLink ('C:\\BOOT.INI', 'C:\\BOOT.INI', 'A.LNK'); 發表人 - pcboy2 於 2004/09/06 12:30:04
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-09-16 19:42:47 IP:61.222.xxx.xxx 未訂閱
暈............. 應該是 CreateLink ('C:\AUTOEXEC.BAT', 'C:\A.LNK', '訊息');
系統時間:2024-05-08 10:03:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!