Форум: "Система";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизИмуляция ввода текста с клавиатуры Найти похожие ветки
← →
turonix © (2004-02-12 15:35) [0]Здравствуйте. У меня такой вопрос: я хочу , чтобы моя программа могла печатать текст в других программах (например вводить логин в заданное поле). Короче ситуация такая: выделено окно ввода (курсор туда уже установлен) и теперь моя программа должна ввести туда текст. Как это можно сделать?
← →
Рамиль © (2004-02-12 15:40) [1]keybd_event + F1
← →
turonix © (2004-02-13 12:31) [2]Почитал в 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)?
← →
SasaR (2004-02-16 17:05) [3]На этом и на других сайтах валялся модуль "SendKeys". Как раз, что Вам нужно. Нужно Handle (или имя окна) + посылаемые клавиши.
← →
turonix © (2004-02-17 11:11) [4]Посмотрел на этот модуль 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 такие флаги есть. С другими флагами прога компилируется, но эмулировать ничего не хочет... В чем ошибка?
← →
Dimka Maslov © (2004-02-17 12:16) [5]Не всё, что есть в MSDN и последних сишных заголовках, есть и в Delphi. Так-что смотри в каком заголовке объявлена структура, ищи его и узнай значение
← →
juicenman (2004-02-18 22:10) [6]Чем SendMessage не подходит?
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.03 c