如何获取特定窗口的句柄?
日期:2007-09-16 荐:
如何获取特定窗口的句柄?我想在工程A中最小化其它exe应用程序的窗口B,调用的是closewindow(),看了前面的一些文章,现在可以获得B所对应进程的id号,另外,该窗口的标题也知道请问如何获得B窗口的句柄?Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongwshWnd = FindWindow(vbNullString, "窗口标题")谢谢qyii(向范敬宜同志学习!) ,你的方法能够解决问题。不过要是目前打开的窗口中有同名的情况出现,该怎么办?即使同名,他们的pid是不一样的那又如何获得已知pid的窗口的句柄呢?dim winwnd as longWinWnd = FindWindow(vbNullString, 窗体名)进程ID~GetWindowThreadProcessId VB声明 Declare Function GetWindowThreadProcessId Lib "user32" Alias "GetWindowThreadProcessId" (ByVal hwnd As Long, lpdwProcessId As Long) As Long 说明 获取与指定窗口关联在一起的一个进程和线程标识符 返回值 Long,拥有窗口的线程的标识符 参数表 参数 类型及说明 lpdwProcessId Long,指定一个变量,用于装载拥有那个窗口的一个进程的标识符 hwnd Long,指定窗口句柄 Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long 说明 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 返回值 Long,由wCmd决定的一个窗口的句柄。如没有找到相符窗口,或者遇到错误,则返回零值。会设置GetLastError 参数表 参数 类型及说明 hwnd Long,源窗口 wCmd Long,指定结果窗口与源窗口的关系,它们建立在下述常数基础上: GW_CHILD 寻找源窗口的第一个子窗口 GW_HWNDFIRST 为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口 GW_HWNDLAST 为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口 GW_HWNDNEXT 为源窗口寻找下一个兄弟窗口 GW_HWNDPREV 为源窗口寻找前一个兄弟窗口 GW_OWNER 寻找窗口的所有者 注解 兄弟或同级是指在整个分级结构中位于同一级别的窗口。如某个窗口有五个子窗口,那五个窗口就是兄弟窗口。尽管GetWindow可用于枚举窗口,但倘若要在枚举过程中重新定位、创建和清除窗口,那么EnumWindows和EnumChildWindows更为可靠 那又怎么知道窗口中指定控件的ID?该源代码可以获取任意进程的窗体句柄,类,并可以控制指定的窗体。托动获取指针,很方便的得到指定窗体句柄,类。一个不错的系统控制的软件。http://www.mndsoft.com/blog/blogview.asp?logID=44MYHwnd = 1 While MYHwnd <> 0 DoEvents MYHwnd = FindWindow(vbNullString, "窗口") SetWindowText MYHwnd, "窗口 " '这里加多个空格 Wend MuHwnd = 0 ShellExecute Me.hwnd, "open", "你的程序", "启动参数", "文件夹路径", 1该程序能控制你的程序启动时即使有几个窗口的名字相同也能得到绝对窗口句柄
标签: