Код:
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'