请教:程序最小化后,如何取得其显示内容? ( 积分: 100 )

  • 主题发起人 主题发起人 onlyme_nc
  • 开始时间 开始时间
O

onlyme_nc

Unregistered / Unconfirmed
GUEST, unregistred user!
&nbsp;&nbsp;&nbsp;&nbsp;[?]我想对多少窗口进行控制,而当前活动窗口只能有一个。<br>&nbsp;&nbsp;&nbsp;&nbsp;如何取得非活动窗口的显示内容?<br>&nbsp;&nbsp;&nbsp;&nbsp;是否可以得到每个程序(无论是否最小化)的屏幕显示内容?
 
难道本论坛没有高手吗?
 
下列方法会自动显示你的当前窗体,然后你要做什么你自己可以下手了。<br>procedure&nbsp;OpenForm(FormClass:&nbsp;TFormClass;&nbsp;Form:&nbsp;TForm);<br>begin<br>&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;Screen.FormCount&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Screen.Forms.ClassType&nbsp;=&nbsp;FormClass&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form&nbsp;:=&nbsp;Screen.Forms;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Form.WindowState&nbsp;&lt;&gt;&nbsp;wsMaximized&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(Form.handle,&nbsp;SW_SHOWMAXIMIZED);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(not&nbsp;Form.Visible)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.Visible&nbsp;:=&nbsp;True;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.BringToFront;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Form.Setfocus;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>end;
 
我的意思是不让已经最小化的窗口弹到前台,但又能控制它。<br>比如读取该窗口应该显示的内容,向该窗口发出按键信息等等。<br>不管怎样,还是要谢谢你的回复!
 
不是没有高手,具体情况具体对待;<br>Screen.FormCount去遍历试试吧;<br>或者用FindWindow(nil,&nbsp;ZName);&nbsp;//&nbsp;查找窗口&nbsp;试试
 
先谢谢上楼那位朋友。<br>要找到窗口没有问题,关键是如果该窗口最小化了,如何还能得到该窗口显示的内容!
 
应该没可能得到.&nbsp;&nbsp;因为看不见的窗口根本没有必要绘制出来.&nbsp;&nbsp;<br><br>MS的编程员不是傻的,&nbsp;不会连这点也不会想到.
 
但我知道有一个外挂,就是能获得最小化窗口后游戏的显示内容,并做了相应的处理。
 
你怎么知那个外挂获得显示内容是通过捉图&nbsp;而不是通信封包?&nbsp;先搞清这个问题。
 
楼主发的标题不明确<br>显示内容,一开始我以为你想获取窗口DC<br>后来看到你指一个外挂,才明白你想获取的是内存信息<br><br>往内存方面搜索吧
 
比较复杂的技术问题,需要你自己去跟踪调试,如果不知道跟踪调试哪里,说明你自己的基础还太薄弱。<br><br>游戏截图多半是DirectX操作,直接截图恐怕即便是没有最小化也截不过来。
 
当前活动窗口的内容可以抓图得到,但后面非活动的窗口你只能根据你需要的数据在内存里找了[:)]
 
建议lz先去学习下how&nbsp;to&nbsp;ask&nbsp;question
 
后退
顶部