如何让 WIN9X系统 模拟按了一个按键,例如按下 ALT+F 键(200分)

  • 主题发起人 主题发起人 atty
  • 开始时间 开始时间
A

atty

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让 WIN9X系统 模拟按了一个按键,例如按下 ALT+F 键
 
postmessage(Edit1.Handle,WM_KEYDOWN,65,0);
这是一个API函数。
Edit1.Handle 是句柄;
WM_KEYDOWN 是按下键的消息;
65 是指键'a'的值 65……90 是 a……z;
回车键是 VK_RETURN
 
(转)

◇[DELPHI]发送虚拟键值ctrl V
procedure sendpaste;
begin
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
end;

◇[DELPHI]按键接受消息
OnCreate事件中处理:Application.OnMessage:=MyOnMessage;
procedure TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
begin
if msg.message=256 then ... //ANY键
if msg.message=112 then ... //F1
if msg.message=113 then ... //F2
end;

◇[DELPHI]关于键盘常量名
VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE
/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
F1--F12:$70(112)--$7B(123)
A-Z:$41(65)--$5A(90)
0-9:$30(48)--$39(57)
 
请问ALT+S的键值呢?
 
sendmessage(handle,WM_KEYDOWN,.... )
看消息的帮助:
WM_KEYDOWN
nVirtKey = (int) wParam; // virtual-key code 加上你需要的CTRL 或者alt等等
lKeyData = lParam; // key data
再WM_KEYUP就可以了
 
postmessage(from.handle,vk_alt+vk_s,0,0)试试
 
还可以用Sendkeys实现三个键以上的模拟
具体自己去看help吧
 
非常感谢!!请加我的OICQ82073,想拜你为师,此问题我暂时保留,待我下去测试。谢谢!!
 
算了帮到底
比如
(转)
怎样模拟按键ctrl+两下scrolllock(100分)
uses
sndkey32;

sendkeys('^({SCROLLLOCK}{SCROLLLOCK})');//或者sendkeys('^({SCROLLLOCK 2})');
 
你拜我为师那是绝对的误人子弟
说不定我没你强呢
再说我也不常学习和使用delphi(看看我的自述吧^0^)

其实在delphi方面我是大草包一个^_^,不过如果你想找人讨论
市场行销方面的东东,我倒是一个不错的选择,哇哈哈哈哈...............
 
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);

不过要在某个keydown事件里
 
呵呵,还是测试通不过,能不能给个能通过的代码,模拟alt+s
 
postmessage(form1.handle,vk_control+$41,0,0)(这里用vk_A不行就用$41)

这是在form1上按ctrl+a

VK_0 thru VK_9 are the same as ASCII '0' thru '9' ($30 - $39)
VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' ($41 - $5A)

但不幸的是我一直没找到alt的虚拟码
你可以在程序中写上这句后,按着ctrl键用鼠标点vk_control
会出现windows.pas中对所有键盘上的键的虚拟码的定义
你自己找找看alt对应的,把vk_control改成它就行了

 
来晚啦!
 
如果还不清楚,密切注意此贴
http://www.delphibbs.com/delphibbs/dispq.asp?lid=551263
 
用keyDwon事件!
if (ssAlt in shift) and (key = $53) then //按下了ALT+S键!
begin
进行处理;
end;
这样能达到要求吗??
 
原来是这样,alt的虚拟码是vk_menu,试试吧,应该没什么问题了
 
多人接受答案了。
 
后退
顶部