![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Добрый день.
Есть проблема, приложение без исходников естественно, в котором каждое утро необходимо нажать определенную, довольно длинную. последовательность кликов мышью. Последовательность всегда одна и та же. После чего приложение выдаст файл отчета ну и дальше уже мои программки знают как с ним поступить. Но вот теперь нужно чтоб оно само все делало с начала и до конца. В приложение автоматизация генерации отчетов не встроена. Соответственно необходимо написать что то левое, что будет висеть в трее и в 8-00 активизироваться, переводить фокус на то приложение, тыкать мышой, ждать снова тыкать, и после запускать мои другие проги которые отчет подберут. Так вот как это осуществить? Возможно, вы скажите, учи Хуки. Но мне там даже перехватывать ничего не надо, достаточно только тыкать мышкой и ждать. Может есть способ проще? |
|
#2
|
||||
|
||||
|
Правильно - не учи хуки, это от Лукавого
![]() Есть отличная процедура, mouse_event - если тебе только клики нужны, то тебе ее хватит по заглаза. |
|
#3
|
||||
|
||||
|
Aristarh Dark
Спасибо за наводку! Накликать удалось, но возникла другая проблема, в одном месте необходимо ввести слово в TEdit. Мышой тут не обойтись тогда я вспомнил про сендмеседж и написал следующее - Код:
While HWindow=0 do HWindow:= FindWindow(nil, 'Альфацентр');
if HWindow<>0 then begin
EdClass:='Edit'+#0;
HControl:=FindWindowEx(HWindow,0,EdClass,'');
if HControl<>0 then begin
SText:='Текст';
SendMessage(HControl, WM_Settext,0,Integer(SText));
SendMessage(HWindow,WM_Command,MakeWParam(1,$0f),HControl);
End;
End; |
|
#4
|
||||
|
||||
|
Кликаешь по полю ввода мышкой программно, потом используешь этот код:
Код:
procedure TForm1.SetKey(Key:Integer); begin keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0); keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); end; Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessage(IntToStr(Key));f end; end. |
|
#5
|
||||
|
||||
|
Winny
Спасибо, вариант конечно возможен но придется по символу вводить как то не правильно имхо. А не подскажешь почему у меня с хендлами и файндвиндовс не работает? |
|
#6
|
||||
|
||||
|
Winny
Спасибо, вариант конечно возможен но придется по символу вводить как то не правильно имхо. А не подскажешь почему у меня с хендлами и файндвиндовс не работает? |
|
#7
|
||||
|
||||
|
Winny
Спасибо, вариант конечно возможен но придется по символу вводить, как то не правильно имхо. А не подскажешь почему у меня с хендлами и файндвиндовс не работает? |
|
#8
|
||||
|
||||
|
прошу прощения - опера заглючила, модератор, если можно удалите лишние.
|