![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.04.2008
Сообщений: 9
|
![]()
Привет всем!
Проблема: Необходимо средствами API передать дату в DateTimePicker чужого окна. h:=FindWindow(nil, 'Form');//чужая форма h1:=FindWindowEx(h,0,'TDateTimePick er',nil);//хэндл таймпикера sendmessage(h1,wm_settext,0,Integer (PChar('18.04.0 8')));//типа шлем свою дату, но, увы, дата не шлется ![]() Спасибо. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Если хендл правильно нашел и если это действительно делфовый контрол то можно так:
Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 22.04.2008
Сообщений: 9
|
![]()
В делфовом контроле работает, спасибо. У меня, скорее всего,сишный,
поэтому результат пока нулевой ![]() |
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А это легко узнать. SpyXX или Winspector поможет узнать класс.
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
По порядку.
1. DateTimePicker не интересует сообщение WM_SETTEXT; 2. Для установки/чтения даты у DateTimePicker'а существуют сообщения DTM_SETSYSTEMTIME и DTM_GETSYSTEMTIME, Они прекрасно работают внутри одного процесса, но при связи с другим процессом с ними следующая проблема: 3. Всё, что относится к Common Controls имеет в основном "свои" сообщения большие, чем WM_USER. Это делает затруднительной передачу данных по указателю в другие процессы, поскольку Windows не маршаллит эти данные автоматически для сообщений, больших WM_USER. Отсюда вытекают минимум два возможных решения - "загнать" данные с помощью хука или записать их в другой процесс напрямую, а уже потом вызывать DTM_SETSYSTEMTIME, указывая в качестве аргумента данные, уже находящиеся в нужном процессе. Разумеется, в обоих случаях нужно иметь права на доступ к процессу и привилегии на выполнение этих операций. 2-1 способ: Код:
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 22.04.2008
Сообщений: 9
|
![]()
Спасибо, B_N.
Разобрался, немного переделав функцию, т.к. ID у меня был, все работает. Действительно, очень интересное решение!!! Спасибо. ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
DateTimePicker и SQL запрос | SlavyanD | БД в Delphi | 5 | 25.11.2011 10:10 |
DateTimePicker в DBGrid | Alex_76 | Помощь студентам | 4 | 20.06.2008 15:21 |
DateTimePicker Delphi | GAGARIN-NEW | Помощь студентам | 7 | 06.12.2007 15:23 |
Вопросы DateTimePicker | Askat | БД в Delphi | 14 | 29.06.2007 18:53 |
DateTimePicker + Label | krem | Компоненты Delphi | 2 | 10.05.2007 16:36 |