Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hotkey - Wo ist der Fehler? (https://www.delphipraxis.net/123821-hotkey-wo-ist-der-fehler.html)

MaToBe 9. Nov 2008 15:40


Hotkey - Wo ist der Fehler?
 
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.

MaToBe 9. Nov 2008 18:17

Re: Hotkey - Wo ist der Fehler?
 
sorry ich habs selbst gefunden, ist erledigt. :oops: :wall:

toms 9. Nov 2008 19:13

Re: Hotkey - Wo ist der Fehler?
 
Zitat:

Zitat von MaToBe
sorry ich habs selbst gefunden, ist erledigt. :oops: :wall:

Schön, dass du den Fehler gefunden hast. Vielleicht interessiert die Lösung auch andere?

MasterTobi 15. Jun 2009 09:05

Re: Hotkey - Wo ist der Fehler?
 
Delphi-Quellcode:
RegisterHotKey(Handle, 1,0, ord($31));
ich denke ma das ist die lösung, so gehts bei mir zumindest


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz