运行vb就vb弹出消息框设备句柄找不到框

用VB模板制作按键精灵插件(获取梦幻诛仙的窗口句柄插件) - 插件界面 - 按键精灵论坛 -
Powered by Discuz! Archiver
用VB模板制作按键精灵插件(获取梦幻诛仙的窗口句柄插件)
本帖最后由 yinfeng04 于
20:09 编辑
前两天刚开始学习按键精灵,想编个梦幻诛仙自动师门脚本。以前玩过一段时间的VB入门,在论坛里翻了翻按键精灵的教程,发现和VB各有优缺点。
现在因为梦幻诛仙屏蔽了一些函数,如果当前窗口是梦诛,脚本就无法运行。满天下的找资料。郁闷中想写点什么。
首先在按键精灵插件模板、官方教程更新]里下载VB用的模板.
QMPlugin插件制作模版(VB 6.0).zip
解压后用VB打开QMPlugin.vbp
在类模块MyPluginName的代码页添加如下API函数声明:Private Declare Function GetNextWindow Lib &user32& Alias &GetWindow& (ByVal hwnd As Long, ByVal wFlag As Long) As Long
Private Declare Function GetWindowText Lib &user32& Alias &GetWindowTextA& (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function FindWindowa Lib &user32& Alias &FindWindowA& (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetForegroundWindow Lib &user32& () As Long
然后修改函数Public Function Test1() 的内容为:
Public Function findWinName(strName As Variant) As String
Dim hwnd As Long
Dim str1 As String, len1 As Long, i As Integer
hwnd = GetForegroundWindow
findWinName = &&
str1 = Space(255) '定义接收字串.
GetWindowText hwnd, str1, 1024
Do While hwnd && 0
hwnd = GetNextWindow(hwnd, 2) '只有2才表示找下一个窗口
len1 = GetWindowText(hwnd, str1, Len(str1))
If (InStr(1, str1, strName, 1) & 0) Then
findWinName = hwnd
End Function
然后修改类模块MyPluginName的名称为你想要的插件名称,例如”aojiansoft”
再然后点”文件”里的”生成….dll”来生成aojiansoft.dll,并把它复制到按键精灵的plugin目录里,
现在用按键精灵新建一个按键脚本来试试这个插件吧,
//查找有&梦幻诛仙[&文字的窗口,返回值为找到的第一个窗口句柄
//注意&梦幻诛仙[&后面的&[&,因为如果单单用&梦幻诛仙&四个字,可能找到的第一个是&梦幻诛仙更新程序&
Plugin jubing = aojiansoft.findWinName(&梦幻诛仙[&)
//用找到的句柄返回窗口标题
Plugin capwin = Window.GetText(jubing)
MessageBox &句柄:& & jubing & &窗口标题:& & capwin
这只是一个很简单的例子,实现的功能也很简单,仅仅只是找到第一个窗口,如果想遍历全部窗口,只要在VB类模块MyPluginName里修改一下Function findWinName()函数:
MyPluginName里修改一下Function findWinName()函数:
Public Function findWinName(strName As Variant) As String
& & Dim hwnd As Long
& & Dim str1 As String, len1 As Long, i As Integer
& & hwnd = GetForegroundWindow
& & findWinName = &&
& & str1 = Space(255)& && && && & '定义接收字串.
& & GetWindowText hwnd, str1, 1024
& & Do While hwnd && 0
& && &&&hwnd = GetNextWindow(hwnd, 2) '只有2才表示找下一个窗口
& && &&&len1 = GetWindowText(hwnd, str1, Len(str1))
& && &&&If (InStr(1, str1, strName, 1) & 0) Then
& && && && &findWinName = findWinName & hwnd & &|&
& && &&&End If
End Function
这样插件就能返回以&|&符号分隔的找到的全部句柄的字符串,然后在按键精灵里用Split 函数处理一下就可以得到多个窗口的句柄了。Split 函数用法具体可参考按键宝典。
希望能抛砖引玉,对刚入门的新手有点帮助,高手不要笑。
没人???速度沙发.
来个板凳看看可以不
jinlei_0528
虽然 看不懂,顶一个还是可以的~学习~
汗,是不是权限太小,怎么不能编辑帖子啊.
RE: 用VB模板制作按键精灵插件(获取梦幻诛仙的窗口句柄插件)
又发现可以添加附件。怎么没脑子老是不看清楚。
这是编译后的aojiansoft.dll插件,复制到按键精灵的plugin目录后,可以直接用
格式为:aojiansoft.findWinName(&查找的窗口标题片段&) 如:
Plugin jubing = aojiansoft.findWinName(&梦幻诛仙[&)
哥们顶你一个````虽然不懂``学习中
学习一下,可以做个《功夫世界》的后台脚本吗?
zhaojin002
这个好,顶下
顶~~~~~~~~~~~,我现在1台机器1天能刷300万的游戏币~用的是自己写的脚本:victory:
好东西咱没多少人来顶下
奇怪还有这样的事情啊,莫非VB和按键精灵走的途径不一样,按键精灵找不到,VB可以找到啊,那下回要细细继续学了。
谢谢分享!
学习了,谢谢哥们的插件了,改天再学吧!
happysky1989
如果用VB生成程序后放到桌面会找不到句柄 =.= 晕死 最后发现是这里..
hwnd = GetForegroundWindow
在桌面运行后取当前句柄就是桌面..返回0..郁闷奥..后来改掉后成功了..改成..
hwnd = Form1.hwnd
OK勒 =.= 晕死 纳闷了半天
jecicapapa
回帖是一种美德。。。。。。。。。。。。。。。。。。
tigeryang163
不支持变量啊!
zhuque5810
不支持变量啊!!!哪个大大指点一下如果解决啊!!!
zhuuuu5555
有难度 所以不大会
下载了再学习
查看完整版本:vb中如何实现自动点击msgbox弹出对话框的确定或取消按钮源程序,请分析
[问题点数:100分,结帖人laozhuang]
vb中如何实现自动点击msgbox弹出对话框的确定或取消按钮源程序,请分析
[问题点数:100分,结帖人laozhuang]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2000年12月 VB大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
GetWindowTextFindWindow用这两个API
这个社会太复杂。。。
等 级:新手上路
帖 子:837
GetWindowText 是 取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性)可是每次他弹出来的信息或窗体的字符都不一样的 怎么判断,比如一次说篮球
一次说什么地震 或其他的。。 具体怎么用这个函数呢?谢谢指教
If Dir(\"alive\")
\"\" And Dir(\"ideal\")
Print \"strive\"
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
我以前不是发了一个可以获得任何窗体的句柄的程序上来么!
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
噢..记错了..好像是获得任何窗体的标题.
等 级:新手上路
帖 子:837
恩 好象保存在D盘了 去看看 哈哈
获取任何窗体句柄。。怎么知道是否获取到是否自己想要的 窗体?
额 好好向ioriliao学习
If Dir(\"alive\")
\"\" And Dir(\"ideal\")
Print \"strive\"
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
把那个程序加一句代码就行了,红色那句是我新加上去的!Dim meCaption As GetWindowsTextDim mePos As CursorPosDim meHwnd As windowsRfromPointPrivate Sub Form_Load()
Set mePos = New CursorPosSet meHwnd = New windowsRfromPoint
Set meCaption = New GetWindowsText
Private Sub Timer1_Timer()Text1.Text = ""mePos.CurrsorPosmeHwnd.X = mePos.PosXmeHwnd.Y = mePos.PosY
meCaption.FrmHwnd = meHwnd.windowsRfromPointText1.Text = meCaption.CaptionMe.Caption = "鼠标指向此窗体的句柄是:" & meHwnd.windowsRfromPointEnd Sub这是我封装好的api
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
改成这样吧.美观些Dim meCaption As New GetWindowsTextDim mePos As New CursorPosDim meHwnd As New windowsRfromPointPrivate Sub Timer1_Timer()Text1.Text = ""mePos.CurrsorPosmeHwnd.X = mePos.PosXmeHwnd.Y = mePos.PosY
meCaption.FrmHwnd = meHwnd.windowsRfromPointText1.Text = meCaption.CaptionMe.Caption = "鼠标指向此窗体的句柄是:" & meHwnd.windowsRfromPointEnd Sub
等 级:新手上路
帖 子:837
你这个是不是用鼠标来指向获得窗体句柄??还是用鼠标定位?
可以自动获取么?不用鼠标。比如说我 我在Timer1里面写 运行一有窗体弹出 立刻获取。。 请指教
If Dir(\"alive\")
\"\" And Dir(\"ideal\")
Print \"strive\"
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
要遍历所有窗口...我没有做过!
版权所有,并保留所有权利。
Powered by , Processed in 0.020615 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved如何让VB程序只运行一个实例,系统启动另一个实例时,自动把命令参数转到第一个实例,像Winamp一样
[问题点数:30分,结帖人liuliushuang]
如何让VB程序只运行一个实例,系统启动另一个实例时,自动把命令参数转到第一个实例,像Winamp一样
[问题点数:30分,结帖人liuliushuang]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2003年4月 荣获微软MVP称号
2002年12月 VB大版内专家分月排行榜第一2002年11月 VB大版内专家分月排行榜第一2002年10月 VB大版内专家分月排行榜第一2002年9月 VB大版内专家分月排行榜第一2002年8月 VB大版内专家分月排行榜第一2002年7月 VB大版内专家分月排行榜第一2002年6月 VB大版内专家分月排行榜第一2002年5月 VB大版内专家分月排行榜第一
2002年1月 VB大版内专家分月排行榜第二
2002年1月 VB大版内专家分月排行榜第二
2002年1月 VB大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。强行关闭冰刃并禁止其运行的代码(不会弹出确认关闭提示框)_vb吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:51,873贴子:
强行关闭冰刃并禁止其运行的代码(不会弹出确认关闭提示框)收藏
呵呵,其实只是一个普通的演示WH_SHELL消息HOOK的代码,用来HOOK所有程序的窗口创建等消息,此技术可被用于控制类程序。
只是偶然发现这段代码也能够很好的关闭冰刃和其它一些带有自我保护功能的系统工具,所以写了个夸张的标题:-)&大家知道你向冰刃发送WM_CLOSE消息时它会弹出一个确认关闭的对话框,而这段代码在关闭冰刃时不会弹出那个对话框,因此比较管用。
源码参见:&
此程序演示了全局WH_SHELL&消息HOOK的使用,可以拦截到所有应用程序的窗口创建消息。一般来说,如果要拦截进程的创建,简单的办法是用定时器不断遍历进程列表,分析出新产生的进程,不过这样效率比较低。高级一点的办法是HOOK创建进程的API,不过创建全局的API&HOOK比较麻烦。所以,如果你只是想要截获有窗口的进程产生,就可以用WH_SHELL这个钩子,当然它的局限性在于,如果新建的进程没有窗口,就拦截不到了。
得到了新创建的窗口句柄后,就判断一下是不是要关闭的窗口,如果是,就关闭它。关闭窗口的代码比较简单,大家可以看看源码,能够关闭大多数的窗口。
在监控窗口一类的程序中,比较麻烦的是如何判断一个窗口是不是自己要找的那个程序的窗口,因为有些程序的窗口标题是随机的,类名也是随机的。解决的办法是根据窗口各种控件的特征。
下面提供一个函数CheckWindowsStringEx,可以帮助确定窗口特征,你传入一个窗口或者控件句柄,它会遍历该句柄下的所有子窗口(子控件),如果找到标题含有字符checkStr或者类名含有字符checkClass的控件,就返回该控件的句柄,如果遍历结束也找不到,就返回0,大体上就是这样,欢迎大家交流,QQ
汗了,竟然被说含有不适合的关键词,死活发布上来,大家看压缩包里面那个吧
有效..谢谢分享
ãĕơ
好!〔鼓掌……〕
快试试吧,可以对自己使用挽尊卡咯~◆◆
顶一下贴,难得有人把成果拿出来。
我开始关注hd37&了,研究的东西有深度,开放的源码也有亮度
研究DGI+才比较有深度……
DGI+&,学习一下&-&-#
快试试吧,可以对自己使用挽尊卡咯~◆◆
好贴顶一下啊
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 vb弹出消息框 的文章

 

随机推荐