2009-08-20 164 views
4

我的应用程序(想想:任何第三方应用程序)发送到多屏幕系统上不同屏幕的应用程序(想WM_消息?)而不是?是否有一个特定的Windows消息代码,我可以发送到窗口或进程句柄来做到这一点?使用C#将应用程序发送到特定的屏幕

+0

你可能会编辑你的问题 - “不是当前的应用程序”令人困惑。你是指一个应用程序来控制另一个应用程序的位置? – 2009-08-20 21:47:40

+0

我编辑了我的问题来澄清。我的意思是任何第三方应用程序,而不是我正在编写的应用程序,因此我无法控制源代码。 – Alex 2009-08-20 21:49:45

回答

1

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

编辑:它处理多个屏幕就好了。 MoveWindow将您的屏幕视为一个大显示屏,并据此提供参数。您可以使用.Net屏幕类查找所需屏幕的边界,然后致电MoveWindow以获取您想要的窗口。另外,如果您不知道它,很可能您的项目可能也需要FindWindowByCaption函数。

+0

我不知道这个 - 它处理多个屏幕? – 2009-08-20 22:08:40

1

我从来没有试过这个,但如何使用WM_MOVESendMessage函数将允许您发送所需的消息。由于您已将问题标记为使用C#,因此您必须使用p/invoke来使用它。这是一个example

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

相关问题