WIN键+Break=显示系统内容。
关于SendMessage keybd_event PostMessage
首先你会发现keybd_event函数中是没有窗口句柄作为参数的,好奇的你一定会觉得很奇怪,那是因为,keybd_event是全局模拟按键的,只对前台窗口(即当前的活动窗口)才可以,但是如果模拟的按键正好也是某个窗口的全局热键消息,那该窗口也能接收到的
而SendMessage 、PostMessage是对指定句柄窗口都其作用的,对于做一些一外挂是非常有用的。例如可以做成这样的效果:即用SendMessage/PostMessage在某一个窗口模拟动作,而同时自己可以在其他窗口做其他事情,互不影响的!
但是有一点要注意,很多人在模拟键盘消息的时候,都会忘记模拟WM_KEYUP的消息。。。
还有一点就是,PostMessage中的窗口句柄参数,可以设置为HWND_BROADCAST,即广播,但不要理所当然地认为是对所有的窗口都起作用!!!它只对系统的顶层窗口起作用,子窗口是收不到这个消息的!!!
还要注意的是SendMessage是没有HWND_BROADCAST参数的,那是因为,SendMessage总是等发送的消息在对应的窗口消息队列中处理完毕后才返回的(这是一种负责的行为), 细想一下就知道为什么SendMessage没有HWND_BROADCAST参数了!!
个人认为
1. 当需要模拟键盘输入命令时,比如Ctrl + V,选择keybd_event;
2. 当需要模拟键盘输入一串字符时,选择PostKeybdMessage;
3. 当需要模拟键盘输入单个字符时,选择keybd_event。
SendMessage(Button.Handle,WM_LBUTTONDOWN,0,0); 鼠标左键按下
SendMessage(Button.Handle,WM_LBUTTONUP,0,0); 鼠标左键抬起
SendMessage(Edit.Handle,WM_SETTEXT,255,Integer(PChar(‘abc’))); 传递文本
SendMessage(Edit.Handle,WM_Char,Wparam(‘Q’),2); 传递字符
SendMessage(