![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Альтернатива SendMessage [D7, WinXP]
Игорь404 © (2009-04-07 09:40:00)Уважаемые, существует ли альтернатива использованию конструкции SendMessage() для передачи сообщения объекту тестируемого приложения.
Дело в том, что данная конструкция не работает на практике, применительно к объектам следующих классов: TreeView и DateTimePicker (В тестируемом приложении используются модификации этих классов. SysTreeView32, SysDateTimePick32). Всевозможные варианты использования SendMessage() уже перебрал и не добился результатов. Неделя потраченного времени и нервов. Возможно существует другой способ отправки сообщений?
Существует ли возможность изменения значения (к примеру даты в DateTimePicker) через адреса памяти текущего процесса?
Заранее благодарен.
Человек (2009-04-08 08:56:00) [21]
> guav © (08.04.09 00:58) [15]
> Кстати, ещё момент. В Висте ж появилось Address space layout
> randomization. В издании 2008 года оно упоминается. Но пример
> внедрения
> с CreateRemoteThread тоже имеется, и описание rebase тоже.
>
> Тема влияния ASLR на CreateRemoteThread не раскрыта.
>
А должно быть влияние ?
аноним (2009-04-08 08:23:00) [22]>guav © (08.04.09 00:02) [12]
>И вам читать Рихтера :-)
Что именно ?
guav (2009-04-08 00:58:00) [23]Кстати, ещё момент. В Висте ж появилось Address space layout randomization. В издании 2008 года оно упоминается. Но пример внедрения с CreateRemoteThread тоже имеется, и описание rebase тоже. Тема влияния ASLR на CreateRemoteThread не раскрыта.
Игорь Шевченко (2009-04-08 00:26:00) [24]guav © (08.04.09 00:07) [13]
У меня есть третье издание Windows для профессионалов (95-го года), так в четвертое тоже не все вошло и тоже выброшена часть по User (правда, сейчас не вспомню, какая), и выброшен хороший пример по синхронизации (Supermarket). Это к тому, что в очередном издании появится что-нибудь про особенности 128-разрядной Windows как там борятся с DLL Hell, но будет убрана например глава про Memory-mapped files...
guav (2009-04-08 00:07:00) [25]Кстати, к сожалению из издания "Windows via C/C++" 2008 года убрана глава про сообщения.
guav (2009-04-08 00:02:00) [26]
> Вот люди а, передают в чужой процесс указатель и ждут, что
> там появится его структура.
И вам читать Рихтера :-)
аноним (2009-04-07 21:28:00) [27]Что delphi делает с человеком ?!!!
аноним (2009-04-07 21:26:00) [28]Вот люди а, передают в чужой процесс указатель и ждут, что там появится его структура.
Игорь Шевченко (2009-04-07 16:08:00) [29]DVM © (07.04.09 16:03) [8]
К сожалению оконные классы, указанные в первом посте ветки на WM_COPYDATA не реагируют так, как хотелось бы автору.
DVM (2009-04-07 16:03:00) [30]
> Игорь Шевченко © (07.04.09 12:46) [6]
> Строки Windows умеет передавать между приложениями, а вот
> структуры - не умеет.
WM_COPYDATA умеет
Игорь404 (2009-04-07 12:50:00) [31]Игорь, спасибо за столь точную ссылку. :) Иду читать...
Игорь Шевченко (2009-04-07 12:46:00) [32]Игорь404 (07.04.09 11:56) [5]
> Да, именно, к внешнему процессу.
> И sendMessage() работает в большенстве случаев. (Применительно
> к объектам ComboBox и EditText например).
Строки Windows умеет передавать между приложениями, а вот структуры - не умеет.
> И если это единственное решение, не мог бы поподробне рассказать
> (в контексте решаймой задачи)?
Подробнее в книге Рихтера "Windows для профессионалов", четвертое издание, глава 22.
Игорь404 (2009-04-07 11:56:00) [33]Да, именно, к внешнему процессу.
И sendMessage() работает в большенстве случаев. (Применительно к объектам ComboBox и EditText например).
И если это единственное решение, не мог бы поподробне рассказать (в контексте решаймой задачи)? А теорию я уже сам нарою.
Игорь Шевченко (2009-04-07 11:47:00) [34]Э...тебе в другое приложение надо указатель передать через SendMessage ?
Так точно не получится, надо в другое приложение DLL внедрять
Игорь404 (2009-04-07 11:40:00) [35]Игорь, я пробовал следующие конструкции:
SendMessage(Win_Handle ,DTM_SETSYSTEMTIME, GDT_VALID, Longint(@stF) );где
stF: SYSTEMTIME;
stF.wYear:= 2009;
stF.wMonth:= 1;
stF.wDay:= 11;
stF.wHour:= 12;
stF.wMinute:= 30;
stF.wSecond:= 12;
stF.wMilliseconds:= 0;
Применительно к приложению, они не работают.
Но вот, что интересно: конструкция
SendMessage(a,DTM_SETFORMAT,0, Longint(PChar(Edit1.Text)));отрабатывает и возвращает (1), но формат устанавливается "неправильный".
Игорь Шевченко (2009-04-07 10:54:00) [36]
> Дело в том, что данная конструкция не работает на практике
работает. применительно к объектам любых классов, лишь бы HWND был
Медвежонок Пятачок (2009-04-07 10:04:00) [37]СендМессджу глубоко фиолетово, что там было модифицировано. Он как посылал сообщение окну, так и посылает.