我注意到,如果您针对属于不在前台(即最小化)窗口的hWnd调用FindWindowEx或EnumChildWindows,则它们不会报告任何children。另一方面,如果我首先对正在查询的窗口调用SetForegroundWindow,然后调用FindWindowEx或EnumChildWindows,它们会报告所有子项.即使我感兴趣的窗口不在前台,下一次调用也会报告所有子项。它几乎是在第一次调用后进行某种缓存? 最佳答案 这是您自己的应用程序中的一个窗口,还是您正在调查第三方应用程序的功能?我猜应用程序只会在它第一次进入前台时创
我正在尝试对Windows应用程序进行一些自动化操作。为了做任何我想做的事情,我需要一些控件的窗口句柄。以前,我会结合使用EnumWindows、EnumChildWindows和GetWindowText来完成此操作。但是现在,一些较新的程序不再有带按钮的工具栏。相反,他们有一条丝带。起初这对我来说似乎不是什么大问题,但现在我注意到功能区上的按钮没有出现在EnumChildWindows中!或者至少GetWindowText不会返回与屏幕上显示的文本相同的文本。长话短说:谁能告诉我如何以编程方式找到功能区上按钮的句柄?谢谢。问候,ldx 最佳答案
我在C#中启动一个进程,然后使用SendMessage向该进程发送Windows消息。通常我将消息发送到Process.MainWindowHandle,但在某些情况下,我可能需要找到一个子窗口句柄并将消息发送到那里。我将如何在C#中执行此操作以及查找子窗口的选项是什么(即是否需要知道窗口的名称或是否有其他选项)? 最佳答案 看看EnumChildWindows(pinvoke.net) 关于c#-C#获取子窗口句柄,我们在StackOverflow上找到一个类似的问题:
在使用WindowsAPI方法EnumChildWindows时,我遇到了奇怪的行为。好像不是接一段儿的windows。当我使用Spy++向下钻取时,我可以看到child,但当我执行我的代码时,它不会返回我在Spy++中看到的child。我在Spy++中看到的WhatIseeinSpy++http://img24.imageshack.us/img24/9264/spyhandles.png这是我的代码:publicdelegateboolEnumWindowProc(IntPtrhWnd,IntPtrparameter);[DllImport("user32")][return:Ma
我正在尝试使用以下代码枚举所有win32窗口:EnumChildWindows(GetDesktopWindow(),WindowManager::enumChildWindows,reinterpret_cast(this));BOOLCALLBACKWindowManager::enumChildWindows(HWNDhwnd,LPARAMlParam){WindowManager*manager=reinterpret_cast(lParam);////Dostuffwithchildwindowhandle(hwnd)////ReturnTRUEtocontinueenume
我最近用Microsoft的Spy++检查了一个GUI,发现了一个奇怪的结构;它看起来像这样(警告,前面的ASCII艺术):|+002004D6"MyRootWindow1"FooClassName|||+001F052C"MyChildWindow"ClassOfChildWindow|\001D0A8C"MyRootWindow2"SomeOtherClassNameTherearetworootwindows,002004D6and001D0A8c,theformeroneofwhichhasonechildwindow,001F052C.Now,thiswouldbeallgo
我可以选择使用APIEnumChildWindows或FindWindowEx中的任何一个。有什么建议哪个api性能更好?FindWindowEx是否在内部使用EnumChildWindows来获取特定窗口的句柄? 最佳答案 这在很大程度上取决于您的场景。FindWindowEx函数用于搜索具有特定类别的窗口以及窗口中可选的特定文本片段。EnumChildWindows函数只是用来枚举子窗口。我认为性能应该是您最后关心的问题。首先是选择正确的API。如果您确实要搜索特定类的窗口,则使用FindWindowEx,否则使用EnumC
我正在寻找一个类名为“CLIPBRDWNDCLASS”的窗口(它可以在办公应用程序和其他应用程序中找到)。如果我使用FindWindow或FindWindowEx,我会找到第一个具有此类的HWND,但我想要所有具有该类的窗口,因此我决定使用递归EnumChildWindows来枚举所有窗口并找到我想要的窗口://-------------------------------------------------------------------------------BOOLCALLBACKenum_wnd_proc(HWNDh,LPARAMlp){charcls[1024]={0};
在main中使用包lxn/win:win.EnumChildWindows(hw,printme,0)然后在main之后:funcprintme(HWNDwin.HANDLE,LPARAMuintptr){//HWNDhwnd,LPARAMlParamspew.Dump(HWND)}我得到:.\test.go:40:cannotuseprintme(typefunc(win.HANDLE,uintptr))astypeuintptrinargumenttowin.EnumChildWindowserror:exitstatus2我不明白错误信息。 最佳答案