Ich versuche, Text aus einer anderen Anwendung zu extrahieren. Diese Anwendung kann im Moment einfach sein, ich möchte nur, dass es funktioniert (vorerst).Text kann nicht aus einer anderen Anwendung (Fenster) abgerufen werden
Der Code ich benutze:
public static class ModApi
{
[DllImport("user32.dll", EntryPoint = "SendMessageTimeout", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern uint SendMessageTimeoutText(IntPtr hWnd, int Msg, int countOfChars, StringBuilder text, uint flags, uint uTimeoutj, uint result);
public static string GetText(IntPtr hwnd)
{
var text = new StringBuilder(1024);
if (SendMessageTimeoutText(hwnd, 0xd, 1024, text, 0x2, 5000, 0) != 0)
{
return text.ToString();
}
MessageBox.Show(text.ToString());
return "";
}
}
ich diesen Code aufrufen mit:
IntPtr MytestHandle = new IntPtr(0x00788600);
HandleRef hrefHWndTarget = new HandleRef(null, MytestHandle);
wo 0x00788600
ist ein Beispiel für eine der Anwendungen, die ich laufen bin (ich bin 100% sicher dass dies der Hauptfenstergriff ist).
Ich brauche den Text aus einem Textfeld in der „anderen“ Anwendung haben, aber wenn ich meinen Code verwenden, gibt es eine leere Zeichenfolge jedes Mal
Verbesserungsvorschläge?
Was genau sind alle diese hartcodierte magischen Zahlen tun soll? Was lässt Sie glauben, dass die Nummer, die Sie als HWND verwenden, tatsächlich ein gültiges Fensterhandle ist? (Ja, ich lese * ich bin 100% sicher *, aber weil du sagst, dass es nicht wahr ist - was macht [IsWindow] (https://msdn.microsoft.com/en-us/library/windows/ desktop/ms633528 (v = vs.85) .aspx) sag ?.) –