Ich habe eine .net-basierte Windows-Anwendung, die im Speicher ausgeführt wird. Ich möchte eine der Funktionen in der App von einer externen Anwendung auslösen, die nicht auf .net basiert ist. Wie kann ich das erreichen? Das Auslösen sollte in Echtzeit erfolgen.Wie wird eine bereits laufende .net-basierte Windows-Anwendung ausgelöst?
Antwort
Die Verwendung von Sockets funktioniert. Named Pipes funktionieren auch.
Lassen Sie die erste App auf einem TCP-Port abhören. Stellen Sie sicher, dass die zweite Anwendung mit dem TCP-Port verbunden ist und senden Sie "WAY UP LAZY PROGRAM". Lass die erste App darauf reagieren, indem du etwas tust.
Sie können keine XML-Nachrichtenzeichenfolge an .net-Anwendung senden, die an einem bestimmten Port von der Nicht-.net-Anwendung abhört. Durch das Analysieren dieser XML-Nachricht können Sie die spezifische Funktion in der .net-Anwendung aufrufen.
Eine wilde Vermutung.
dank 123Developer
Wenn das Programm, das ich nicht .net wurde vorschlagen zu senden würde oder ein Fenster Nachricht Setzung: PostMessage
und RegisterWindowMessage
sehen. Um eine solche Nachricht im .net-Programm zu erhalten, müssen Sie möglicherweise PInvoice RegisterWndowMessage
, und überschreiben Sie Ihre WndProc
.
Eine andere gute Möglichkeit ist, einen benannten Mutex zu teilen.
Sie sollten definieren, was Sie mit "Echtzeit" meinen: Einerseits ist unter Windows nichts in Echtzeit und andererseits, wenn Sie anfangen, davon abzuweichen und stattdessen "fast Echtzeit" zu sagen oder "Soft Real Time" werden dann viele Lösungen möglich.
Message-Passing ist wahrscheinlich der Weg zu gehen. Unter Verwendung Steckdosen funktionieren würden als gut, aber
a) könnten Sicherheitslücken öffnen, und
b) könnte ein Problem mit Firewall-Software auf einigen Maschinen sein.
Codeproject hat eine Probe mit .NET Remoting/IPC:
- 1. Wie wird ArrayIndexOutOfBoundsException ausgelöst?
- 2. Hat window.onload Ereignis bereits ausgelöst
- 3. Wie kann ich überprüfen, ob bereits eine Ausnahme ausgelöst wurde?
- 4. Wie wird StSearch ausgelöst?
- 5. Wie oft wird onunload ausgelöst?
- 6. Laufende Prozessauflistung
- 7. Fehler 404 Wird durch eine Ansicht ausgelöst
- 8. SQLCommand.ExecuteScalar() - warum wird eine System.NullReferenceException ausgelöst?
- 9. Wie öffne ich eine laufende Aktivität mit einer Benachrichtigungsaktion?
- 10. OnNavigatedTo wird nicht ausgelöst?
- 11. PostAuthenticateRequest wird mehrmals ausgelöst
- 12. commitEditingStyle wird nicht ausgelöst
- 13. SqlDependency wird sofort ausgelöst
- 14. Wie eine Ausnahme von einem Enum-Konstruktor ausgelöst wird?
- 15. Wie wird eine Ausnahme 401 (Unauthorized Access) in Sharepoint ausgelöst?
- 16. Wie überprüfe ich mit QTest, dass eine Ausnahme ausgelöst wird?
- 17. wie eine Funktion am definierten Datum ausgelöst wird
- 18. Kann überprüft werden, ob eine Angular App bereits über laufende App-Module verfügt?
- 19. Verhindern, dass Klickereignis ausgelöst wird, wenn dblclick-Ereignis ausgelöst wird
- 20. Wenn Validierungsausnahme ausgelöst wird?
- 21. Wann wird `componentDidMount` ausgelöst?
- 22. js.erb wird nicht ausgelöst
- 23. Eine java.net.ConnectException wird ausgelöst, wenn HttpURLConnection verwendet wird
- 24. Validierungsmeldung wird weiterhin angezeigt, wenn eine Autopostback-Dropdownliste ausgelöst wird
- 25. LoadControlState wird nicht ausgelöst
- 26. daterangepicker wird nicht ausgelöst
- 27. JQGrid Sortierung - wie onSortCol Ereignis ausgelöst wird
- 28. Windows FONDUE - wie wird es ausgelöst?
- 29. Wie onProgressChanged() pro Segment ausgelöst wird
- 30. Codename One: Wie wird eine laufende Summe für jede Schaltflächeniteration berechnet?
+1 für den gemeinsamen Namen Veranstaltung, die so lange wirklich einfach sein würde, wie die Anwendungen auf der gleichen Maschine laufen . (Sie sagen Mutex, aber ich nehme an, Sie meinen Ereignis) – Andomar