如何在Activeform中使用shellexecute的相對路徑 |
答題得分者是:HikaruGo
|
yakehsu
一般會員 發表:8 回覆:10 積分:3 註冊:2006-11-13 發送簡訊給我 |
我用Shellexecute 在一般的Form下使用相對路徑沒有問題, 但在activeform下就不行,
activeform deploy 在d:\dump下: ShellExecute(Handle, 'open', 'dump.txt', nil, nil, SW_SHOWNORMAL); --------->不行 ShellExecute(Handle, 'open', './dump.txt', nil, nil, SW_SHOWNORMAL); -------->不行 ShellExecute(Handle, 'open', 'd:\dump\dump.txt', nil, nil, SW_SHOWNORMAL); ------>可以 請問大大,相對路徑要如何用? |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
提供一個想法,但是我沒有實際驗證過,不確定可行!所以請你試試
利用 Win32 API GetCurrentDirectory 和 SetCurrentDirectory 設定當時系統的工作路徑,例如: [code delphi] GetCurrentDirectory() // 先取得當時系統的工作路徑(先暫存,最後要再設回來) SetCurrentDirectory() // 設定你想要的工作路徑(例如 D:\dump) ShellExecute() SetCurrentDirectory() // 設回原本的工作路徑 [/code] 有關 Win32 API GetCurrentDirectory 和 SetCurrentDirectory 的詳細使用方法,請參考 MSDN 的說明 http://msdn2.microsoft.com/en-us/library/aa364934(VS.85).aspx http://msdn2.microsoft.com/en-us/library/aa365530.aspx
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yakehsu
一般會員 發表:8 回覆:10 積分:3 註冊:2006-11-13 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
|
yakehsu
一般會員 發表:8 回覆:10 積分:3 註冊:2006-11-13 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
|
dky
一般會員 發表:12 回覆:30 積分:13 註冊:2004-06-24 發送簡訊給我 |
|
HikaruGo
中階會員 發表:22 回覆:69 積分:88 註冊:2007-12-09 發送簡訊給我 |
|
dky
一般會員 發表:12 回覆:30 積分:13 註冊:2004-06-24 發送簡訊給我 |
|
HikaruGo
中階會員 發表:22 回覆:69 積分:88 註冊:2007-12-09 發送簡訊給我 |
procedure TrbAXXX.ActiveFormCreate(Sender: TObject);
var Buffer: array[0..261] of Char; r:String; begin SetString(r, Buffer, Windows.GetModuleFileName(HInstance, Buffer, SizeOf(Buffer))); showmessage(r); end; 不知你Test方式是如何,與IE如何調用, 我使用IE Call OCX 可以得到正確的FileName Path 不過IE 開一個 C:\Sample.html 非 http:// Mode 最近我同事也問我一樣的問題,真巧 |
yakehsu
一般會員 發表:8 回覆:10 積分:3 註冊:2006-11-13 發送簡訊給我 |
謝謝樓上大大,可是我的電腦很詭異。
1. 按照大大的方法(只是改放在Button的Click中)後, 2. deploy這Activeform時,路徑為 d:\dump ./ d:\dump 3. 到目錄d:\dump下用IE執行Activeformproj1.htm 4. 按htm中的 Button後,message出現 c:\windows\downloaded program files\active~1.ocx 檢查結果,message顯示的目錄裡根本沒那檔案(.ocx是放在d:\dump),裡面倒是含一些可能過去下載的ActiveX檔案。更扯的是,把downloaded program files 目錄砍了,再執行IE後,該目錄又重新被造出來。 不知道是registry或ini那邊有被改了。 |
dky
一般會員 發表:12 回覆:30 積分:13 註冊:2004-06-24 發送簡訊給我 |
哈, 可以了
感謝大大的幫忙 真想給你分數, 可惜我不是原發問者 請原發問的大大給個燈吧 ===================引 用 HikaruGo 文 章=================== procedure TrbAXXX.ActiveFormCreate(Sender: TObject); var Buffer: array[0..261] of Char; r:String; begin SetString(r, Buffer, Windows.GetModuleFileName(HInstance, Buffer, SizeOf(Buffer))); showmessage(r); end; 不知你Test方式是如何,與IE如何調用, 我使用IE Call OCX 可以得到正確的FileName Path 不過IE 開一個 C:\Sample.html 非 http:// Mode 最近我同事也問我一樣的問題,真巧 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |