如何底层模拟键盘按键?

marcus2006 2008-07-17 03:34:28
需要通过模拟键盘在底层实现sleep键,不通过消息.希望资深的给点建议.
1.用什么工具模拟?Vs2008,TC,汇编?
2.用什么方法呢?
3.有例子分享么?不管是英文还是中文的.
...全文
208 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeffChung 2008-07-18
  • 打赏
  • 举报
回复
我也看到说sleep按键是0x5F(95)

但你可能需要自己定义这个常量吧 VK_SLEEP = 0x5F
marcus2006 2008-07-18
  • 打赏
  • 举报
回复
吐血啊,楼上的各位,sleep这种类型的键特殊啊,用sendinput都无法实现.
期待高手
JeffChung 2008-07-18
  • 打赏
  • 举报
回复
如果坚持要用键盘模拟,你就用键盘钩子的程序去得出Sleep键的值吧
JeffChung 2008-07-18
  • 打赏
  • 举报
回复
powrprof.dll

SetSuspendState
marcus2006 2008-07-18
  • 打赏
  • 举报
回复
VK_SLEEP使用不通过!!使用其他普通的a字符或F1键的ps/2 scancode验证是没问题的.这些特殊键难啊,有那些多年熟悉windows的,能提供建议?
北京的雾霾天 2008-07-17
  • 打赏
  • 举报
回复
上面的不是NumLock键,而是CapsLock的键码。


查了一下,Sleep键好像是5F

VK_SLEEP (5F)

但未测试。
北京的雾霾天 2008-07-17
  • 打赏
  • 举报
回复
可以使用如下的keybd_event来实现,例如下的代码模拟按下num键,而sleep的键值是多少,可以通过MSDN来查找:


[DllImport("user32.dll", EntryPoint = "keybd_event", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern void Keybd_event(byte vk, byte scan, int flags, int extrainfo);

const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;

Keybd_event((byte)20, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
Keybd_event((byte)20, 0x45, KEYEVENTF_KEYUP, 0);

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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