全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2165
推到 Plurk!
推到 Facebook!

ShellExecute 呼叫其它執行檔

答題得分者是:hagar
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-14 18:54:08 IP:61.218.xxx.xxx 未訂閱
用 ShellExecute 呼叫其它執行檔, 例(呼叫 xxx.exe, 其傳入參數 1 2 3: uses ShellApi; ShellExecute(0, PChar('open'), PChar('xxx.exe 1 2 3'), nil, nil, SW_SHOW); 請問我用以下的寫法都呼叫不到 xxx.exe,但是我把參數給拿掉就可以呼叫到程式,是為什麼呢???
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-14 18:59:05 IP:202.39.xxx.xxx 未訂閱
加上絕對路徑試試, 例:
begin
  ShellExecute(0, PChar('open'), PChar('C:\xxx.exe 1 2 3'), nil, nil, SW_SHOW);
end;
不然, 用如下的方式來檢查執行不成功的原因:
var i: integer;
begin
  i := ShellExecute(0, PChar('open'), PChar('C:\xxx.exe 1 2 3'), nil, nil, SW_SHOW);
  if i < 32 then
    ShowMessage(SysErrorMessage(GetLastError));
end;
-- 將進酒 杯莫停 與君歌一曲 請君為我傾耳聽 (hagar@gcn.net.tw)
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-14 19:04:10 IP:61.218.xxx.xxx 未訂閱
我有加絕對路徑,出現找不到檔案 但是真的把後面參數1 2 3 拿掉就呼叫的到,不知道怎麼了 還是被呼叫的那隻程式還要設定些什麼 我只有寫 procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin for i := 0 to ParamCount-1 do begin if ParamStr(i) = '1' then showmessage('參數為1') else if ParamStr(i) = '2' then showmessage('參數為 2') else if ParamStr(i) = '3' then showmessage('參數為 3'); end; end; 發表人 - cyl 於 2003/02/14 19:10:39
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-14 19:13:03 IP:202.39.xxx.xxx 未訂閱
改成如下試試:
begin
  ShellExecute(0, PChar('open'), PChar('C:\xxx.exe'), PChar('1 2 3'), nil, SW_SHOW);
end;
-- 將進酒 杯莫停 與君歌一曲 請君為我傾耳聽 (hagar@gcn.net.tw)
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-14 19:15:24 IP:202.39.xxx.xxx 未訂閱
另外, 以您的例子來說, ParamStr(0) 是指 'C:\xxx.exe' ParamStr(1) 是 '1' ParamStr(2) 是 '2' ParamStr(3) 是 '3' -- 將進酒 杯莫停 與君歌一曲 請君為我傾耳聽 (hagar@gcn.net.tw)
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-14 19:18:43 IP:61.218.xxx.xxx 未訂閱
這樣就可以了,謝謝,但是是為什麼呢?? 跟Delphi版本有關嗎?? 我是D6
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-14 19:23:13 IP:202.39.xxx.xxx 未訂閱
看 Shellexecute 的宣告(注意紅色的): HINSTANCE ShellExecute(     HWND hwnd,        // handle to parent window     LPCTSTR lpOperation,        // pointer to string that specifies operation to perform     LPCTSTR lpFile,        // pointer to filename or folder name string LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters LPCTSTR lpDirectory, // pointer to string that specifies default directory INT nShowCmd // whether file is shown when opened ); -- 將進酒 杯莫停 與君歌一曲 請君為我傾耳聽 (hagar@gcn.net.tw)
系統時間:2024-04-29 19:12:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!