Text aus einer anderen Anwendung
Möchte ich zum abrufen von text aus der textbox in meiner anderen Anwendung. "ProcessName" von der zweiten Anwendung ist 'TestTextBox', Textfeld ' name 'textBox1'.
Mein code, der gibt die leeren string:
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, long wParam, [MarshalAs(UnmanagedType.LPStr)] StringBuilder lParam);
Process[] processes = Process.GetProcessesByName("TestTextBox");
foreach (Process p in processes)
{
IntPtr pFoundWindow = p.MainWindowHandle;
const int WM_GETTEXT = 0x0D;
StringBuilder sb = new StringBuilder();
IntPtr retVal = SendMessage(pFoundWindow, WM_GETTEXT, 100, sb);
MessageBox.Show(sb.ToString());
}
LINQ steht noch auf meiner to-do-Liste... Auch die, so wie ich es verstehe, LINQ funktioniert nur unter .NET 3.5 oder höher. Aber dieser code sollte auf alle Art von Windows, einschließlich derer, die haben .NET 2.0
Wie würden Sie wie es zu optimieren ist die Verwendung von LINQ?
Wie würden Sie wie es zu optimieren ist die Verwendung von LINQ?
Process.GetProcesses().Any(p => p.ProcessName.Contains(processName));
oder etwas entlang jenen Linien. Und ah, wusste nicht, dass Sie benutzt wurden .NET 2!
InformationsquelleAutor sventevit | 2009-12-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Juni gab es eine Diskussion von wie finden Sie das handle eines untergeordneten Steuerelements, vielleicht, das hilft.
InformationsquelleAutor Doc Brown
Was ist der "andere Anwendung"? Ist es etwas, was Sie schreiben? Könnte es sein, läuft auf einer anderen Maschine? In einer anderen Domäne? Unter einem anderen Benutzerkonto? Könnte die Ziel-Applikation, form, oder textbox jemals ändern? Sie benötigen asynchrone (nicht-blockierende) Kommunikation zwischen den Anwendungen?
Wenn die Antwort auf eine dieser Fragen "ja" ist, sollten Sie erwägen,.Net Remoting. Dies ist verfügbar .Net 2.0.
InformationsquelleAutor Dour High Arch
Bekommen Sie die WindowHandle des Hauptformulars in den code, den Sie geschrieben, laut MSDN ein GETTEXT-Nachricht an ein Formular sollte wieder seinen Titel.
Wenn Sie möchten, um text aus einem Textfeld sollten Sie die übergabe der WindowHandle der TextBox als das erste argument.
Doc Brown ' s Kommentar sollte in der Lage sein, um Ihnen zu helfen, werden Sie wahrscheinlich haben, um aufzuzählen, über die Kind-Fenster und finden Sie einen Weg, um die TextBox, die Sie wollen, um text aus.
InformationsquelleAutor Kevin Wienhold
Könnten Sie Windows-API wie andere erwähnt haben, oder Sie könnte eine Bibliothek wie AutoIt , vielleicht machen die Aufgabe ein wenig leichter. Nicht sicher, was deine Anforderungen sind.
InformationsquelleAutor Cory Charlton