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#
Antwort
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.
Ich wusste nichts von diesem - behandelt es mehrere Bildschirme? –
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.
- 1. Erhalten Sie einen Screenshot einer bestimmten Anwendung
- 2. So rufen Sie eine externe Windows-Anwendung mit der Benutzeroberfläche durch eine C# -Anwendung auf?
- 3. Senden Sie eine Outlook-Besprechungsanfrage mit C#
- 4. C# -Anwendung CEF # Datei senden
- 5. C# senden Sie einen einfachen SSH-Befehl
- 6. Senden von Daten aus Silverlight-Anwendung an einen bestimmten Benutzer in Mvc-Anwendung
- 7. Senden von Tastenanschlägen an eine andere Anwendung C#
- 8. Senden Sie einen Doppelklick an eine Listview (C++, nicht. NET!)
- 9. Steuern Sie eine andere Anwendung mit C#
- 10. C++ senden Sie einen beliebigen Argumenttyp an eine Funktion
- 11. Wie kann man mit Robotium auf einen bestimmten Ort auf dem Bildschirm klicken?
- 12. Erstellen Sie einen Bildschirm, der freistehend ist, senden Sie ihm einen Befehl
- 13. So erstellen Sie einen automatischen Pfad für eine Java-Anwendung
- 14. Senden von Ping mit bestimmten Bytes Menge mit C#
- 15. Python Tkinter Anwendung fit auf dem Bildschirm
- 16. Senden Sie SMS mit C#
- 17. Wie Sie einen bestimmten ID mit Jquery
- 18. So skalieren (zoomen) Sie eine UIView auf einen bestimmten CGPoint
- 19. Problem Senden Sie einen bestimmten Wert in einem POST-Formular
- 20. Senden Sie eine E-Mail zum Bearbeiten, wenn eine Zelle einen bestimmten Wert enthält
- 21. Anwendung nicht den gesamten Bildschirm auf IPad
- 22. Senden Sie eine Nachricht an Skype-Gruppe mit Skype4com (C#)
- 23. C# Konsolenanwendung Senden von Befehlen an LCD-Bildschirm
- 24. So senden Sie MMS mit C#
- 25. Senden Sie Daten oder eine Datei an eine andere Anwendung auf dem Mac
- 26. So senden Sie eine E-Mail mit C# über Gmail
- 27. So senden Sie eine Remote-Benachrichtigung auf einer Schaltfläche Klicken Sie auf? Xamarin.Android C#
- 28. So tippen Sie auf einen bestimmten Punkt mit Xcode UITests
- 29. Drucken Sie einen txt auf den Standarddrucker mit C#
- 30. Wählen Sie einen bestimmten Konstruktor mit AutoFixture
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? –
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