Я пытаюсь извлечь текст из другого приложения. На данный момент это приложение может быть простым, я просто хочу, чтобы он работал (на данный момент).Не удается получить текст из другого приложения (окно)
код я использую:
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 "";
}
}
Я называю этот код с помощью:
IntPtr MytestHandle = new IntPtr(0x00788600);
HandleRef hrefHWndTarget = new HandleRef(null, MytestHandle);
где 0x00788600
является примером одного из приложений, которые я бегу (я 100% уверен, что это главный дескриптор окна).
Мне нужно, чтобы текст из одного текстового поля внутри «другой» приложения, но когда я использую мой код он возвращает пустую строку каждый раз, когда
Предложения?
Что именно все эти жестко закодированные магических чисел должны делать? Что заставляет вас думать, что номер, который вы используете как HWND, на самом деле является допустимым дескриптором окна? (Да, я читал * Я на 100% уверен *, но потому, что вы так говорите, не делает это правдой - что делает [IsWindow] (https://msdn.microsoft.com/en-us/library/windows/ desktop/ms633528 (v = vs.85) .aspx) say ?.) –