![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имуляция ввода текста с клавиатуры [D7, WinXP]
turonix © (2004-02-12 15:35:00)Здравствуйте. У меня такой вопрос: я хочу , чтобы моя программа могла печатать текст в других программах (например вводить логин в заданное поле). Короче ситуация такая: выделено окно ввода (курсор туда уже установлен) и теперь моя программа должна ввести туда текст. Как это можно сделать?
juicenman (2004-02-18 22:10:00) [1]Чем SendMessage не подходит?
Dimka Maslov (2004-02-17 12:16:00) [2]Не всё, что есть в MSDN и последних сишных заголовках, есть и в Delphi. Так-что смотри в каком заголовке объявлена структура, ищи его и узнай значение
turonix (2004-02-17 11:11:00) [3]Посмотрел на этот модуль SendKeys. Не спорю штука хорошая, но хотелось бы самому немного разобраться. Вот что я написал
procedure TForm1.Button1Click(Sender: TObject);
var
inp : tagINPUT;
begin
Edit1.SetFocus;
inp.ki.wVk := ord('1');
inp.ki.wScan := ord('2');
inp.ki.dwFlags := KEYEVENTF_SCANCODE;
inp.ki.time := 0;
SendInput(1, inp, sizeOf(inp));
end;
самое интересное, что на "inp.ki.dwFlags := KEYEVENTF_SCANCODE;"
компилятор выдает ошибку: [Error] Unit1.pas(35): Undeclared identifier: 'KEYEVENTF_SCANCODE' ,то же самое для флага KEYEVENTF_UNICODE, хотя в MSDN такие флаги есть. С другими флагами прога компилируется, но эмулировать ничего не хочет... В чем ошибка?
SasaR (2004-02-16 17:05:00) [4]На этом и на других сайтах валялся модуль "SendKeys". Как раз, что Вам нужно. Нужно Handle (или имя окна) + посылаемые клавиши.
turonix (2004-02-13 12:31:00) [5]Почитал в msdn про эту функцию. Для XP рекомендуется функция UINT SendInput(
UINT nInputs,
LPINPUT pInputs,
int cbSize
);
,где
nInputs
[in] Specifies the number of structures in the pInputs array.
pInputs
[in] Pointer to an array of INPUT structures. Each structure represents an event to be inserted into the keyboard or mouse input stream.
cbSize
[in] Specifies the size, in bytes, of an INPUT structure. If cbSize is not the size of an INPUT structure, the function will
fail.
В свою очередь структура Input имеет вложенные структуры:MOUSEINPUT mi; KEYBOARDINPUT ki; HARDWAREINPUT hi;
Очевидно мне нужна KEYBOARDINPUT. Данная структкра так-же имеет кучу полей для заполнения.
Вопрос такой: каким будет синтаксис всей этой хрени? Я просто с WIN API мало имел дело и как определять и заполнять структуры имею лишь поверхностное представление. Так что не могли\ли кто-нибудь привести пример? И еще: как узнать размер массива INPUT (третий параметр функции SendInput)?
Рамиль (2004-02-12 15:40:00) [6]keybd_event + F1