SendMessage не работает... :(((
От: NAV  
Дата: 19.03.03 14:38
Оценка:
Привет всем!

Вот кусок моей програмки:
hndlr = (HWND)0x00010bb4; // это дескриптор элемента Edit в другом приложении
LRESULT lresult = SendMessage(hndlr,WM_SETTEXT,0,Integer(PChar('1234')));

Я упростил все донельзя. Вообще-то мне желательно получать дескриптор окна другого приложения на экране (и не через перебор свойств окон с помощью FindWindow, а по тычку мышки :), но я уже узнал дескриптор нужного мне элемента с помощью сторонней програмки. Мне просто нужно элементарно перебрать пароли в Edit'e некого приложения, для чего я решил воспользоваться SendMessage.

Не работает!!

SendMessage в приведенном примере не копирует строку в Edit и lresult возвращает 0... В чем же дело? Замучался!! :((
Re: SendMessage не работает... :(((
От: Patalog Россия  
Дата: 19.03.03 14:42
Оценка: 15 (2)
Здравствуйте, NAV, Вы писали:

[]

NAV>SendMessage в приведенном примере не копирует строку в Edit и lresult возвращает 0... В чем же дело? Замучался!! (


Странно что оно утебя вааще не падает. Ты в чужое приложение передаешь указатель на данные, которые находяться в адресном пространстве твоего прилдожения.
Подробнее об этом (и как ето сделать) читай у Рихтера. Кроме того на етом сайте тоже были примеры.

ЗЫ. И вообще, подбирать пароли не кошерно как то
Почетный кавалер ордена Совка.
Re: SendMessage не работает... :(((
От: SergH Россия  
Дата: 19.03.03 14:44
Оценка:
Здравствуйте, 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... В чем же дело? Замучался!! (


Попробуй то же самое с обычным, а не запароленым эдитом. По-моему, запароленые немного отличаются от всех прочих.
Делай что должно, и будь что будет
Re[2]: SendMessage не работает... :(((
От: NAV  
Дата: 19.03.03 15:13
Оценка:
P>Странно что оно утебя вааще не падает. Ты в чужое приложение передаешь указатель на данные, которые находяться в адресном пространстве твоего прилдожения.
P>Подробнее об этом (и как ето сделать) читай у Рихтера. Кроме того на етом сайте тоже были примеры.

Похоже, что дело не в этом. У меня даже

void __fastcall TForm1::Edit1Click(TObject *Sender)
{
hndlr = ::GetFocus();
LRESULT lresult = SendMessage(hndlr,WM_SETTEXT,0,'1234');
}

не работает почему-то ((

P>ЗЫ. И вообще, подбирать пароли не кошерно как то


Ну, а как быть, если отследить SoftIce'ом не получилось? Уж больно много они там намудрили с генерацией пароля... (
А все потому, что кейгенщики тормозят — весь инет уже облазил, не нашел кейгена...
Re[2]: SendMessage не работает... :(((
От: NAV  
Дата: 19.03.03 15:14
Оценка:
SH>Попробуй то же самое с обычным, а не запароленым эдитом. По-моему, запароленые немного отличаются от всех прочих.

А он там как раз незапароленный...
Re[2]: SendMessage не работает... :(((
От: Whisperer  
Дата: 19.03.03 15:16
Оценка: 6 (1)
Здравствуйте, Patalog, Вы писали:

P>Здравствуйте, NAV, Вы писали:


P>[]


NAV>>SendMessage в приведенном примере не копирует строку в Edit и lresult возвращает 0... В чем же дело? Замучался!! (


P>Странно что оно утебя вааще не падает. Ты в чужое приложение передаешь указатель на данные, которые находяться в адресном пространстве твоего прилдожения.

P>Подробнее об этом (и как ето сделать) читай у Рихтера. Кроме того на етом сайте тоже были примеры.

Вы не правы ! Перечитайте лучшее еще Рихтера

И о каких указателях идет речь ?
Смотрим протопир

LRESULT SendMessage(HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

И где здесь указатели ? а hWnd — он для всей системы.


P>ЗЫ. И вообще, подбирать пароли не кошерно как то


А вот с этим я согласен.
Re[3]: SendMessage не работает... :(((
От: Whisperer  
Дата: 19.03.03 15:26
Оценка:
Здравствуйте, NAV, Вы писали:

[skip]

UINT Msg = WM_SETTEXT;
WPARAM wParam = 0;
char ff[4] = "dd\0";
LRESULT h = SendMessage((HWND)0x00290774,Msg,wParam,(long)ff);

Пример который работает — вводит данные в окно калькулятора ((HWND)0x00290774 это его.
Re[3]: SendMessage не работает... :(((
От: LantY Россия icq:56949749
Дата: 19.03.03 15:39
Оценка:
Здравствуйте, 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
С уважением, Дмитрий.
Re[4]: SendMessage не работает... :(((
От: NAV  
Дата: 19.03.03 17:10
Оценка:
LY>
LY>SendMessage(FindWindow(NULL, "Calculator"), WM_SETTEXT, 0, (LPARAM) "A test caption");
LY>


LY>Как вариант, попробуй создавать текстовую переменную, задавать ей значение и подставлять в качестве LPARAM


Хы! Ну так с кэпшан окна у меня проблем нет — все работает, а мне ведь надо в Edit занести строку! А это-то и не получается... (

А ведь сделать этом можно — у меня есть програмка Customizer (наверное, знаете такую) — все заносится!
Re[5]: SendMessage не работает... :(((
От: SergH Россия  
Дата: 19.03.03 17:18
Оценка:
Здравствуйте, NAV, Вы писали:

LY>>
LY>>SendMessage(FindWindow(NULL, "Calculator"), WM_SETTEXT, 0, (LPARAM) "A test caption");
LY>>


LY>>Как вариант, попробуй создавать текстовую переменную, задавать ей значение и подставлять в качестве LPARAM


NAV>Хы! Ну так с кэпшан окна у меня проблем нет — все работает, а мне ведь надо в Edit занести строку! А это-то и не получается... (


NAV>А ведь сделать этом можно — у меня есть програмка Customizer (наверное, знаете такую) — все заносится!


Так, а мозгами подумать? Сообщение другое попробовать?
Делай что должно, и будь что будет
Re: SendMessage не работает... :(((
От: NAV  
Дата: 19.03.03 17:19
Оценка:
ВСЕ РАБОТАЕТ!

Дело оказалось в формате строки lParam...

Никогда бы не подумал... Я сегодня в форумах сто раз встречал такой формат строки, какой, оказывается, и послужил причиной неработы програмки...
Re[5]: SendMessage не работает... :(((
От: LantY Россия icq:56949749
Дата: 20.03.03 04:37
Оценка:
Здравствуйте, NAV, Вы писали:

NAV>Хы! Ну так с кэпшан окна у меня проблем нет — все работает, а мне ведь надо в Edit занести строку! А это-то и не получается... (


NAV>А ведь сделать этом можно — у меня есть програмка Customizer (наверное, знаете такую) — все заносится!


Хрю... Подсказываю, ключевое слово здесь не FindWindow и caption. а (LPARAM)"text for window"
С уважением, Дмитрий.
Re[2]: SendMessage не работает... :(((
От: LantY Россия icq:56949749
Дата: 20.03.03 04:39
Оценка:
Здравствуйте, NAV, Вы писали:

NAV>ВСЕ РАБОТАЕТ!


NAV>Дело оказалось в формате строки lParam...


NAV>Никогда бы не подумал... Я сегодня в форумах сто раз встречал такой формат строки, какой, оказывается, и послужил причиной неработы програмки...


А поподробнее можно? Что бы другим не пришлось потом лбом стену пробивать.
С уважением, Дмитрий.
Re: SendMessage не работает... :(((
От: Димчанский Литва http://dimchansky.github.io/
Дата: 20.03.03 07:19
Оценка:
Есть некоторые ограничения на использование SendMessage, правда для некоторых типов cообщений только. Вот статья в тему: Win32: Postmessage API security flaw
Как раз на тему паролей статейка.
Re[3]: SendMessage не работает... :(((
От: Demiurg  
Дата: 20.03.03 11:27
Оценка:
Здравствуйте, Whisperer, Вы писали:

W>И о каких указателях идет речь ?

W>Смотрим протопир

W>LRESULT SendMessage(HWND hWnd,

W> UINT Msg,
W> WPARAM wParam,
W> LPARAM lParam
W>);

W>И где здесь указатели ? а hWnd — он для всей системы.


В lParam как раз и передается указатель на строку в адресном пространстве процесса. А пример с калькулятором работает потому что микрософт для некоторых сообщений сама сделала заплатку — копирование строки в адресное пространство нужного процесса и преобразование lParam. Сделал в угоду совместимости со старыми win3.1 программами. Это тоже было в Рихтере. К сожалению не для всех сообщений она это сделала, лень что-ли было??
Re[3]: SendMessage не работает... :(((
От: Patalog Россия  
Дата: 20.03.03 12:44
Оценка:
Здравствуйте, Whisperer, Вы писали:
[]

W>И о каких указателях идет речь ?

W>Смотрим протопир

W>LRESULT SendMessage(HWND hWnd,

W> UINT Msg,
W> WPARAM wParam,
W> LPARAM lParam
W>);

W>И где здесь указатели ? а hWnd — он для всей системы.


WM_SETTEXT
...
(LPARAM) lParam // window-text string (LPCTSTR)

typedef const TCHAR FAR * LPCTSTR;

Почетный кавалер ордена Совка.
Re[4]: SendMessage не работает... :(((
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 20.03.03 13:01
Оценка:
Здравствуйте, Patalog, Вы писали:

P>

P>WM_SETTEXT
P>...
P>(LPARAM) lParam // window-text string (LPCTSTR)

P>typedef const TCHAR FAR * LPCTSTR;


конкретно для сообщения WM_SETTEXT строка копируется в проекцию файла и таким образом делается доступной в адресном пространстве другого процесса
Меняю проигрыватель на выигрыватель
Re[5]: SendMessage не работает... :(((
От: Patalog Россия  
Дата: 20.03.03 13:30
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

[]

OE>конкретно для сообщения WM_SETTEXT строка копируется в проекцию файла и таким образом делается доступной в адресном пространстве другого процесса


"Спасибо, мне уже доложили" (с)
А ответ был на

И где здесь указатели ? а hWnd — он для всей системы.

Почетный кавалер ордена Совка.
Re[3]: SendMessage не работает... :(((
От: Рома Мик Россия http://romamik.com
Дата: 23.03.03 17:05
Оценка:
Здравствуйте, LantY, Вы писали:
LY>А поподробнее можно? Что бы другим не пришлось потом лбом стену пробивать.
Надо думать строка была паскалевская, а не зеро терминэйтед. Или вообще один символ
NAV>LRESULT lresult = SendMessage(hndlr,WM_SETTEXT,0,'1234');
Компилятор-то такое проглотит?
... << RSDN@Home 1.0 beta 6a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.