180分救命呀!怎么样能模拟按键和鼠标操作?

cmpp 2001-12-04 03:04:00
email:cmpp@163.com
...全文
226 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmpp 2001-12-09
  • 打赏
  • 举报
回复
来人呀
cmpp 2001-12-06
  • 打赏
  • 举报
回复
同志们,我要的汇编的做法
cmpp 2001-12-06
  • 打赏
  • 举报
回复
来人
cmpp 2001-12-05
  • 打赏
  • 举报
回复
没有人汇吗?
duqiang2050 2001-12-05
  • 打赏
  • 举报
回复
实际 fraser01(王晓栋) 所得对 
这给是典型的hook(就是钩子)程序,要把那要做的宏和要send的message编在一个dll里,然后在你的程序中引用才能实现。其中的dll用vb确实很难实现,一般都用vc或delphi写这个dll,vb 在外面。不用dll是做不到的
j_x_y 2001-12-05
  • 打赏
  • 举报
回复
学习,学习!
lou_df 2001-12-05
  • 打赏
  • 举报
回复
我也来学习一下.
basey 2001-12-05
  • 打赏
  • 举报
回复
very good.
DeityFox 2001-12-05
  • 打赏
  • 举报
回复
使用 kb_event 函数模拟键盘操作
kb_event函数的使用 
     
下面的函数可以利用kb_event实行一些系统操作


Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const VK_LWIN = &H5B
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_APPS = &H5D
Private Const VK_PLAY = &HFA

Private Sub DoAction(Index As Integer)
 Dim VK_ACTION As Long

 Select Case Index
  Case 0: 注释:打开资源管理器
   VK_ACTION = &H45
  Case 1: 注释:查找文件
   VK_ACTION = &H46
  Case 2: 注释:最小化所有窗口
   VK_ACTION = &H4D
  Case 3: 注释:运行程序
   VK_ACTION = &H52
  Case 4: 注释:弹出Win菜单
   VK_ACTION = &H5B
  Case 5: 注释:将计算机转入睡眠状态
   VK_ACTION = &H5E
  Case 6: 注释:执行Windows帮助
   VK_ACTION = &H70
 End Select

 Call keybd_event(VK_LWIN, 0, 0, 0)
 Call keybd_event(VK_ACTION, 0, 0, 0)
 Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
End Sub
cmpp 2001-12-05
  • 打赏
  • 举报
回复
终于搞清楚了,用汇编调用中断
cornerxu 2001-12-04
  • 打赏
  • 举报
回复
模拟键盘用Sendkeys比较过瘾
模拟按Tab:Sendkeys"{Tab}"
模拟按回车:Sendkeys"{Enter}"
crycoming 2001-12-04
  • 打赏
  • 举报
回复
tell me why can't use "gz"

rushing 2001-12-04
  • 打赏
  • 举报
回复
sub form_keypress(Ascii as integer,..)

if ascii=asc(1) then
call form_click()
end if

end sub

riluo 2001-12-04
  • 打赏
  • 举报
回复
袁飞整理的太好了
qin_wei 2001-12-04
  • 打赏
  • 举报
回复
效果不好是什么意思?
hillmanweb 2001-12-04
  • 打赏
  • 举报
回复
【函数】
SendMessage

【操作系统】
Win9X:Yes
WinNT:Yes

【声明】
SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

【说明】

调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum,
SendMessageByString是该函数的“类型安全”声明形式

【返回值】

Long,由具体的消息决定

【其它】


【参数表】
hwnd ----------- Long,要接收消息的那个窗口的句柄

wMsg ----------- Long,消息的标识符

wParam --------- Long,具体取决于消息

lParam --------- Any,具体取决于消息

函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。

函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);

参数:

hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。

Msg:指定被发送的消息。

wParam:指定附加的消息指定信息。

IParam:指定附加的消息指定信息。

返回值:返回值指定消息处理的结果,依赖于所发送的消息。

备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。

如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。

Windows CE:Windows CE不支持Windows桌面平台支持的所有消息。使用SendMesssge之前,要检查发送的消息是否被支持。

速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

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


不好意思,我也是从袁飞那里抄来的。



rushing 2001-12-04
  • 打赏
  • 举报
回复
在Form_KeyPress中运行

Form_click()

给分!
rainman2001 2001-12-04
  • 打赏
  • 举报
回复
首先用文本框调出输入法
然后用sendkeywords发送ASCII码就可以啦
应该就OK了吧
cmpp 2001-12-04
  • 打赏
  • 举报
回复
有会用SENDMESSAGE的吗?
cmpp 2001-12-04
  • 打赏
  • 举报
回复
TO: bao_zey(顽石)
就是说我按了个“1”,要完成向下或按鼠标左键的功能。
TO: fraser01(王晓栋)
谢谢了,我不会VC++
TO:Jneu(沧海桑田)
SendKeys 语句局限性很大
TO: qin_wei(烤毛蛋)
你说的这2个函数我都会用,效果不好!
加载更多回复(4)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧