Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.045 c
15-1138449645
Хинт
2006-01-28 15:00
2006.02.19
Дурацкий вопрос


9-1124440416
Dedylka
2005-08-19 12:33
2006.02.19
Шейдеры?


15-1138555045
GanibalLector
2006-01-29 20:17
2006.02.19
Update KB893066


4-1133583459
тт
2005-12-03 07:17
2006.02.19
Как узнать серийный номер жесткого диска?


11-1120045154
SPeller
2005-06-29 15:39
2006.02.19
Где грабли?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский