const int WM_KEYDOWN=0x100;
const int WM_KEYUP = 0x101;
const int WM_CHAR = 0x102;//KeyPress
//每次都要定义const int WM_XXXX=XXXX,有没有定义好的,直接用的,哪个命名空间中?
SendMessage(this.Handle, WM_KEYDOWN, 66, 1966081);
SendMessage(this.Handle, WM_KEYUP, 66, -1070596095);
//只发送上面两个不会引发KeyPress事件
SendMessage(this.Handle, WM_CHAR, 66, 1966081);//发送这个会引发KeyPress //----------------------
SendMessage(this.Handle, WM_KEYDOWN, 'B', 0);
SendMessage(this.Handle, WM_KEYUP, 'B', 0); SendMessage(this.Handle, WM_CHAR, 'B', 0);
//发送按键消息时,最后一个参数,是随便填的,还是有规定?
//通过重载窗口过程函数 WndProc(ref Message m),我看到
//比如:实际上当按“B”键时,系统会依次发送WM_KEYDOWN、WM_CHAR、WM_KEYUP三个消息
//但发送 WM_KEYDOWN、WM_CHAR消息时,m.LParam这个都是一样的:3145729,WM_KEYUP的这个值是:-1070596095
//每次都是这个样结果,貌似每个按键都有对应的一个LParam.
//很显然 发送按键消息时,SendMessage 最后一个参数,并不是随便填的(至少系统产生的消息是这样的)问题来了:
在哪个命名空间要可以直接引用WM_XXXX这样的值,或是没有,要自己定义?
发按键消息时,sendmessage的最后一个参数,有规定还是没有,如果有规定要怎么填
解决方案 »
- 请教:SendKeys.Send 为什么会随机发送几次?
- c#调用c++的dll,报出:尝试读取或写入受保护的内存。这通常指示其他内存已损坏
- 为什么我要点BUTTON13两次才能触发BUTTON1或BUTTON2的单击事件。
- 100分急求解决,画面弹出以后,任务栏上名字显示问题
- 反射功能大概了解一点,但怎么理解“反射”这个词和功能联系在一起
- 异步调用webservice,然后abort,但回调函数还是会被执行,咋搞的蔫?
- 启动调试(F5)出现这个?!请指教啊
- 在线急问...如何把一段文本转换成Cookie
- 如何解决datagrid失去焦点时有时数据不能自动保存到datatable里面的问题?
- pictureBox如何加快gif播放速度
- g.MeasureString()绘画机制好像不精准 有无更好的方法
- 从不同表中查到的字段如何显示在listview上
2 消息有规定的,按规定填;没有填0。 比如键盘消息,如果最后1个参数表示普通键ascii值,按a键就要填97,按b键就要填98.
参数 1:hWnd-窗口句柄。窗口可以是任何类型的屏幕对象。
参数 2:wMsg-用于区别其他消息的常量值.
参数 3:wParam-通常是一个与消息有关的常量值,也可能是窗口或控件的句柄.
参数 4: lParam-通常是一个指向内存中数据的指针。没有就是0
参数 4: lParam-通常是一个指向内存中数据的指针。没有就是0
最后两个参数说是这样说,但发送按键消息肯定是规定死的,第三个参数肯定填ascii值,系统也是这样产生消息,关键是这样的规定在哪里有说明,如果按照下面这样简单的规定,你能让一个初学者发送一个按键消息,并能让应用程序识别?
LRESULT SendMessage(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM IParam);
参数 1:hWnd-窗口句柄。窗口可以是任何类型的屏幕对象。
参数 2:wMsg-用于区别其他消息的常量值.
参数 3:wParam-通常是一个与消息有关的常量值,也可能是窗口或控件的句柄.
参数 4: lParam-通常是一个指向内存中数据的指针。没有就是0