Вот кусок моей програмки:
hndlr = (HWND)0x00010bb4; // это дескриптор элемента Edit в другом приложении
LRESULT lresult = SendMessage(hndlr,WM_SETTEXT,0,Integer(PChar('1234')));
Я упростил все донельзя. Вообще-то мне желательно получать дескриптор окна другого приложения на экране (и не через перебор свойств окон с помощью FindWindow, а по тычку мышки :), но я уже узнал дескриптор нужного мне элемента с помощью сторонней програмки. Мне просто нужно элементарно перебрать пароли в Edit'e некого приложения, для чего я решил воспользоваться SendMessage.
Не работает!!
SendMessage в приведенном примере не копирует строку в Edit и lresult возвращает 0... В чем же дело? Замучался!! :((
[]
NAV>SendMessage в приведенном примере не копирует строку в Edit и lresult возвращает 0... В чем же дело? Замучался!! (
Странно что оно утебя вааще не падает. Ты в чужое приложение передаешь указатель на данные, которые находяться в адресном пространстве твоего прилдожения.
Подробнее об этом (и как ето сделать) читай у Рихтера. Кроме того на етом сайте тоже были примеры.
Здравствуйте, NAV, Вы писали:
NAV>Привет всем!
NAV>Вот кусок моей програмки: NAV>hndlr = (HWND)0x00010bb4; // это дескриптор элемента Edit в другом приложении NAV>LRESULT lresult = SendMessage(hndlr,WM_SETTEXT,0,Integer(PChar('1234')));
NAV>Я упростил все донельзя. Вообще-то мне желательно получать дескриптор окна другого приложения на экране (и не через перебор свойств окон с помощью FindWindow, а по тычку мышки , но я уже узнал дескриптор нужного мне элемента с помощью сторонней програмки. Мне просто нужно элементарно перебрать пароли в Edit'e некого приложения, для чего я решил воспользоваться SendMessage.
NAV>Не работает!!
NAV>SendMessage в приведенном примере не копирует строку в Edit и lresult возвращает 0... В чем же дело? Замучался!! (
Попробуй то же самое с обычным, а не запароленым эдитом. По-моему, запароленые немного отличаются от всех прочих.
P>Странно что оно утебя вааще не падает. Ты в чужое приложение передаешь указатель на данные, которые находяться в адресном пространстве твоего прилдожения. P>Подробнее об этом (и как ето сделать) читай у Рихтера. Кроме того на етом сайте тоже были примеры.
не работает почему-то ((
P>ЗЫ. И вообще, подбирать пароли не кошерно как то
Ну, а как быть, если отследить SoftIce'ом не получилось? Уж больно много они там намудрили с генерацией пароля... (
А все потому, что кейгенщики тормозят — весь инет уже облазил, не нашел кейгена...
Здравствуйте, Patalog, Вы писали:
P>Здравствуйте, NAV, Вы писали:
P>[]
NAV>>SendMessage в приведенном примере не копирует строку в Edit и lresult возвращает 0... В чем же дело? Замучался!! (
P>Странно что оно утебя вааще не падает. Ты в чужое приложение передаешь указатель на данные, которые находяться в адресном пространстве твоего прилдожения. P>Подробнее об этом (и как ето сделать) читай у Рихтера. Кроме того на етом сайте тоже были примеры.
Здравствуйте, Whisperer, Вы писали:
W>Смотрим протопир
W>LRESULT SendMessage(HWND hWnd, W> UINT Msg, W> WPARAM wParam, W> LPARAM lParam W>);
W>И где здесь указатели ? а hWnd — он для всей системы.
Ладно, фиг с ними, с указателями. Процитируем пример Рихтера:
SendMessage(FindWindow(NULL, "Calculator"), WM_SETTEXT, 0, (LPARAM) "A test caption");
Как вариант, попробуй создавать текстовую переменную, задавать ей значение и подставлять в качестве LPARAM
LY>>SendMessage(FindWindow(NULL, "Calculator"), WM_SETTEXT, 0, (LPARAM) "A test caption");
LY>>
LY>>Как вариант, попробуй создавать текстовую переменную, задавать ей значение и подставлять в качестве LPARAM
NAV>Хы! Ну так с кэпшан окна у меня проблем нет — все работает, а мне ведь надо в Edit занести строку! А это-то и не получается... (
NAV>А ведь сделать этом можно — у меня есть програмка Customizer (наверное, знаете такую) — все заносится!
Так, а мозгами подумать? Сообщение другое попробовать?
Здравствуйте, NAV, Вы писали:
NAV>Хы! Ну так с кэпшан окна у меня проблем нет — все работает, а мне ведь надо в Edit занести строку! А это-то и не получается... (
NAV>А ведь сделать этом можно — у меня есть програмка Customizer (наверное, знаете такую) — все заносится!
Хрю... Подсказываю, ключевое слово здесь не FindWindow и caption. а (LPARAM)"text for window"
Здравствуйте, NAV, Вы писали:
NAV>ВСЕ РАБОТАЕТ!
NAV>Дело оказалось в формате строки lParam...
NAV>Никогда бы не подумал... Я сегодня в форумах сто раз встречал такой формат строки, какой, оказывается, и послужил причиной неработы програмки...
А поподробнее можно? Что бы другим не пришлось потом лбом стену пробивать.
Есть некоторые ограничения на использование SendMessage, правда для некоторых типов cообщений только. Вот статья в тему: Win32: Postmessage API security flaw
Как раз на тему паролей статейка.
Здравствуйте, Whisperer, Вы писали:
W>И о каких указателях идет речь ? W>Смотрим протопир
W>LRESULT SendMessage(HWND hWnd, W> UINT Msg, W> WPARAM wParam, W> LPARAM lParam W>);
W>И где здесь указатели ? а hWnd — он для всей системы.
В lParam как раз и передается указатель на строку в адресном пространстве процесса. А пример с калькулятором работает потому что микрософт для некоторых сообщений сама сделала заплатку — копирование строки в адресное пространство нужного процесса и преобразование lParam. Сделал в угоду совместимости со старыми win3.1 программами. Это тоже было в Рихтере. К сожалению не для всех сообщений она это сделала, лень что-ли было??
Здравствуйте, Whisperer, Вы писали:
[]
W>И о каких указателях идет речь ? W>Смотрим протопир
W>LRESULT SendMessage(HWND hWnd, W> UINT Msg, W> WPARAM wParam, W> LPARAM lParam W>);
W>И где здесь указатели ? а hWnd — он для всей системы.
[]
OE>конкретно для сообщения WM_SETTEXT строка копируется в проекцию файла и таким образом делается доступной в адресном пространстве другого процесса
"Спасибо, мне уже доложили" (с)
А ответ был на
И где здесь указатели ? а hWnd — он для всей системы.
Здравствуйте, LantY, Вы писали: LY>А поподробнее можно? Что бы другим не пришлось потом лбом стену пробивать.
Надо думать строка была паскалевская, а не зеро терминэйтед. Или вообще один символ NAV>LRESULT lresult = SendMessage(hndlr,WM_SETTEXT,0,'1234');
Компилятор-то такое проглотит?