Findwindowex函数vba(VB用FindWindowEx遍历窗口的问题)

2024-01-03 11:00:02 :56

findwindowex函数vba(VB用FindWindowEx遍历窗口的问题)

大家好,关于findwindowex函数vba很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于VB用FindWindowEx遍历窗口的问题的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

VB用FindWindowEx遍历窗口的问题

用 API 函数 IsWindowVisible 判断窗口是否可见如窗口可见则函数返回 True (非零)Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long

VB FindWindowEx

findwindow 是按窗口的标题找的你知道标题后 可以在findwindowex 函数中指定窗口的class下面的代码 ’Module1 Option ExplicitPublic Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As LongPrivate Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As LongPrivate Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPrivate Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As LongPublic Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByRef lParam As Long) As LongPrivate Const MAX_PATH = 260Public g_nWndCount As LongPrivate Sub cmdEnumChild_Click() Dim lParam As Long lParam = 0 Call EnumChildWindows(GetKey(Me.lvDetail.SelectedItem.Key), AddressOf EnumChildWindowProc, lParam)End SubPublic Function EnumChildWindowProc(ByVal hwnd As Long, ByRef lParam As Long) As Long Dim nSize As Long Dim strTitle As String Dim strClassName As String lParam = 1 Call GetTitleClass(hwnd, strTitle, strClassName) If InStr(1, LCase(strTitle), "command1") 》 0 Then ’按钮的的标题 MsgBox "找到了 句柄是:" & hwnd End If EnumChildWindowProc = 1End FunctionPublic Sub GetTitleClass(ByVal hwnd As Long, Title As String, ClassName As String) Dim nSize As Long Dim strTitle As String Dim strClassName As String nSize = GetWindowTextLength(hwnd) If nSize 》 0 Then strTitle = Space(255) Call GetWindowText(hwnd, strTitle, Len(strTitle)) strTitle = Trim(strTitle) Else strTitle = "No Title" End If strClassName = Space(255) Call GetClassName(hwnd, strClassName, Len(strClassName)) strClassName = Trim(strClassName) Title = strTitle ClassName = strClassNameEnd SubForm1Private Sub cmdEnumChild_Click() Dim lParam As Long lParam = 0 Call EnumChildWindows(hPwnd, AddressOf EnumChildWindowProc, lParam) ’注意 hPwnd 是你的父窗口的句柄End Sub

关于VB的FindWindowsEx的,高人进

一、给你一个查找第N个控件hwd的函数:Function FindWnd(Phwnd As Long, ClassName As String, Index) As LongDim i As Integer, ChildHwnd As Long ChildHwnd = FindWindowEx(Phwnd, 0, ClassName, vbNullString) Do While ChildHwnd i = i + 1 If i = Index Then FindWnd = ChildHwnd Exit Do End If ChildHwnd = FindWindowEx(Phwnd, ChildHwnd, ClassName, vbNullString) LoopEnd Function二、函数调用举例:如果你要查找计算器内第4个"Button",且不管其标题,那么这样调用:dim i as long,Phwnd as longPhwnd = FindWindow(vbNullString, "计算器")i=FindWnd(Phwnd, "Button", 4)

VB中findwindowex函数的用法

  FindWindowEx函数  函数功能:在窗口列表中寻找与指定条件相符的第一个子窗口 。  该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。  参数:(1)hwndParent:要查找的子窗口所在的父窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的父窗口中搜索子窗口)。  如果hwndParent为 0 ,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。  Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。  (2)hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。  (3)lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。  (4)lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。  返回值:Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError  如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL。  若想获得更多错误信息,请调用GetLastError函数。  声明:1.VB 声明  Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long  2.C# 声明    public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);  3.VB .NET 声明  《DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)》 _  Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _  ByVal childAfter As IntPtr, _  ByVal lclassName As String, _  ByVal windowTitle As String) As IntPtr  End Function  相关例子:  ’Example Name: Changing a VB Toolbar to a Rebar-Style Toolbar  BAS Moduel Code  Option Explicit  Public Const WM_USER= &H400  Public Const TB_SETSTYLE = WM_USER + 56  Public Const TB_GETSTYLE = WM_USER + 57  Public Const TBSTYLE_FLAT = &H800  Public Declare Function SendMessage Lib "user32" _  Alias "SendMessageA" _  (ByVal hwnd As Long, _  ByVal wMsg As Long, _  ByVal wParam As Long, _  lParam As Any) As Long  Public Declare Function FindWindowEx Lib "user32" _  Alias "FindWindowExA" _  (ByVal hWnd1 As Long, _  ByVal hWnd2 As Long, _  ByVal lpsz1 As String, _  ByVal lpsz2 As String) As Long  ’--end block--’  ’ Form Code  Option Explicit  Private Sub Form_Load()  With Combo1  .Width = Toolbar1.Buttons("combo1").Width  .Top = (Toolbar1.Height - Combo1.Height) \ 2  .Left = Toolbar1.Buttons("combo1").Left  .AddItem "Black" ’ Add colours for text.

关于本次findwindowex函数vba和VB用FindWindowEx遍历窗口的问题的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

findwindowex函数vba(VB用FindWindowEx遍历窗口的问题)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.