WinRestore,% hwnd([1])
我在许多编程语言中都发现了hwnd的使用。在谷歌搜索后,它出来是处理。我没有得到更多关于此的信息。程序员如何知道要投入的价值,例如。
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的另一个例子 桂,2:+ hwndhwnd HWND(2,HWND)
答案 0 :(得分:1)
这些都是窗口消息,您可以通过Google搜索来查找有关MSDN文档的信息。见以下链接:
您可以通过查看native List Box control的文档找到它们和其他相关消息。
至于数字,它们是文档中(通常)提到的十六进制数字。但是,由于这些不是必须谷歌并检查其他网站/论坛, 或 通过在其中试验它们来自行查找它们的值C或C ++。
在VB中,十六进制数字用数字前面加&H
来表示,而在C,C ++,C#或类似数字中,它们前面加上0x
。
答案 1 :(得分:0)
在表单编辑器中,每个窗口/控件都有一个hwnd
属性。对于不是由您的表单包创建的窗口,您使用API调用FindWindow
(最简单但不可靠)或EnumWindows
。还有GetForegroundWindow
和GetDesktopWindow
。
要查找常量的值,请将C头文件作为Windows SDK https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk的一部分下载。它还包含所有这些API调用的文档。这是列出所有窗口的在线文档。函数https://msdn.microsoft.com/en-us/library/windows/desktop/ms633505(v=vs.85).aspx。