如何找到HWND窗口手柄的正确值


WinRestore,% hwnd([1])

我在许多编程语言中发现了HWND的使用。在Google上搜索后,它将被处理。我没有得到更多信息。程序员如何知道要投入的价值,例如。

Const LB_GETTEXTLEN = &H18A
Const LB_GETTEXT = &H189
Const LB_GETCOUNT = &H18B

& h18a他知道如何使用它?

这是示例程序

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"         (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As   Long
Const LB_GETTEXTLEN = &H18A
Const LB_GETTEXT = &H189
Const LB_GETCOUNT = &H18B
Private Function GetListItems(ByVal hList As Long) As Variant
Dim i As Long, nCount As Long, lItemLength As Long
Dim sItem() As String
nCount = SendMessage(hList, LB_GETCOUNT, 0, ByVal 0&)
For i = 0 To nCount - 1
   lItemLength = SendMessage(hList, LB_GETTEXTLEN, i, ByVal 0&)
   ReDim Preserve sItem(i)
   sItem(i) = String(lItemLength, 0)
   Call SendMessage(hList, LB_GETTEXT, i, ByVal sItem(i))
Next i
GetListItems = sItem
End Function

在所有不同语言中都有许多这样的示例,但是概念是相同的。所以我想学习它。这是什么意思以及如何使用它。

AHK的另一个例子 GUI,2: hwndhwnd hwnd(2,hwnd)

这些都是所有窗口消息,您可以通过搜索搜索MSDN文档的信息。请参阅下面的链接:

  • LB_GETTEXTLEN

  • LB_GETTEXT

  • LB_GETCOUNT

您可以通过检查本机列表框控制的文档来找到它们和其他相关消息。

关于数字是文档中(通常)提到的十六进制数字。但是,由于这些不是这些,因此您必须搜索它们并查看其他网站/论坛,通过在C或C 中尝试它们来自行找到它们的值。

在VB中,十六进制的数字是通过使用&H进行准备数字的,而在C,C ,C#或类似的情况下,它们用0x进行了准备。

在表单编辑器中,每个窗口/控件具有hwnd属性。对于未由您的表单软件包创建的Windows,您使用API调用FindWindow(最简单但不可靠)或EnumWindows。还有GetForegroundWindowGetDesktopWindow

要找出常数的值,您将下载C头文件作为Windows SDK的一部分https://developer.microsoft.com/en-en-us/windows/downolloads/windows-10-sdk。它还具有所有这些API调用的文档。这是在线文档列出所有Windows的功能https://msdn.microsoft.com/en-us/library/windows/desktop/ms633505(v = vs.85).aspx。

相关内容

  • 没有找到相关文章

最新更新