在本程序如何控制另一个程序的打开与关闭。(50分)

  • 主题发起人 主题发起人 H0000K
  • 开始时间 开始时间
H

H0000K

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。请解答~谢谢
 
<br>执行:shellexcute(uses shellapi),winexec<br>关闭:PostMessage(程序Handle,WM_CLOSE,0,0)<br>
 
打开用WinExec(),关闭可以用SendMessage
 
如果可以取得目标程序的句柄,可以发送消息控件它打开关闭
 
使用API函数“ExecuteProcess”执行一个应用程序,使用“TerminateProcess”终止一个应用程序。<br>var<br>&nbsp; ThisHandle: THandle;<br>&nbsp; ThisStartupInfo: TStartupInfo;<br>&nbsp; ThisProcessInfo: TProcessInformation;<br>procedure TForm1.ExecuteApp(ThisPath: String);<br>begin<br>&nbsp; FillChar(ThisStartupInfo,SizeOf(ThisStartupInfo),0);<br>//清除ThisStartupInfo中的数据<br>&nbsp; ThisStartupInof.cb:= SizeOf(ThisStartupInfo);<br>&nbsp; CreateProcess(PChar(ThisPath),nil,nil,nil,False,DETACHED_PROCESS,nil,nil,ThisStartupInfo,ThisProcessInfo);<br>&nbsp; ThisHandle := ThisProcessInfo.hProcess;<br>&nbsp; //把执行的程序句柄赋值给ThisHandle,它会终止程序时用到<br><br>procedure TForm1.CloseApp(ThisHandle: THandle);<br>begin<br>&nbsp; TerminateProcess(ThisHandle,0);<br>end;<br>end;
 
谢谢!<br>再问:如何判断另一个程序是否已经打开?
 
<br>FindWindow<br><br>
 
这种打开外部程序的方式跟点击打开有什么区别???
 
var<br>&nbsp; ThisHandle: THandle;<br>&nbsp; ThisStartupInfo: TStartupInfo;<br>&nbsp; ThisProcessInfo: TProcessInformation;<br>procedure TForm1.ExecuteApp(ThisPath: String);<br>begin<br>&nbsp;FillChar(ThisStartupInfo,SizeOf(ThisStartupInfo),0);<br>//清除ThisStartupInfo中的数据<br>&nbsp;ThisStartupInfo.cb:= SizeOf(ThisStartupInfo);<br>&nbsp;CreateProcess(PChar(ThisPath),nil,nil,nil,False,DETACHED_PROCESS,nil,nil,ThisStartupInfo,ThisProcessInfo);<br>&nbsp;//winexec(PChar('c:/peak/peak.exe'), SW_SHOWNORMAL);<br>&nbsp;ThisHandle := ThisProcessInfo.hProcess;<br>&nbsp;//把执行的程序句柄赋值给ThisHandle,它会终止程序时用到<br>end;<br><br>procedure TForm1.CloseApp(ThisHandle: THandle);<br>begin<br>&nbsp;TerminateProcess(ThisHandle,0);<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp;m_hWnd :HWND;<br>begin<br>&nbsp; m_hWnd := FindWindow(nil,'peak');<br>&nbsp; if m_hWnd = 0 then ExecuteApp('C:/PEAK/Peak.exe');<br>end;<br><br>procedure TForm1.Button2Click(Sender: TObject);<br>begin<br>&nbsp; CloseApp(ThisHandle);<br>end;<br>=======================================<br>这样写后程序一个都不能打开~???请高手检查
 
帮帮忙沙~~~~<br>另问:~~<br>这种打开外部程序的方式跟点击打开有什么区别??? &nbsp;
 
H0000K,打开外部程序你就用shellexcute(uses shellapi)或winexec吧<br>这种打开外部程序的方式跟点击打开没有区别<br>判断一个程序是否存在,用FindWindow也可以,找程序窗体类名<br>
 
已经成功!!谢谢各位~<br>用的是shellexcute。FindWindow
 
后退
顶部