关于多进程切换,热键发送的问题(50分)

  • 主题发起人 主题发起人 risingsoft
  • 开始时间 开始时间
R

risingsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序需要调用另一个EXE,此EXE在后台一直运行不关闭,此EXE注册了热键ALT+D,按此热键时此EXE窗口会在显示与隐藏之间进行切换。需要创建一个事件对象,在运行此EXE后等待此事件状态,如果为有效状态则将此EXE隐藏(发送热键),步骤:<br><br>1.//定义<br>VAR EventHandle:THandle=0;<br> &nbsp;EventName:string='demo.exe';<br><br>2.//创建事件对象<br>EventHandle := CreateEvent(nil,true,false,pchar(EventName));<br><br>//调用EXE<br>3.CreateProcess(...)<br><br>//等待事件状态,此EXE一直在后台运行不关闭,在此EXE里执行一个功能后会将时间状态设置为可用<br>3.WaitForSingleObject(...)<br><br>//检测到可用的时间状态时向此EXE发送热键隐藏掉它<br>4.sendKeys(...)<br><br>大致思路是这样,可是也许是我用错了方法或参数,现在的问题是:<br>1、WaitForSingleObject里的第2个参数,也就是等待时间间隔应该设置为多少?是infinit还是设置一个固定数值?如果设置为固定数值,那么外层就要有一个死循环等待了是吧?<br><br>2、当启动外部EXE后,我的主界面被挡在后面,无法向此EXE发送热键
 
可以发送WM_COPYDATA消息
 
3、如何获取我用CreateProcess创建的线程所拥有的进程句柄?
 
这个不难的,因为CREATEPROCESS是你自己写的,所以获取其句柄应该不难的
 
你仔细察看一下CREATEPROCESS这个函数,它需要用到一个结构<br>这个结构里面就保存了进程句柄和进程ID
 
我要的是EXE应用程序的句柄,这个是能得到,这个句柄和EXE的应用程序窗口句柄一样吗?
 
有进程句柄<br>有窗口句柄<br>没有程序句柄
 
后退
顶部