我有一个进程A,启动一个进程B.我在A中加载一个鼠标光标,当鼠标在B窗口上时,我希望A改变鼠标光标。 可能吗?
当鼠标移到B上时,我试图从A中调用SetCursor ,但即使我在B中处理了WM_SETCURSOR消息,光标也不会改变。 我错过了什么吗?
当窗口在另一个窗口之上时,窗口可以控制鼠标的唯一方式是捕获鼠标(请参阅SetCapture ),或者设置系统鼠标,但是我非常怀疑要使用鼠标。
不幸的是,捕获鼠标意味着你将所有的鼠标事件发送到你的窗口,而不是他们的,所以他们的GUI是不可用的。
唯一的其他解决方案是API挂钩和代码注入到B中,您可以在其中管理任何消息,如WM_MOUSEMOVE,并从应用程序本身调用SetCursor,可能使用某种进程间通信方法从应用程序A中获取要设置的光标。
应用程序在控制自己的游标。 调用SetCursor()
不能从A不可能工作。 请注意, SetCursor()
没有指定要对哪个应用程序进行更改的参数。 这是因为更改是在调用应用程序中进行的。
您需要将代码注入B以实现所需的更改。
您可以使用SetClassLong
和GCL_HCURSOR
来更改子进程的默认游标。 这不会影响孩子使用SetCursor
显式更改其自己的光标时显示的内容,只是在未指定其他内容时显示的默认值。 警告:程序可能永远不会显示其默认光标,在这种情况下,这将不起任何作用。