![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как послать нажатие клавишь в другое приложение
jiurasdad © (2006-01-20 15:09:00)ДОброе время суток! Есть к примеру приложение,я хочу в тестовое поле послать определенное слово из своей программы... как это сделать? Т.е. какя функция в Delphi это делает. В Visual BAsic-е была функция SendKeys а как в Delphi?
Leonid Troyanovsky (2006-01-20 15:53:00) [1]
> Jiura (20.01.06 15:34) [3]
> -такая штука для блокнота. Но что-то она у меня не работает.
> Видимо неправильное название указываю "Notepad". А как
> вообще узнать правильное? Есть ли к примеру функция
if h <> 0 then {окно класса Notepad найдено}
Перечислить окна верхнего уровня можно путем EnumWindows.
Обычно интерусуют лишь IsWindowVisible.
Класс окна узнают путем GetClassName.
См. также
http://groups.google.com/group/borland.public.delphi.winapi/msg/e080a4ba102c297b
--
Regards, LVT.
Jiura (2006-01-20 15:34:00) [2]Нет я хотел следующим образом: найти нужное окно, а затем послать туда слово. Нашел в интернете что нужно делать так:
procedure TForm1.Button1Click(Sender: TObject);
var
h : HWND;
begin
h:=FindWindow('Notepad',nil);
h:=FindWindowEx(h,0,'Edit',nil);
SendMessage(h,WM_CHAR,Ord('b'),0);
end;
-такая штука для блокнота. Но что-то она у меня не работает. Видимо неправильное название указываю "Notepad". А как вообще узнать правильное? Есть ли к примеру функция позволяющая получить список всех окон, запущенных в системе, чтобы потом выбрать правильное и использовать его в качестве параметра в функции FindWindow()?
Leonid Troyanovsky (2006-01-20 15:32:00) [3]
> jiurasdad (20.01.06 15:09)
> ДОброе время суток! Есть к примеру приложение,я хочу в тестовое
> поле послать определенное слово из своей программы... как
> это сделать? Т.е. какя функция в Delphi это делает. В Visual
> BAsic-е была функция SendKeys а как в Delphi?
Послать слово - SendMessage(EditHandle, WM_SETTEXT, 0, LParam(PChar(..)))
Послать символ: PostMessage(EditHandle, WM_CHAR, Ord(chr), 0);
Аналог SendKeys, например: PostKeyEx32
http://groups.google.com/group/borland.public.delphi.vcl.components.using/msg/255759f5e020ea20
Однако, это не совсем Post, but a wrapper for keybd_event.
Т.е., для своей работы требует активации чужого окна.
--
Regards, LVT.
begin...end (2006-01-20 15:29:00) [4]Если нужно сразу целое слово, то можно использовать WM_SETTEXT (если, конечно, текстовое поле является оконным контролом).