Russian Qt Forum
Ноябрь 26, 2024, 00:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Управление SysDateTimePick32  (Прочитано 4123 раз)
Anarchist
Гость
« : Декабрь 23, 2010, 11:37 »

Пишу программу на Qt из которой необходимо управлять другим приложением.
В этом стороннем приложении имеется такой контрол как SysDateTimePick32.
Необходимо изменить в нём дату на необходимую из моей программы.
Дескриптор элемента однозначно нахожу верно. В spy++ вижу что ему приходит моё сообщение.
Пишу так:
Код:
SYSTEMTIME date;
SendMessage(hSdt, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&date);
Внешнее приложение валится с ошибкой.
Пробовал самые различные варианты:
Код:
SYSTEMTIME date;
SYSTEMTIME date = {};
SendMessage(hSdt, DTM_GETSYSTEMTIME, GDT_VALID, (LPARAM)&date);
PostMessage(hSdt, DTM_GETSYSTEMTIME, GDT_VALID, (LPARAM)&date);
SendMessage(hSdt, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&date);
PostMessage(hSdt, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&date);
На всё валится с ошибкой. Не подскажете в чём может быть дело и как решить поставленную задачу?
Записан
brankovic
Гость
« Ответ #1 : Декабрь 25, 2010, 11:21 »

Почему валится понятно: date находится в адресном пространстве вашего приложения. Вообще любой SendMessage, передающий ненулевой указатель в другой процесс, приведёт к падению (за некоторыми исключениями типа WM_SETTEXT и т.п.)

Бороться можно внедрением dll. Но я бы не советовал, возня слишком большая для календарика.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.04 секунд. Запросов: 20.