中易网

求VB高手做个模糊查找窗口句柄

答案:3  悬赏:40  
解决时间 2021-01-14 01:16
  • 提问者网友:流星是天使的眼泪
  • 2021-01-13 01:08
求VB高手做个模糊查找窗口句柄
最佳答案
  • 二级知识专家网友:雪起风沙痕
  • 2021-01-13 02:26
完整代码如下:
一、建立一个模块,复制下面代码到模块中:
Option Explicit

Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) _
As Long

Public Const GW_CHILD = 5
Public Const GW_HWNDNEXT = 2

Public Function GetOpenWindowNames(Title As String) As String
Dim lngDeskTopHandle As Long
Dim lngHand As Long, i As Long, S As String
Dim strName As String * 255
Dim lngWindowCount As Long
lngDeskTopHandle = GetDesktopWindow()
lngHand = GetWindow(lngDeskTopHandle, GW_CHILD)
lngWindowCount = 1
Do While lngHand <> 0
i = GetWindowText(lngHand, strName, Len(strName))
S = Left(strName, i)
If InStr(1, S, Title, vbTextCompare) > 0 Then '模糊查找
GetOpenWindowNames = S
Exit Function
End If
lngHand = GetWindow(lngHand, GW_HWNDNEXT)
Loop
End Function
二、程序调用举例:
模糊查找“新建”这样的标题:
dim S as string
s=GetOpenWindowNames("新建")
返回值s就是查找的结果。
全部回答
  • 1楼网友:一袍清酒付
  • 2021-01-13 04:05
这个很容易 枚举所有窗口
进行Str的Find匹配
符合模糊值的便打开
并非是采用了FindWindow的方案
  • 2楼网友:往事隔山水
  • 2021-01-13 02:55
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lpParams)
{
TCHAR szWndText[1024];
GetWindowText(hWnd,szWndText,1024);
if(!StrNCmp(szWndText,_T("新建"),StrLen(_T("新建"))))
{
// 找到窗体
}
return TRUE;
}
// 在你的程序中调用:
EnumWindows(EnumWindowsProc,NULL);
=======================================
这才发现楼主问的是VB的程序,如下:
' 以下函数必须写在标准模块之中
Public Function EnumWindowsProc(
ByVal hWnd As Long, ByVal lpParams As Long) As Long
Dim szWndText As String*1024
Call GetWindowText(hWnd,szWndText,1024)
szWndText = Left(szWndText, 2)
If szWndText = "新建" Then
' 找到窗体
End If
EnumWindowsProc = 1
End Function
' 在你的程序中调用:
Call EnumWindows(AddressOf EnumWindowsProc,0)
' OK
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息