|
#1
|
|||
|
|||
функция SendInput
Здравствуйте , приведите пожалуста рабочий пример функции SendInput
с комментариями . Заранее благодарю. |
#2
|
|||
|
|||
Цитата:
Последний раз редактировалось t116, 23.10.2011 в 21:41. |
#3
|
|||
|
|||
да благодарю в рунете каждый на буржуйском читает каже я забыл то
|
#4
|
||||
|
||||
Как же я забыл-то, что не все знают про существование такого сервиса в сети, как перевод.
http://translate.google.com http://translate.yandex.ru Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 23.10.2011 в 21:47. |
#5
|
|||
|
|||
а вы им пользовались )) я без программного перевода больше пойму на английском )) хотябы интуитивно
|
#6
|
|||
|
|||
Так в чем проблема?
|
#7
|
|||
|
|||
мне не интуитивно надо знать а фактически , в этом и проблема и потому я обратился сюда за помощью
ладно попробую перевести на великий могучий )) и сразуже прикол )) "Синтезирует нажатия клавиш и движений мыши и кнопки нажимает." Последний раз редактировалось tred, 23.10.2011 в 21:56. |
#8
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
|||
|
|||
|
#10
|
|||
|
|||
Цитата:
|
#11
|
||||
|
||||
Если бы ТС умел пользоваться поиском, ему не составило бы труда найти примеры в сети:
http://tripsin.narod.ru/articles/mou..._imitation.htm Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
|||
|
|||
Код:
unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg, StdCtrls, Buttons; type TForm1 = class(TForm) Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure FormCreate(Sender: TObject); procedure TimePause(dwMilliseconds: Longint); procedure emKeyPress1(var str: string); private { Private declarations } procedure WM_HotKeyHandler (var Message: TMessage); message WM_HOTKEY; public { Public declarations } end; var Form1: TForm1; keyid: integer; keyid1: integer; iStart: DWORD; iStop: DWORD; flag: integer=0; inp: TInput; implementation {$R *.dfm} ////////////////////////////////////////////////////////////////// procedure TForm1.WM_HotKeyHandler (var Message: TMessage); var idHotKey: integer; //идентификатор, но об этом - позже fuModifiers: word; //модификатор MOD_XX uVirtKey: word; //код виртуальной клавиши VK_XX begin // параметры сообщения получаем так: idHotkey:= Message.wParam; fuModifiers:= LOWORD(Message.lParam); uVirtKey:= HIWORD(Message.lParam); //теперь - небольшая проверочка: if (fuModifiers = MOD_ALT) AND (uVirtKey = VK_NUMPAD1) then begin repeat TimePause(3000); emKeyPress1('1'); // вот тут выделяется тут ошибка TimePause(250); keybd_event(Ord('2'), 0, KEYEVENTF_EXTENDEDKEY, 0); TimePause(100); keybd_event(Ord('2'), 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); until flag<>0; UnregisterHotKey(handle, keyid); GlobalDeleteAtom(keyid); UnregisterHotKey(handle, keyid1); GlobalDeleteAtom(keyid1); Form1.Close(); end else if (fuModifiers = MOD_ALT) AND (uVirtKey = VK_NUMPAD9) then flag:=1; inherited; end; ////////////////////////////////////////////////////////////////// // процедура создания горячих клавиш при создании формы procedure TForm1.FormCreate(Sender: TObject); begin keyid:=GlobalAddAtom('My Hotkey'); //создаем атом keyid1:=GlobalAddAtom('My Hotkey1'); RegisterHotKey(handle,// сообщение о HotKey будет получать форма keyid, // регистрируем атом как id MOD_ALT,// модификатор у нас - клавиша Alt VK_NUMPAD1); // вирт. клавиша - F10 RegisterHotKey(handle,// сообщение о HotKey будет получать форма keyid1, // регистрируем атом как id MOD_ALT,// модификатор у нас - клавиша Alt VK_NUMPAD9); // вирт. клавиша - F10 end; ////////////////////////////////////////////////////////////////// // процедура типа таймер задержки procedure TForm1.TimePause(dwMilliseconds: Longint); begin iStart := GetTickCount; repeat iStop := GetTickCount; Application.ProcessMessages; until (iStop - iStart) >= DWORD(dwMilliseconds); end; ////////////////////////////////////////////////////////////////// procedure TForm1.emKeyPress1(var str: string); begin inp.Itype:=INPUT_KEYBOARD; inp.ki.wVk:=Ord('31') inp.ki.dwFlags:=0; SendInput(31, inp, SizeOf(inp)); inp.Itype:=INPUT_KEYBOARD; inp.ki.wVk:=Ord('31') inp.ki.dwFlags:=KEYEVENTF_KEYUP; SendInput(31, inp, SizeOf(inp)); end; end. чтото не работает вот какие ошибки выдаёт Build [Error] Main.pas(54): Types of actual and formal var parameters must be identical [Error] Main.pas(101): Incompatible types [Error] Main.pas(102): Missing operator or semicolon [Error] Main.pas(105): Incompatible types [Error] Main.pas(106): Missing operator or semicolon [Fatal Error] ArenaOnline.dpr(5): Could not compile used unit '..\timer2\Main.pas' Последний раз редактировалось tred, 23.10.2011 в 23:03. |
#13
|
||||
|
||||
1. Ожидается параметр типа переменная - передаётся непосредственное значение.
2. Функция ord, применима для цифр (для одинарных типов), но не для чисел. Разницу улавливаешь? 3. Нет запятой в конце вышеуказанной строки. 4. Повтор пункта 2. 5. Повтор пункта 3. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 24.10.2011 в 21:31. |