Показать сообщение отдельно
  #12  
Старый 23.10.2011, 22:14
tred tred вне форума
Прохожий
 
Регистрация: 06.01.2011
Сообщения: 7
Репутация: 10
По умолчанию

Код:
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'
Ответить с цитированием