首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

有关句柄的基础有关问题

2012-01-22 
有关句柄的基础问题句柄我是一知半解,现在我想问一下:1、某软件只能在微机上运行一个,我想问下,此软件的句

有关句柄的基础问题
句柄我是一知半解,现在我想问一下:
1、某软件只能在微机上运行一个,我想问下,此软件的句柄在不同的微机上面会不会相同??其下属的控件的句柄呢?
2、若不同,有什么好办法快速得到其子控件的句柄?(那么用spylite获取的句柄不就没有用了??)


[解决办法]

VB code
'句柄是指当前进程 的一种标示. 用于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临时分配,也就是说,同一对象或项目上一次运行和下一次运行可能就不相同。
[解决办法]
探讨
我个人的理解是:句柄是一个标识符,是Windows标识对象或者项目的一个长整数,这里的对象或者项目可以是窗口、菜单、控件、模块、任务、实例、字体、资源……等,它由Windows临时分配,也就是说,同一对象或项目上一次运行和下一次运行可能就不相同。

[解决办法]
一个控件有多个句柄!LZ还是先看看教科书吧,增加点感性认识。
[解决办法]
有用。
[解决办法]
每次运行句柄就不同,更别说在别的微机上了(其实有点不搭噶)
spylite获取当前运行的句柄,怎么没用。。。
[解决办法]
spylite获取当前运行的句柄是一个十六进制值,程序重新打开这个值不是就变了,那不是只在程序未销毁之前有用,如果有FindWindow GetNextWindow GetWindowText 这些api函数来重新获取才有用吧?我是新手,对操作外部程序也有兴趣,对句柄不够了解。敬请解释一下。还有上面计算器的例子获取按钮8的标题,如果我想按下按钮8该怎么做?谢谢!

热点排行