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

執行 外部指令

缺席
chiehjj
初階會員


發表:21
回覆:63
積分:26
註冊:2002-12-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-12 16:13:01 IP:59.126.xxx.xxx 訂閱
前輩們好
想在delphi以程式執行桌面的 ->桌面->開始->執行 內的指令,例如pcinf 或regdit.exe 等該如何?謝謝
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-12 17:10:10 IP:211.22.xxx.xxx 訂閱
你很懶哦, 
用 "外部指令" 搜尋,
就一堆文章了!!
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-12 23:44:08 IP:116.230.xxx.xxx 訂閱
最简单的方法:
WinExec('regedit.exe',1);//不过这个是为了兼容以前16位的操作系统的。

在现在的32位系统中,建议使用CreateProcess函数进行操作。
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
chiehjj
初階會員


發表:21
回覆:63
積分:26
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-16 00:51:32 IP:221.169.xxx.xxx 訂閱
 
感謝前輩回覆
我實際的問題是
TLIBIMP.EXE在DELPHI \BIN下目錄的一個執行檔 我把它COPY到C碟
comdlg32.ocx在WINDOWS SYSTEM32路徑下我把它COPY到C碟
在DOS 環境下輸入
tlibimp A comdlg32.ocx可在C碟下生成MSComDlg_TLB.PAS檔
用程式RUN起來總是不對,
winexec('C:\tlibimp A comdlg32.ocx',SW_NORMAL)
BAT,沒經驗想請前輩們提供意見 感謝
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-06-16 09:19:16 IP:211.22.xxx.xxx 訂閱

[code delphi]
function RUN_EXE(const exe_file, exe_params: String; const WaitTime:Integer=0): Boolean;
var
TryTimes: Integer;
ExitCode: cardinal;
ExecInfo: TShellExecuteInfo;
begin
ZeroMemory(@ExecInfo,SizeOf(ExecInfo));
with ExecInfo do begin
cbSize := SizeOf(ExecInfo);
fMask := SEE_MASK_NOCLOSEPROCESS;
lpVerb := 'open';
// lpDirectory:= PChar(exe_path);
lpParameters:= PChar(exe_params);
lpFile := PChar(exe_file);
// Wnd := Handle;
nShow := SW_HIDE;
end;
if WaitTime=0 then TryTimes:= 9999
else TryTimes:= WaitTime* 10;
ShellExecuteEx(@ExecInfo);
GetExitCodeProcess(ExecInfo.hProcess,ExitCode);
while (ExitCode=STILL_ACTIVE) and (TryTimes>0) do
begin
GetExitCodeProcess(ExecInfo.hProcess, ExitCode);
Sleep(100);
Application.ProcessMessages;
TryTimes:= TryTimes- 1;
end;
Result := (TryTimes>0);
end;

[/code]
chiehjj
初階會員


發表:21
回覆:63
積分:26
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-06-17 17:06:39 IP:59.126.xxx.xxx 訂閱
感謝幫忙,不過測試結果 RUN_EXE('c:\tlibimp.EXE','A C:\comdlg32.OCX',0);無法正確run,
run_exe內的exe_parama僅有一個參數,
對於2個參數RUN_EXE('c:\tlibimp.EXE','A', 'c:\comdlg32.OCX',0)無法compile
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-06-18 09:44:44 IP:211.22.xxx.xxx 訂閱
試試看, RUN_EXE('c:\tlibimp.EXE','A c:\comdlg32.OCX',0)
===================引 用 chiehjj 文 章===================
感謝幫忙,不過測試結果 RUN_EXE('c:\tlibimp.EXE','A C:\comdlg32.OCX',0);無法正確run,
run_exe內的exe_parama僅有一個參數,
對於2個參數RUN_EXE('c:\tlibimp.EXE','A', 'c:\comdlg32.OCX',0)無法compile

編輯記錄
max5020 重新編輯於 2009-06-18 09:45:27, 註解 無‧
chiehjj
初階會員


發表:21
回覆:63
積分:26
註冊:2002-12-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-06-18 12:04:06 IP:202.39.xxx.xxx 訂閱
感謝RUN_EXE('c:\tlibimp.EXE','A c:\comdlg32.OCX',0) 還是不行,
chiehjj
初階會員


發表:21
回覆:63
積分:26
註冊:2002-12-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-06-20 20:54:29 IP:61.58.xxx.xxx 訂閱
欉網路上搜了下式可以用了,感謝zhouying82及max兄的提示謝謝
procedure TForm1.Button2Click(Sender: TObject);
var
sei : TShellExecuteInfo;
begin
ZeroMemory(@sei, sizeof(sei));
with sei do
begin
cbSize := SizeOf(sei);
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Form1.Handle;
lpVerb := 'open';
lpFile := PChar('C:\tlibimp.exe');
lpParameters := PChar('c:\comdlg32.ocx');
lpDirectory := PChar('C:\');
nShow := SW_SHOWNORMAL;
end;
ShellExecuteEX(@sei);
end;
chiehjj
初階會員


發表:21
回覆:63
積分:26
註冊:2002-12-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-06-20 20:55:16 IP:61.58.xxx.xxx 訂閱
從網路上搜了下式可以用了,感謝zhouying82及max兄的提示謝謝
procedure TForm1.Button2Click(Sender: TObject);
var
sei : TShellExecuteInfo;
begin
ZeroMemory(@sei, sizeof(sei));
with sei do
begin
cbSize := SizeOf(sei);
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Form1.Handle;
lpVerb := 'open';
lpFile := PChar('C:\tlibimp.exe');
lpParameters := PChar('c:\comdlg32.ocx');
lpDirectory := PChar('C:\');
nShow := SW_SHOWNORMAL;
end;
ShellExecuteEX(@sei);
end;
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-06-22 14:20:45 IP:59.120.xxx.xxx 訂閱
呵呵,
早叫你多用搜尋的,
你有沒有發現,
我提供的CODE,
和你找到的是一樣的!!
系統時間:2024-05-08 20:41:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!