![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
ДЫМ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 6.1.2004 Репутация: 8 Всего: 8 |
Уважаемые коллеги, требуется ваш совет.
Я писал программу, когда у меня стояла Windows XP. Теперь у меня стоит Windows 7. Delphi 7 я поставил в Windows 7 внес в мою старую программу нужные мне изменения и откомпилировал заново. Чтобы было понятно, расскажу что делает программка. После запуска моя программка запускает стороннюю программу посредством CreateProcess. Вот в этой запущенной программе мне надо нажать программно кнопку [Сохранить]. Я получаю дескриптор кнопки и посылаю сообщение кнопке (нажатие левой кнопки мыши). Так вот, кнопка не нажимается, однако если моей прогамме установить совместимость с Win XP, то все работает и кнопка нажимается, причем в IDE Delphi по нажатию F9 программка компилируется, запускается и все нормально, кнопка нажимается. Но если убрать совместимость самого Delphi с Win XP, то кнопка перестает нажиматься. Все остальное в программе работает как надо. Я думал, что проблема в SendMessage, попробовал сделать через SendInput, картина такая же, кнопка нажимается только в режиме совместимости с Win XP. Неужели ничего нельзя сделать? Только не предлагайте установить Delphi 2010, там мою программу надо переделывать основательно, читать документацию по новой среде, я пробовал, но решил такой вариант оставить на случай, когда больше уже ничего не поможет. Может быть кто-нибудь сталкивался с подобными проблемами совместимости? Вот фрагмент кода, который не работает в Win 7 и работает в Win XP.
Это сообщение отредактировал(а) ДЫМ - 25.11.2012, 22:04 |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Приложение, запускаемое через CreateProcess требует повышения прав?
Где анализ того, что вернуло PostMessage и SendInput? UPD: в следующий раз не знаю, когда появлюсь, посему небольшие пояснения: по поводу повышения прав: отправка сообщения другому процессу возможна, если этот "другой процесс" имеет IntegrityLevel (грубо говоря - права) равные, или меньше, чем процесс, вызывающий SendMessage. То есть, если в Win7 запустить свое приложение с обычными правами, то оно не сможет отправить сообщение (в том числе - SendInput) в другое приложение, запущенное "от администратора". по поводу анализа: должно быть что-то типа
И на основании этого уже смотреть, что и как. UPD2: Читать ремарки в MSDN к функциям PostMessage и SendInput. Ну и значение, возвращаемое CreateProcess не помешает проверять до кучи. Это сообщение отредактировал(а) kami - 25.11.2012, 22:51 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |