Работа в Delphi с чужими окнами
| |
testor | Дата: Понедельник, 12.05.2014, 17:15 | Сообщение # 1 |
Новичок
Зарегистрирован: 12.05.2014
Группа: Пользователи
Сообщений: 3
Статус: Offline
| В моей программе запускаются прилагаемые к ней презентации PowerPoint, которые имеют пароль на их открытие и пароль на запуск "Только для чтения". В прилагаемом фрагменте кода я пытаюсь выполнить эти действия. Не получается с вводом пароля для разрешения "Только для чтения": Вот фрагмент кода: Код rocedure TForm1.Button1Click(Sender: TObject); begin {ищем 1-е окно с именем "Пароль"} h1 := FindWindow(nil, 'Пароль'); h2 := FindWindowEx(h1,0,'Edit',nil); SendMessage(h2, WM_SETTEXT, 0, lparam(pchar('testor'))); h3:=findwindowex(h1,0,nil,'ОК'); sendmessage(h3,BM_CLICK,0,0); {ищем 2-е окно с именем "Пароль" } h4 := FindWindow(nil, 'Пароль'); SetForegroundWindow(h4); h5 := FindWindowEx(h4,0,'Edit',nil); //до этого места все работает хорошо. Второе окно "Пароль" активно и внем курсор SendMessage(h5, WM_SETTEXT, 0, lparam(pchar('marina'))); // сам пароль почему-то не вводится h6:=findwindowex(h5,0,nil,'Только для чтения'); sendmessage(h6,BM_CLICK,0,0) // кнопка "Только для чтения не эмулирыет нажатие" end; Вроде все аналогично первому окну с паролем, но почему-то не имет. Может кто подскажет в чем причина.
|
|
| |
testor | Дата: Вторник, 13.05.2014, 10:35 | Сообщение # 2 |
Новичок
Зарегистрирован: 12.05.2014
Группа: Пользователи
Сообщений: 3
Статус: Offline
| С вводом пароля вопрос решил. Помогите разрешить такой вопрос: В моей программе пользователь загружает презентации PowerPoint, но они должны открываться для него только для чтения. При запуске выходит пароль за запуск презентации
Программа должна эмулировала вставку известного пароля. Затем появляется второе активное окно "Пароль" с курсором в поле ввода пароля
Необходимо не вводить пароль, а нажать кнопку "Только для чтения". Вот тестовый фрагмент программы: Код var Form1: TForm1; h1,h2,h3,h4,h5,h6:HWND; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin {ищем 1-е окно с именем "Пароль"} 1. h1 := FindWindow(nil, 'Пароль'); //Находим первое окно "Пароль" 2. h2 := FindWindowEx(h1,0,'Edit',nil);//находим дескриптор поля Edit 3. SendMessage(h2, WM_SETTEXT, 0, lparam(pchar('testor'))); 4. h3:=findwindowex(h1,0,nil,'ОК'); //жмем кнопку 5. sendmessage(h3,BM_CLICK,0,0); {ищем 2-е окно с именем "Пароль" } 6. h4 := FindWindow(nil, 'Пароль'); // Находим второе окно "Пароль" 7. h5 := FindWindowEx(h4,0,'Только для чтения',nil); //находим дескриптор кнопки 8. SetForegroundWindow(h5); //устанавливаем на ней фокус 9. sendmessage(h5,BM_CLICK,0,0); //жмем кнопку end; end. До строки 8 все работает нормально. Дальше ни как не могу перевести фокус на кнопку "Только для чтения". Если в ввести с паролем, то все работает (в тексте этого фрагмента нет) Может посоветуете, что мне нужно сделать. Спасибо
|
|
| |
xXxSh@dowxXx | Дата: Вторник, 13.05.2014, 11:37 | Сообщение # 3 |
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
| а файл презентации загружается в твою программу и открывается в твоей программе, или все же открытие происходит в сторонней программе?
|
|
| |
testor | Дата: Вторник, 13.05.2014, 12:55 | Сообщение # 4 |
Новичок
Зарегистрирован: 12.05.2014
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Я решил вопрос с запуском презентации с паролем.
|
|
| |
|