Einzelnen Beitrag anzeigen

MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#1

Hotkey - Wo ist der Fehler?

  Alt 9. Nov 2008, 15:40
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, XPMan, StdCtrls;

type
  TForm1 = class(TForm)
    edt5: TEdit;
    Label1: TLabel;
    Image1: TImage;
    edt6: TEdit;
    edt7: TEdit;
    edt8: TEdit;
    edt9: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure FormCreate(Sender: TObject);
  private
   procedure WmHotkey(var Msg: TMessage); message WM_HOTKEY;

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


//Text umwandeln in Keybd_event Code
procedure EnterText(AText: String);
var lCount : Integer;
    lScanCode : Smallint;
    lWithAlt,
    lWithCtrl,
    lWithShift : Boolean;
begin
  for lCount := 1 To Length(AText) Do
  begin
    lScanCode := VkKeyScan(AText[lCount]);
    //Ermitteln ob Shift gedrückt wurde
    lWithShift := lScanCode and (1 shl 8) <> 0;
    //Ermitteln ob Strg gedrückt wurde
    lWithCtrl := lScanCode and (1 shl 9) <> 0;
    //Ermitteln ob Alt gedrückt wurde
    lWithAlt := lScanCode and (1 shl 10) <> 0;

    if lWithShift then
      keybd_event(VK_SHIFT, 0, 0, 0);
    if lWithCtrl then
      keybd_event(VK_CONTROL, 0, 0, 0);
    if lWithAlt then
      keybd_event(VK_MENU, 0, 0, 0);

    keybd_event(lScanCode, 0, 0, 0);
    keybd_event(lScanCode, 0, KEYEVENTF_KEYUP, 0);

    if lWithAlt then
      keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
    if lWithCtrl then
      keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    if lWithShift then
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
    RegisterHotKey(Handle, 1, MOD_CONTROL or MOD_SHIFT, $35);
    RegisterHotKey(Handle, 2, MOD_CONTROL or MOD_SHIFT, $36);
    RegisterHotKey(Handle, 3, MOD_CONTROL or MOD_SHIFT, $37);
    RegisterHotKey(Handle, 4, MOD_CONTROL or MOD_SHIFT, $38);
    RegisterHotKey(Handle, 5, MOD_CONTROL or MOD_SHIFT, $39);
end;

//Senden per Hotkey
procedure TForm1.WmHotkey(var Msg: TMessage);
begin
  if (Msg.WParam = 1) then
  begin
     if edt5.text <> ('') then
     begin
        EnterText(edt5.text);
     end
     else ShowMessage ('Sie haben für diesen Hotkey noch keinen Text eingegeben.');
  end;
  if (Msg.WParam = 2) then
  begin
     if edt6.text <> ('') then
     begin
        EnterText(edt6.text);
     end
     else ShowMessage ('Sie haben für diesen Hotkey noch keinen Text eingegeben.');
  end;
  if (Msg.WParam = 3) then
  begin
     if edt7.text <> ('') then
     begin
        EnterText(edt7.text);
     end
     else ShowMessage ('Sie haben für diesen Hotkey noch keinen Text eingegeben.');
  end;
  if (Msg.WParam = 4) then
  begin
      if edt8.text <> ('') then
     begin
         EnterText(edt8.text);
     end
     else ShowMessage ('Sie haben für diesen Hotkey noch keinen Text eingegeben.');
  end;
  if (Msg.WParam = 5) then
  begin
     if edt9.text <> ('') then
     begin
        EnterText(edt9.text);
     end
     else ShowMessage ('Sie haben für diesen Hotkey noch keinen Text eingegeben.');
  end;
end;

end.
Ich wette da ist irgendwo ein ganz einfach Fehler drin versteckt, aber leider finde ich ihn einfach nicht.

Problem: Das Programm tut garnichts, auch keine Fehlermeldung.
  Mit Zitat antworten Zitat