2016-06-01 8 views
0

Nehmen wir an, wir haben ein Projekt in C#, das mit Hilfe eines Schaltflächentextes aus einer Textbox in eine Listbox eingefügt wird. Project 1Exchange ListBox-Elemente zwischen zwei separaten Projekten austauschen

Und jetzt kann sagen, wir haben ein zweites Projekt wo wir nicht über den Quellcode und wir würden die Einzelteile von unserem listbox zu jeder unabhängigen Textbox in Projekt-Nummer 2 Project 2

Sind senden möchten Gibt es einen möglichen Weg dies zu erreichen?

+5

Ja, gibt es ;-) – Joey

+0

Darf ich um eine Anleitung bitten, wie ist das möglich? –

+0

Nun Joey, du hast mich neugierig gemacht. –

Antwort

2

Ja, es gibt Möglichkeiten. Von den fehleranfälligen, aber einfach zu schreibenden Tastatureingaben in die Eingangswarteschlange der anderen Anwendung (SendKeys, kombiniert mit der anderen Anwendung den Tastaturfokus zuerst) zu den verfeinerten Möglichkeiten von UI Automation und direkt an der Windows-API zum Ändern der Inhalt der Textboxen durch Senden WM_SETTEXT. Dies hängt davon ab, wofür die andere Anwendung geschrieben ist (z. B. benutzerdefinierte UI-Frameworks verwenden häufig keine nativen Windows-Steuerelemente und unterstützen keine Eingabehilfen).

Der Ansatz von SendKeys kann durch Verwendung der Zwischenablage wesentlich robuster gemacht werden, insbesondere in Bezug auf Zeichen, die möglicherweise nicht auf der Tastatur vorhanden sind. Für eine einmalige Aufgabe würde ich das wahrscheinlich tun. Ich habe etwas Ähnliches einmal gemacht, um meine RSS-Feeds von einer Anwendung zu einer anderen zu migrieren, indem ich dies in PowerShell scripte. Wenn Sie Robustheit suchen, sollten Sie sich die anderen Optionen ansehen. UI Automation kann mühsam sein, aber mindestens bietet APIs, um direkt damit umzugehen (obwohl Sie eine Reihe von Konzepten aufgreifen müssten, um zu verstehen, wie Sie es verwenden können). Die Windows-API-Route erfordert, dass Sie ziemlich genau verstehen, wie Windows unter dem .NET-Framework funktioniert.

+0

Mit [WM_COPYDATA] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms649011%28v=vs.85%29.aspx) könnte auch möglich sein, aber Sie müssen Zugang zu den anderen Anwendungen Quellcode haben und implementieren, wenn Sie nicht haben, dass UIAutomation ist der Weg zu gehen – prizm1

+0

@ prizm1: Ich denke, Sie könnten auch eine Drag & Drop-Operation in diese Textfelder simulieren. Sie benötigen wahrscheinlich noch die Windows-API oder die UI-Automatisierung, um herauszufinden, wo sie sich befinden. IMEs oder so etwas wie Windows Math Input Panel funktionieren wahrscheinlich ähnlich, um Eingaben an beliebige Anwendungen zu senden. – Joey

+0

Ja, es geht alles um Programmierung;) – prizm1