|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
прошу прощения - опера заглючила, модератор, если можно удалите лишние.
|