2009-08-20 14 views
4

Wie könnte ich eine Anwendung senden (think WM_ Nachrichten?), Die nicht meine Anwendung (Think: jede 3rd Party App) auf einen anderen Bildschirm auf einem Multiscreen-System? Gibt es einen bestimmten Windows-Nachrichtencode, den ich an das Fenster oder den Prozess-Handle senden kann, um dies zu tun?Senden Sie eine Anwendung auf einen bestimmten Bildschirm mit C#

+0

Sie könnten Ihre Frage bearbeiten - "nicht die aktuelle Anwendung" ist verwirrend. Meinst du für eine Anwendung, den Standort einer anderen Anwendung zu steuern? –

+0

Ich habe meine Frage zur Klärung bearbeitet. Ich meine jede Anwendung von Drittanbietern, nicht die, die ich schreibe, daher eine, die ich nicht Kontrolle über w/Quellcode habe. – Alex

Antwort

1

Sie sollten P/Invoke und die MoveWindow Funktion verwenden.

Bearbeiten: Es behandelt mehrere Bildschirme einwandfrei. MoveWindow sieht Ihre Bildschirme als ein großes Display und nimmt Argumente entsprechend. Sie können die .NET-Screen-Klasse verwenden, um die Grenzen des gewünschten Bildschirms zu finden, und rufen Sie dann MoveWindow, um das Fenster zu erhalten, wo Sie es möchten.

Auch, wenn Sie nicht bewusst waren, gibt es eine gute Chance, dass Ihr Projekt wird wahrscheinlich auch die FindWindowByCaption Funktion benötigen.

+0

Ich wusste nichts von diesem - behandelt es mehrere Bildschirme? –

1

Ich habe das noch nie versucht, aber wie wäre es mit WM_MOVE? Mit der Funktion SendMessage können Sie die erforderliche Nachricht senden. Da Sie Ihre Frage mit C# markiert haben, müssen Sie p/invoke verwenden, um sie zu verwenden. Hier ist ein example.

Informationen zum Abrufen von Bildschirmpositionen und -größen finden Sie in der Klasse Screen in der .Net-Bibliothek. Es gibt eine Funktion namens FromHandle() und eine Eigenschaft namens AllScreens, die ein Array aller gültigen Bildschirme zurückgibt, die der Benutzer besitzt. FromHandle() sagt Ihnen, welchen Bildschirm die App derzeit am häufigsten belegt (dies kann in Ihrem Fall nützlich sein oder nicht). Auf diese Weise können Sie den gewünschten Standort der Drittanbieteranwendung berechnen, bevor Sie die Nachricht an diese Anwendung senden.

Verwandte Themen