通过程序文件名得到窗口handle? (200分)

  • 主题发起人 主题发起人 Yhhe
  • 开始时间 开始时间
Y

Yhhe

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能通过程序文件名得到窗口handle?<br>该程序由自己的程序用CreateProcess启动,请大家知无不言,谢先<br>请写具体程序
 
用那个枚举窗口的函数行吗?
 
只能关注了
 
先根据进程文件名找到进程ID<br>然后枚举窗口,找和这个ID相同的窗口
 
能写出来吗?
 
写出 简单流程 和 需要的函数也行:)
 
参考<br>http://msdn.microsoft.com/msdnmag/issues/02/07/CQA/default.aspx
 
看不懂。。。。。<br>汗~~~
 
没有人发言了吗?请大家知无不言!
 
讲讲你想用这个的想法。<br>可以用GetClass函数,这是Delphi自带的,可以找到窗体的Handle,如果改窗体没有create<br>也可以找到,只是加一些东西了<br>先讲讲你的想法,我看看
 
我要写一个程序来调用另外一个程序给一个设备发指令,指令我知道,程序文件名我也知道,<br>现在我要在程序中打开该程序(通过程序文件名[DOS程序]),然后发指令到打开的DOS程序,<br>指令我可以通过 keybd_event 发给DOS程序,但是发指令之前要将DOS程序窗口置前。
 
我以为你会在同一个程序用要调用,<br>你的问题可能要使用到api函数了:看看这个是否可以<br>GetAddressByName后返回一个handle,<br>GetDC(Handle),可以查MSDN帮助文档看一下<br>
 
如果要控制DOS的输入,却也不用这么麻烦,<br>你使用CreateProcess创建进程,可以自己控制一个控制台程序的输入输出<br><br>下面是一个捕捉输出的例子<br>http://www.torry.net/samples/samples/soft/console.zip<br>自己模仿一下,就可以做出控制输入的程序<br>要执行的程序不用显示,在后台运行,并且还可以获得程序的输出
 
下面这个更全面些<br>Redirect Console v.0.0<br>By Sonic. <br>Sample program to redirect output *AND INPUT* of a console program. &nbsp;<br><br>http://www.torry.net/samples/samples/soft/redirectconsole.zip
 
LiChaoHui,例子我已经看了,但是某些命令好像无法执行,如“Cls"<br>另外,我的问题是“通过程序文件名得到窗口handle?”,我并不一定是要控制DOS程序,还有一个Windows程序
 
The main functions to get the list of processes is<br><br>-Process32First and<br>-Process32Next<br><br>It retrieves information about the first and next process encountered in a system snapshot.<br><br>CreateToolHelp32SnapShot must be called before. It takes a snapshot of the processes and the heaps, modules, and threads used by the processes.<br><br><br>Finally the code looks somehow like this:<br><br>var<br>&nbsp; &nbsp;Proc &nbsp; : TProcessEntry32;<br>&nbsp; &nbsp;Snap &nbsp; : THandle;<br>...<br><br>&nbsp; &nbsp;Snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);<br>&nbsp; &nbsp;Proc.dwSize := SizeOf(TProcessEntry32);<br>&nbsp; &nbsp;Process32First(Snap,Proc);<br>&nbsp; &nbsp;repeat<br>&nbsp; &nbsp; &nbsp;// add into list...<br>&nbsp; &nbsp;until (not Process32Next(Snap,Proc));<br><br><br><br><br>TerminateProces is used to kill a task.<br><br>例子:<br>http://sunsite.informatik.rwth-aachen.de/delphi/ftp/tools/getprocs.zip%20%20/n/n文件并未依%20Teleport%20Pro%20取回,因为%20它的域或路径超过启始网址中设置的范围。%20%20/n/n你要从服务器上打开它吗?'))window.location='http://sunsite.informatik.rwth-aachen.de/delphi/ftp/tools/getprocs.zip
 
yanyandt2,就是无法得到窗口handle,其他的ID 都得到了
 
Yhhe,我也正在实验,正在这里问<br>呵呵
 
高人快帮忙吧
 

Similar threads

回复
0
查看
742
不得闲
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
888
SUNSTONE的Delphi笔记
S
后退
顶部