python pywin32 里面 *** 作窗体,获取窗体里面的数据,在函数GetDlgItem函数中,怎么获取第二个参数的值

python pywin32 里面 *** 作窗体,获取窗体里面的数据,在函数GetDlgItem函数中,怎么获取第二个参数的值,第1张

不知道你解决了没,最近正好研究python。

hwnd=win32guiFindWindow()这个获取窗体句柄,大概都会用;

ctrl=win32guiFindWindowEx(hwnd,None,'窗口类名',‘标题文本’)已知控件类名或控件名时获取控件句柄,这个标题文本不一定存在,所以使用None默认值获取的是该窗口类名中第一个顺位的控件句柄。

你使用b=win32guiGetDlgItem(edit,资源ID)最终结果是获取的是句柄,这里的资源ID其实是spy++中的窗口ID,句柄是可变的,窗口ID是不可变的。这里似乎错了,你这样子大概获取的是控件中的子项(控件有子项的话,比如Combox中的edit框),我猜的,没试过。b=win32guiGetDlgItem(hwnd,窗口ID)是已知ID下获取某控件句柄

如果你想获取某个控件的ID则ctrlid=win32guiGetDlgCtrlID(ctrl)这是一只某控件句柄的情况下获取该控件在应用程序中的窗口ID。

如果不知控件句柄的情况下大概可以试试spy++获取窗口ID,把窗口ID(这个是16进制的)转化成10进制带进b=win32guiGetDlgItem(hwnd,窗口ID)大概也可以得到控件句柄。

其实就是三个函数之间的转化

ctrl=win32guiFindWindowEx(hwnd,None,'edit',None)控件句柄

ctrlid=win32guiGetDlgCtrlID(ctrl)控件的窗口id

ctrl2=win32guiGetDlgItem(hwnd,ctrlid)控件句柄

print "%x" %ctrllist

print "%x" %ctrlid

print "%x" %ctrl

输出,看一下数据与spy++是否一致。然后ctrl=ctrl2

简单的说,设计窗口的时候要注册窗口类,那时候要填一些参数,其中就有窗口的类名和窗口的名字。用这个函数你可以获得指定窗口的句柄。比如

HWND hwnd = FindWindow(NULL,"QQ音乐"); 就可以获得QQ音乐的句柄,然后你可以调用其他API函数结束这个句柄,也就结束了QQ音乐这个程序。

函数原型:

HWND FindWindow ( LPCSTR lpClassName, LPCSTR lpWindowName );

参数表:

lpClassName 指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。 如果该参数为null时,将会寻找任何与lpWindowName参数匹配的窗口。

lpWindowName 指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。

lpClassName

[in] Pointer to a null-terminated string that specifies the class name or a class atom created by a previous call to the RegisterClass or RegisterClassEx function The atom must be in the low-order word of lpClassName; the high-order word must be zero

If lpClassName points to a string, it specifies the window class name The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names

If lpClassName is NULL, it finds any window whose title matches the lpWindowName parameter

lpWindowName

[in] Pointer to a null-terminated string that specifies the window name (the window 's title) If this parameter is NULL, all window names match

以上是对findwindow函数参数的解释,从中可以看出,通过类型查找窗口句柄的话,首先该类必须由RegisterClass或RegisterClassEx注册过,或者是属于预定义的控件类。

HWND FindWindow(

LPCTSTR lpClassName, // class name

LPCTSTR lpWindowName // window name

);

是哪个窗口的窗口类的类名。

建立窗口必须先生成窗口类,注册后才能生成窗口。

你可以看看windows程序运行原理。

一般这是找自己创立的程序的函数。

别人的也可以改。

只是他们的窗口类名查询方法:

>

第一步执行EnumWindowsProc API函数

第二步,在EnumWindowsProc的回调函数里执行GetWindowThreadProcessId API函数

获得Window句柄对应的ProcessID

然后判断ProcessID是否和这个游戏的ProcessID一致,就可以拿到窗体句柄了

以上就是关于python pywin32 里面 *** 作窗体,获取窗体里面的数据,在函数GetDlgItem函数中,怎么获取第二个参数的值全部的内容,包括:python pywin32 里面 *** 作窗体,获取窗体里面的数据,在函数GetDlgItem函数中,怎么获取第二个参数的值、find window 函数在c++中怎样使用、delphi中的findwindow函数用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9743411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存