Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Как послать нажатие клавишь в другое приложение   Найти похожие ветки 

 
jiurasdad   (2006-01-20 15:09) [0]

ДОброе время суток! Есть к примеру приложение,я хочу в тестовое поле послать определенное слово из своей программы... как это сделать? Т.е. какя функция в Delphi это делает. В Visual BAsic-е была функция SendKeys  а как в Delphi?


 
begin...end ©   (2006-01-20 15:29) [1]

Если нужно сразу целое слово, то можно использовать WM_SETTEXT (если, конечно, текстовое поле является оконным контролом).


 
Leonid Troyanovsky ©   (2006-01-20 15:32) [2]


> 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.


 
Jiura   (2006-01-20 15:34) [3]

Нет я хотел следующим образом: найти нужное окно, а затем послать туда слово. Нашел в интернете что нужно делать так:

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:53) [4]


> 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.



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.065 c
2-1138605317
Дмитрий_К
2006-01-30 10:15
2006.02.19
DBGrid - MultiSelect -3


3-1135269387
hawkins
2005-12-22 19:36
2006.02.19
Неправильное значение в таблице Interbase, после запроса...


3-1135345421
Бульбаш
2005-12-23 16:43
2006.02.19
Как дополнить НД до необх. кол-ва строк?


2-1138617068
box
2006-01-30 13:31
2006.02.19
Связь адотабле и адоКвери


1-1137918107
Compton's G
2006-01-22 11:21
2006.02.19
Мерцание TImage