如何一大堆标题为零字符串的窗体中快速选出某一个特定窗体?(50分)

  • 主题发起人 主题发起人 gxlxhlf
  • 开始时间 开始时间
G

gxlxhlf

Unregistered / Unconfirmed
GUEST, unregistred user!
我想取出别人开发的应用程序某个窗体上的文本框的值,那个窗体的标题是空的,所以我认为只要判断哪个窗体的标题是零字符串的,那么就是我要找的窗体。但我用下面的方法来取出所有窗体标题,发现有大把多都是零字符串的,我想问的是有什么办法可以快速找到到底哪个是我要找的窗体。先谢了,不会的也请帮顶一下,OK?得到答案后马上结贴给分,绝不食言!<br>function EnumWndProc(AWnd: HWND; AlParam: LPARAM):Boolean;stdcall;<br>var<br>&nbsp; WndCaption: array[0..254] of Char;<br>begin<br>&nbsp; GetWindowText(AWnd, @WndCaption, 254);<br>&nbsp; if WndCaption[0]&lt;&gt;chr(0) then<br>&nbsp; &nbsp; Form1.ListBox1.Items.Add(Format('%d &nbsp;= &nbsp;%s',[AWnd,StrPas(WndCaption)]));<br>&nbsp; Result := True;<br>end;<br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; EnumWindows(@EnumWndProc,0);<br>end;
 
FindWindow通过类名找不行吗?<br>枚举窗口可以用GetWindowThreadProcessId取得其所属进程
 
如果没有其他条件的话就只能一个一个自己显示出窗体来判断了
 
To:weiwei81123<br>谢谢你的回答^_^<br>用FindWindow通过类名的方法来取,难道各个程序每次运行的时候它的类名都不变吗?还有如果有多个窗体它的类名一样,那还是无法快速检测出我所要的窗体啊?<br><br>“枚举窗口可以用GetWindowThreadProcessId取得其所属进程”是不是要先得到那个应用程序的进程,然后再判断标题为零字符串的窗体的所属进程是否与刚才取得的应用程序进程相同,如果相同就是要找的窗体吗?<br>还有,能否给个例子,谢谢
 
后退
顶部