有关句柄的基础问题
句柄我是一知半解,现在我想问一下:
1、某软件只能在微机上运行一个,我想问下,此软件的句柄在不同的微机上面会不会相同??其下属的控件的句柄呢?
2、若不同,有什么好办法快速得到其子控件的句柄?(那么用spylite获取的句柄不就没有用了??)
[解决办法]
'句柄是指当前进程 的一种标示. 用于Windows系统对进程进行处理, 每运行一次,句柄都会不一样.'以下是以计算器为例对计算器的内容进行操作.Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As LongPrivate Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongConst GW_HWNDFIRST = 0Const GW_HWNDLAST = 1Const GW_HWNDNEXT = 2Const GW_HWNDPREV = 3Const GW_OWNER = 4Const GW_CHILD = 5Const GW_MAX = 5Dim fHwnd As LongDim cHwnd As LongPrivate Sub Command1_Click() fHwnd = FindWindow(vbNullString, "计算器") cHwnd = GetNextWindow(fHwnd, GW_CHILD) '取得计算器下第一个子控件的句柄 Dim Data As String * 10 Call GetWindowText(cHwnd, Data, 10) While Not (Mid(Data, 1, 1) = 8) '取得数字8所在的按扭的句柄 (对取得的句柄控件上面的文字进行判断) cHwnd = GetNextWindow(cHwnd, GW_HWNDNEXT) '取得下一个子控件的句柄 Call GetWindowText(cHwnd, Data, 10) '取得控件上的Caption DoEvents Wend MsgBox DataEnd Sub
[解决办法]
楼上正解
[解决办法]
不懂,看来还要多学习了!
[解决办法]
我个人的理解是:句柄是一个标识符,是Windows标识对象或者项目的一个长整数,这里的对象或者项目可以是窗口、菜单、控件、模块、任务、实例、字体、资源……等,它由Windows临时分配,也就是说,同一对象或项目上一次运行和下一次运行可能就不相同。
[解决办法]