思路错误,这种应用不是“系统级的的按键信息”这样解决的。应该用procedure,也就是窗体总的消息处理,窗体中所有消息都要发到这里。 fomr: Private Sub Form_Load() ''init the variables hole the hwnd of "form1" and "cmdExit" MyLongfrmHwnd = Me.hwnd
''redirecting procedure of the specific window 'ProcOld = SetWindowLong(MyLongfrmHwnd, GWL_WNDPROC, AddressOf OnMenu) '设置Fomr1的procedure End Sub module: Public Function OnMenu(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg Case WM_SYSCOMMAND GoTo SYSPROC Case WM_COMMAND GoTo SYSPROC Case WM_LBUTTONUP GoTo SYSPROC End Select
如果用sendkey不行那么用api试试:sendmessage
SENDMESSAGE?
是不是和POSTMESSAGE WERM_CHAR一个类型?
===========================================
我其实想控制游戏。最好有免费的控件~~~~
先谢谢大家了!!!
简单一点就用SENDMESSAGE试试Hook,网上有例子
fomr:
Private Sub Form_Load() ''init the variables hole the hwnd of "form1" and "cmdExit"
MyLongfrmHwnd = Me.hwnd
''redirecting procedure of the specific window
'ProcOld = SetWindowLong(MyLongfrmHwnd, GWL_WNDPROC, AddressOf OnMenu) '设置Fomr1的procedure
End Sub
module:
Public Function OnMenu(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg
Case WM_SYSCOMMAND
GoTo SYSPROC
Case WM_COMMAND
GoTo SYSPROC
Case WM_LBUTTONUP
GoTo SYSPROC
End Select
SYSPROC:
OnMenu = CallWindowProc(ProcOld, MyLongfrmHwnd, wMsg, wParam, lParam)
End Function
其中用到的api你自己差一下。
可是程序的窗体句柄会不停的变怎么办?
你做了什么功能?
能详细说说吗?我很想知道啊?
不知道大家有没有见过JOYTOKEY这个软件,
就是把手柄上的按键对应到键盘上的按键,对应后可以任何的程序,级别很高。
不知道是怎么完成的,看程序也是用VB写的!!!
keybd_event 发送的应该是底层的按键消息了。keybd_event 将会被初始按键消息发送到KeyboardProc Hook中接受处理,然后发送到拥有活动窗口的应用程序中,然后转换为窗口消息发送到活动窗口。可能在其他的环节出现问题。
使用方式为:SendKeys "%{F4}" '此代码发送 Alt+F4,具体参数如下:
Key Code
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
SHIFT +
CTRL ^
ALT %
USER32。DLL不够级别。
我在APPLEVB上见到一个SOFTKEY的控件。
但是已经不能下载了~
谁还有这方面的资料吗?谢谢大家了。
VisualBoyAdvance就是这样的。用Sendkeys不灵的。
'*[email protected]
Public Function CombineKeyPress(ParamArray avntVK())
'Purpose :模拟组合键按键PRESS
'Useage: CombineKeyPress mclsVK.VK_CONTROL, mclsVK.VK_A 'Ctrl+A
On Error GoTo PROC_ERR
Dim vk
'***************
'*KEYDOWN
Dim bytVK As Byte
For Each vk In avntVK
bytVK = vk
'*关键外部调用:Keybd_event
keybd_event bytVK, 0, 0, 0
Next
'***************
'*KeyUp
For Each vk In avntVK
bytVK = vk
'*关键外部调用:Keybd_event
keybd_event bytVK, 0, KEYEVENTF_KEYUP, 0
NextPROC_EXIT:
Exit FunctionPROC_ERR:
CombineKeyPress = Err.Number
Debug.Print "CombineKeyPress.Err(" & Err.Number & "):" & Err.Description
End Function'***********************************************************'***********************************************************
'*希望能够对你有所帮助!
'***********************************************************
"为振兴民族软件产业而奋斗!"
这是谁啊!公众场所禁止喧哗!'********************************************
'对不起,是我哪!放一点广告,对您带来的不便敬请原谅!
广告:我的第一个Visual Basic 6.0作品,欢迎大家试用,注册用户得到全部源代码。 EasyDialog能够做什么?
(为了增强Windows通用打开/保存对话框,能够快速的打开经常访问的文件夹或者文件)
一、快速地在通用打开/保存对话框中打开你经常访问的文件夹/文件。
二、快速地在Windows Explorer中打开经常访问的文件夹/文件。
三、快速地在IE浏览器打开你经常访问的网站。
四、快速地给你的朋友发Email
五、能够使您方便地按照逻辑分类来组织和管理您的文件夹/文件,您经常访问的网址,您的Email地址。'********************************************
'*下载EasyDialog:
http://www.softboyzhou.com/download/EasyDialog.asp
'***************
'*购买EasyDialog:
http://www.softreg.com.cn/shareware_view.asp?id=/7148D197-1C1D-4E84-B92A-EE2CC07D27C0/
'***************
'*给我写信:有什么问题请来信。
[email protected]