急急急,关于给窗口发鼠标键盘消息的问题,高手进来看看!急死人了

sun900 2004-11-22 02:55:09
我可以给窗口发鼠标左键消息,但是发鼠标右键却没有反应,这怎么回事?
如果窗口有焦点就可以发右键消息,请问发右键消息窗口一定要有焦点吗? 那左键不要焦点怎么就可以发消息?

还有可以给窗口发单击键,但是发组合键也是没有反应,组合键的消息好像有5条,我怎么就是发不出去,望高手赐教!
...全文
205 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun900 2004-12-09
  • 打赏
  • 举报
回复
zhaojian666(zhaojian666)

--------
那为什么输入单字符就可以不用焦点呢? 比如输入字符A
但是组合键ALT + A 就必须要焦点
hejian29 2004-12-07
  • 打赏
  • 举报
回复
GOOD
zhaojian666 2004-12-07
  • 打赏
  • 举报
回复
组合键的消息:
WM_SYSKEYDOWN 按下组合键
WM_SYSKEYUP 松开组合键
当一个按键的组合产生了一个可以显示的字符时就产生了一个字符消息
WM_SYSCHAR 系统字符
WM_SYSDEADCHAR 系统死字符
当在一个窗口建立键盘输入时,是必须提供课可视提示的,应该要用到焦点的
sun900 2004-12-06
  • 打赏
  • 举报
回复
楼上的这个不可以,要用消息模式的,而且窗口还不是有焦点的情况下
qrlvls 2004-11-25
  • 打赏
  • 举报
回复
mouse_event
kbd_event // 记不清是不是这样写的了
sun900 2004-11-25
  • 打赏
  • 举报
回复
PostMessage (IntPtr hWnd,int wMsg,IntPtr wParam,IntPtr lParam);

Windows编程参考--消息!
--------------------------------------------------------------------------------

消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。
消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的:

type
TMsg = packed record
hwnd: HWND; //窗口句柄
message: UINT;//消息常量标识符
wParam: WPARAM ;// 32位消息的特定附加信息
lParam: LPARAM ;// 32位消息的特定附加信息
time: DWORD;//消息创建时的时间
pt: TPoint; //消息创建时的鼠标位置
end ;

消息中有什么?
是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可
视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也
可以是自定义的常量。
wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam 通常是一个指向内存中数据的指针。由于WParam、lParam和Pointer都是32位的,因此,它们之间可以相互转换。

WM_MOUSEFIRST = $0200 //
WM_MOUSEMOVE= $0200 //移动鼠标
WM_LBUTTONDOWN= $0201 //按下鼠标左键
WM_LBUTTONUP= $0202 //释放鼠标左键
WM_LBUTTONDBLCLK= $0203 //双击鼠标左键
WM_RBUTTONDOWN= $0204 //按下鼠标右键
WM_RBUTTONUP= $0205 //释放鼠标右键
WM_RBUTTONDBLCLK= $0206 //双击鼠标右键
WM_MBUTTONDOWN= $0207 //按下鼠标中键
WM_MBUTTONUP= $0208 //释放鼠标中键
WM_MBUTTONDBLCLK= $0209 //双击鼠标中键
WM_KEYDOWN= $0100 //按下一个键
WM_KEYUP= $0101 //释放一个键
WM_CHAR = $0102 //按下某键,并已发出WM_KEYDOWN,WM_KEYUP消息

PostMessage (IntPtr hWnd,int wMsg,IntPtr wParam,IntPtr lParam);

------------------------
用上面这个函数

其它都可以,就是鼠标右键需要窗口有焦点才可以,还有组合键不能发送

请高手帮我看下!



harbin1981 2004-11-25
  • 打赏
  • 举报
回复
请问你是怎样发送鼠标动作,麻烦告知,我也在编一个类似的程序
sun900 2004-11-23
  • 打赏
  • 举报
回复
up
sun900 2004-11-22
  • 打赏
  • 举报
回复
那不就完蛋了,我的程序要给多个窗口发右键消息,难道给哪个窗口发右键消息就要先给哪个窗口设置焦点吗? 键盘的组合键也是这样吗? 你能说下组合键的5条消息都是什么吗? 我按照Spy++上的数据发给窗口没有反应
老夏Max 2004-11-22
  • 打赏
  • 举报
回复
呵呵,应该对于右键消息,可能需要在一定的焦点的情况下,才有效!
sun900 2004-11-22
  • 打赏
  • 举报
回复
可以先告诉我发鼠标右键消息窗口一定要有焦点吗?
老夏Max 2004-11-22
  • 打赏
  • 举报
回复
如果可以的话,可以将程序发到:xia_qingqi@broadxent.com.cn
我帮你看看!注明帖子的URL!

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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