Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Альтернатива SendMessage [D7, WinXP]


Страницы:   1 2

Игорь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]

СендМессджу глубоко фиолетово, что там было модифицировано. Он как посылал сообщение окну, так и посылает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо