Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


СПАСИБО.
Выручили.

Что получилось

var
UnPro : HWND;
PassText: HWND;
OKbutton: HWND;

begin
UnPro:= FindWindow(nil, 'Unprotect Worksheet'); //Где меню с вводом пароля
PassText := FindWindowEx(UnPro, 0, 'Edit', nil); // Где само поле на этом меню

//Тут будет цикл и он будет зависеть от количества паролей
SendMessage(PassText, WM_SETTEXT, 0, lParam(LPCTSTR('НАШ ПАРОЛЬ'))); //Пихаем пароль
OKbutton :=FindWindowEx(UnPro, 0, 'Button', nil); //Ищем сокровенную OK
SendMessage(OKbutton, BM_CLICK, 0, 0); //Жмёт ОК принять пароль (кстати если пароль подойдёт то значение этой функции и будет обрабатываться как выход из цикла)
end;

Ну а если неправильно, то форма с этим алгоритмом повиснет, так как МАТКАД видал MSGBOX (Incorrect password…) который и прерывает дальнейший алгоритм (а дальше я планировал глушить этот ответ и продолжения цикла).
Что б повисания не было (вернее что б оно было кратковременным, а не бесконечным), создадим отдельную программу которая и глушит этот MSGBOX.

procedure TForm1.Timer1Timer(Sender: TObject);
var
BadPass :HWND;
begin
BadPass :=FindWindow(nil, 'Mathcad'); //Имя MSGBOX – Mathcad. Находим это табло
SendMessage(BadPass, WM_SYSCOMMAND, SC_CLOSE, 0); //Просим его закрыться
end;

Інтервал у таймера 1000мс. Если сделать слишком маленьким, то всё начнёт дико тормозить ну, а большой интервал нагрузит и без того длинный алгоритм.

Что натолкнуло меня на мысль
hasherfrog
использования Spy++ позволило проверять себя на каждом шаге программирования.

DillerInc
в твоём ответе за 14:01, 29-10-2005 было уже всё, искать Едит надо было в окне не самой проги, а в окне, где сам Едит находится (Spy++ указал на это). Кстати мне повезло что кнопка ОК первая, и поэтому твоё предостережение, что кому именно отправится сообщения не коснулось меня(у тебя всем окнам, а у меня могло всем кнопкам; я искал хендл по Button, а (их там двое – OK Cancel см рис за 21:41, 03-11-2005 ) и Делфи выбирался хендл первого). FindWindowEx находит!

P.S
Алгоритм готов, осталось сделать перебор по словарю, и определения правильного слова – конца цикла. И переборщих готов. (Прим – но лучше найти взломщик mcd ибо эти Ding.wav от msgbox…, хотя их можно отключить через звуковую схему, но все равно ефективность алгоритма от этого не сильно выиграет ).

Отправлено: 02:07, 08-11-2005 | #9