HWND hWindow; // окно "Калькулятор Плюс"
HWND hEdit; // окно ввода в "Калькулятор Плюс"
hWindow = FindWindow(NULL, "Калькулятор Плюс");
hEdit = FindWindowEx( hWindow, NULL, "Edit", NULL);
dl_mess = GetWindowTextLength(hEdit);
GetWindowText(hEdit, my_buff, 255);
Не получается взять из "Калькулятор Плюс"
Код:
извини канеш... а ты поиск окошка сделал? =) ты уверен, что ты именно его нашёл? =)
Что нашел, уверен. Видно при трассировке. В самодельных программках все OK, а из "Калькулятор Плюс" текст из окна взять не могу!
А GetLastError что говорит?
Цитата:
This function cannot retrieve the text of an edit control in another application.
Вот поэтому Вы и не получаете строку из edit'a калькулятора. Поэтому лучше воспользоваться посылкой сообщения WM_GETTEXT, обработка которого гарантирует успешный результат. Единственным ограничением использования этого сообщения является тот случай, когда Вы пытается запросить текст окна у зависшего приложения, что приводит (не всегда) к зависанию и Вашего приложения. В этом плане надежнее использовать функцию GetWindowText(). Обойти это ограничение позволяет отправка сообщения WM_GETTEXT посредством функции SendMessageTimeout().
сделал исправления, не помогает
Код:
char addr[50];
SendMessage(hEdit, WM_GETTEXT, 0, (int)addr);
SendMessage(hEdit, WM_GETTEXT, 0, (int)addr);
Подумайте логично, что такое (int)addr, и куда будет записан запрашиваемый текст, и попробуйте самостоятельно сделать исправление :)
Цитата: asmel
SergPas
сделал исправления, не помогает
сделал исправления, не помогает
Код:
char addr[50];
SendMessage(hEdit, WM_GETTEXT, 0, (int)addr);
SendMessage(hEdit, WM_GETTEXT, 0, (int)addr);
MSDN хоть иногда читайте...
wParam - определяет максимальное число копируемых символов, включая терминальный нуль (размер буфера);
lParam - указатель на буфер с текстом.
Цитата: Dart Bobr
Любопытное исправление.
Подумайте логично, что такое (int)addr, и куда будет записан запрашиваемый текст, и попробуйте самостоятельно сделать исправление :)
Подумайте логично, что такое (int)addr, и куда будет записан запрашиваемый текст, и попробуйте самостоятельно сделать исправление :)
Хе, опередил... ;)
Все, что мне выдает MSDN
hWnd
[in] Handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.
Msg
[in] Specifies the message to be sent.
wParam
[in] Specifies additional message-specific information.
lParam
[in] Specifies additional message-specific information.
Return Value
И потом, я просил сильно меня не мочить, я еще только учусь.
Вы смотрите раздел справки по функции SendMessage, а надо по сообщению WM_GETTEXT.
последний вариант
SendMessage(hEdit, WM_GETTEXT, 100, *addr);
приводит к ошибке
Код:
SendMessage(hEdit, WM_GETTEXT, (WPARAM)sizeof(addr), (LPARAM)addr);
Код:
char mel[50] = "0";
hWindow = FindWindow(NULL, "Калькулятор Плюс");
hEdit = FindWindowEx( hWindow, NULL, "Edit", NULL);
SendMessage(hEdit, WM_GETTEXT, 10, (int)mel);
hWindow = FindWindow(NULL, "Калькулятор Плюс");
hEdit = FindWindowEx( hWindow, NULL, "Edit", NULL);
SendMessage(hEdit, WM_GETTEXT, 10, (int)mel);
код, который все сделал так, как я хотел, как говорится практика критерий истины. Еще раз спасибо!