4

我如何将不是我的应用程序(想想:任何第 3 方应用程序)的应用程序(想想 WM_ 消息?)发送到多屏系统上的不同屏幕?是否有我可以发送到窗口或进程句柄的特定 Windows 消息代码来执行此操作?

4

2 回答 2

1

我从来没有尝试过,但是使用WM_MOVE怎么样?SendMessage功能将允许您发送所需的消息。由于您已将问题标记为使用 C#,因此您必须使用 p/invoke 才能使用它。这是一个例子

至于获取屏幕位置和大小,请参阅 .Net 库中的Screen类。有一个名为FromHandle()的函数和一个名为AllScreens的属性,它返回用户拥有的所有有效屏​​幕的数组。FromHandle() 将告诉您应用程序当前占用的屏幕最多(这在您的情况下可能有用,也可能没有用)。这将允许您在将消息发送到该应用程序之前计算第三方应用程序的所需位置。

于 2009-08-20T21:57:51.113 回答
1

您需要使用 P/Invoke 和MoveWindow函数。

编辑:它可以很好地处理多个屏幕。 MoveWindow将您的屏幕视为一个大显示器,并相应地接受参数。您可以使用 .Net Screen 类查找所需屏幕的边界,然后调用MoveWindow以获取所需的窗口。

此外,如果您没有意识到这一点,您的项目很可能也需要该FindWindowByCaption功能。

于 2009-08-20T22:05:40.957 回答