其中WinExec按鈕用于以WinExec函數(shù)來(lái)調(diào)用指定的Windows程序。ShellExecute按鈕用于以ShellExecute函數(shù)來(lái)調(diào)用指定的Windows程序。CreateProcess按鈕和TerminateProcess按鈕用于實(shí)現(xiàn)對(duì)被調(diào)用程序更全面的操作,前者用于調(diào)用指定的Windows程序,而后者則用于終止被調(diào)用的Windows程序。
以WinExec函數(shù)的方式來(lái)調(diào)用指定的Windows程序的響應(yīng)代碼如下:
procedure TForm1.btnWinExecClick(Sender: TObject);
begin
WinExec(’Notepad.exe’,SW_MAXIMIZE);
end;
其中WinExec函數(shù)的第1個(gè)參數(shù)表示了被調(diào)用程序的路徑和名稱,第2個(gè)參數(shù)表示了程序的顯示方式。
以ShellExecute函數(shù)的方式來(lái)調(diào)用指定的Windows程序的響應(yīng)代碼如下:
procedure TForm1.btnShellExecuteClick(Sender: TObject);
begin
ShellExecute(Application.Handle,’Open’,’NotePad.exe’,PChar(’C:\AutoExec.bat’),nil,SW_SHOWNORMAL);
end;
其中ShellExecute用于打開(kāi)與指定文件關(guān)聯(lián)在一起的程序文件。第1個(gè)參數(shù)用于指定一個(gè)窗口的句柄;第2個(gè)參數(shù)指定了程序運(yùn)行的類別,如’Open’或’Print’;第3個(gè)參數(shù)指定了想用關(guān)聯(lián)程序打印或打開(kāi)的一個(gè)程序名或文件名;如果第3個(gè)參數(shù)中指定了一個(gè)可執(zhí)行文件,那么第4個(gè)參數(shù)就是傳遞給執(zhí)行程序的參數(shù);第5個(gè)參數(shù)指定了可執(zhí)行程序的完整路徑。最后一個(gè)參數(shù)用于設(shè)定程序運(yùn)行方式。
下面來(lái)介紹利用CreateProcess函數(shù)和TerminateProcess函數(shù)如何實(shí)現(xiàn)對(duì)被調(diào)用程序更全面的操作。
首先定義3個(gè)全局變量:
PI:TProcessInformation;
SI:TStartUpInfo;
MyHandle:Thandle;
利用CreateProcess函數(shù)調(diào)用指定程序的響應(yīng)代碼如下:
procedure TForm1.btnCreateProcessOpenClick(Sender: TObject);
begin
FillChar(SI,sizeof(SI),#0);
with SI do
begin
cb:=sizeof(SI);
dwFlags:=StartF_UsesTDHandles or STARTF_USESHOWWINDOW;
lptitle:=nil;
wShowWindow:=SW_Show;
end;
CreateProcess(PChar(’C:\WINNT\Notepad.exe’),
nil,nil,nil,true,DETACHED_PROCESS,nil,nil,SI,PI);
end;
調(diào)用CreateProcess函數(shù)激活C:\WINNT\Notepad.exe程序后,把它的進(jìn)程信息存儲(chǔ)在變量PI中,然后通過(guò)下面的語(yǔ)句來(lái)關(guān)閉本實(shí)例打開(kāi)的C:\WINNT\Notepad.exe程序:
procedure TForm1.btnCreateProcessCloseClick(Sender: TObject);
begin
MyHandle:=OpenProcess(PROCESS_ALL_Access, FALSE,PI.dwProcessId);
TerminateProcess(MyHandle,0);
end;
以WinExec函數(shù)的方式來(lái)調(diào)用指定的Windows程序的響應(yīng)代碼如下:
procedure TForm1.btnWinExecClick(Sender: TObject);
begin
WinExec(’Notepad.exe’,SW_MAXIMIZE);
end;
其中WinExec函數(shù)的第1個(gè)參數(shù)表示了被調(diào)用程序的路徑和名稱,第2個(gè)參數(shù)表示了程序的顯示方式。
以ShellExecute函數(shù)的方式來(lái)調(diào)用指定的Windows程序的響應(yīng)代碼如下:
procedure TForm1.btnShellExecuteClick(Sender: TObject);
begin
ShellExecute(Application.Handle,’Open’,’NotePad.exe’,PChar(’C:\AutoExec.bat’),nil,SW_SHOWNORMAL);
end;
其中ShellExecute用于打開(kāi)與指定文件關(guān)聯(lián)在一起的程序文件。第1個(gè)參數(shù)用于指定一個(gè)窗口的句柄;第2個(gè)參數(shù)指定了程序運(yùn)行的類別,如’Open’或’Print’;第3個(gè)參數(shù)指定了想用關(guān)聯(lián)程序打印或打開(kāi)的一個(gè)程序名或文件名;如果第3個(gè)參數(shù)中指定了一個(gè)可執(zhí)行文件,那么第4個(gè)參數(shù)就是傳遞給執(zhí)行程序的參數(shù);第5個(gè)參數(shù)指定了可執(zhí)行程序的完整路徑。最后一個(gè)參數(shù)用于設(shè)定程序運(yùn)行方式。
下面來(lái)介紹利用CreateProcess函數(shù)和TerminateProcess函數(shù)如何實(shí)現(xiàn)對(duì)被調(diào)用程序更全面的操作。
首先定義3個(gè)全局變量:
PI:TProcessInformation;
SI:TStartUpInfo;
MyHandle:Thandle;
利用CreateProcess函數(shù)調(diào)用指定程序的響應(yīng)代碼如下:
procedure TForm1.btnCreateProcessOpenClick(Sender: TObject);
begin
FillChar(SI,sizeof(SI),#0);
with SI do
begin
cb:=sizeof(SI);
dwFlags:=StartF_UsesTDHandles or STARTF_USESHOWWINDOW;
lptitle:=nil;
wShowWindow:=SW_Show;
end;
CreateProcess(PChar(’C:\WINNT\Notepad.exe’),
nil,nil,nil,true,DETACHED_PROCESS,nil,nil,SI,PI);
end;
調(diào)用CreateProcess函數(shù)激活C:\WINNT\Notepad.exe程序后,把它的進(jìn)程信息存儲(chǔ)在變量PI中,然后通過(guò)下面的語(yǔ)句來(lái)關(guān)閉本實(shí)例打開(kāi)的C:\WINNT\Notepad.exe程序:
procedure TForm1.btnCreateProcessCloseClick(Sender: TObject);
begin
MyHandle:=OpenProcess(PROCESS_ALL_Access, FALSE,PI.dwProcessId);
TerminateProcess(MyHandle,0);
end;

