![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте , приведите пожалуста рабочий пример функции SendInput
с комментариями . Заранее благодарю. |
|
#2
|
|||
|
|||
|
Цитата:
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspxПоследний раз редактировалось t116, 23.10.2011 в 21:41. |
|
#3
|
|||
|
|||
|
да благодарю в рунете каждый на буржуйском читает каже я забыл то
|
|
#4
|
||||
|
||||
|
Как же я забыл-то, что не все знают про существование такого сервиса в сети, как перевод.
http://translate.google.com http://translate.yandex.ru Последний раз редактировалось angvelem, 23.10.2011 в 21:47. |
|
#5
|
|||
|
|||
|
а вы им пользовались )) я без программного перевода больше пойму на английском )) хотябы интуитивно
|
|
#6
|
|||
|
|||
|
Так в чем проблема?
![]() |
|
#7
|
|||
|
|||
|
мне не интуитивно надо знать а фактически , в этом и проблема и потому я обратился сюда за помощью
ладно попробую перевести на великий могучий )) и сразуже прикол )) "Синтезирует нажатия клавиш и движений мыши и кнопки нажимает." Последний раз редактировалось tred, 23.10.2011 в 21:56. |
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
|||
|
|||
|
|
|
#10
|
|||
|
|||
|
Цитата:
|
|
#11
|
||||
|
||||
|
Если бы ТС умел пользоваться поиском, ему не составило бы труда найти примеры в сети:
http://tripsin.narod.ru/articles/mou..._imitation.htm |
|
#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. Последний раз редактировалось angvelem, 24.10.2011 в 21:31. |