AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Globaler HotKey/Shortcut - SysHotKey.pas
Thema durchsuchen
Ansicht
Themen-Optionen

Globaler HotKey/Shortcut - SysHotKey.pas

Ein Thema von Aike · begonnen am 1. Jan 2005 · letzter Beitrag vom 8. Feb 2005
Antwort Antwort
Seite 2 von 3     12 3      
-Volle-

Registriert seit: 17. Dez 2003
Ort: Altdorf
40 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 9. Jan 2005, 22:20
ne ich wuerd sagen so:

Delphi-Quellcode:
WindowProc:=MyWindowProc;
Hotkeys[0].Key:=Lo(x); // Ascii Code von Alt
Hotkeys[0].Modify:=0;
inc(Hotkeys[0].Modify,MOD_Shift); // Ob Shift , Alt, STRG gedrueckt sein soll
aber mal ne gegenfrage: wann drueckst du shift+alt? aber zu dem beispiel hab ich leider keine ahnung ... :> tut mir sry
cYa n' sTay [ S ! C ]

Gruss Volle
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#12

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 10. Jan 2005, 16:28
Ich möchte zum Beispiel "Shift+Alt+L" als HotKey benutzen
Achim
  Mit Zitat antworten Zitat
-Volle-

Registriert seit: 17. Dez 2003
Ort: Altdorf
40 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 10. Jan 2005, 17:50
uh, das is schwer und entzieht sich meiner kenntnis. ... sry, entweder du probierst es aus, so wie dus gemint hast ( MOD_CHIFT + MOD_ALT) ... oder ... ka...

warum wilslt du so einen schweren hotkey benutzen ?
cYa n' sTay [ S ! C ]

Gruss Volle
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#14

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 10. Jan 2005, 17:57
Na ja, ich will meinem User eine große Vielfalt bieten
Achim
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#15

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 16. Jan 2005, 09:54
Ja, hm, das Problem ist, dass ich nicht jedem HotKey eine eigene Prozedur zum Ausführen mitgeben kann. Es wäre schön, wenn ich 'ne Variable übergeben könnte
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 16. Jan 2005, 10:49
Hallo,

interessiert hab ich das hier verfolgt, aber irgendwie krieg ich das nicht ans Laufen. Ich hab hier mal den gesamten Code nochmals zusammengefasst:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;


type
  HkI=Record
    Key:tShortcut;
    Modify:Cardinal;
    Interval:Word;
    Notify:String;
  end ;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure MyWindowProc(var Message:TMessage);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  HotKeys:array[0..2]of HKI;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.MyWindowProc(var Message: TMessage);
var notify:string;
begin
   notify:='';
   if Message.Msg=WM_Hotkey Then begin
     SetTimer(Self.Handle,Message.WParam,Hotkeys[Message.WParam-$BFF0].Interval*1000,nil);
     SendMessage(GetActiveWindow,WM_KEYDOWN,Hotkeys[Message.WParam-$BFF0].Modify,Hotkeys[Message.WParam-$BFF0].Key);
     SendMessage(GetActiveWindow,WM_KEYUP,Hotkeys[Message.WParam-$BFF0].Modify,Hotkeys[Message.WParam-$BFF0].Key);
     notify:='';
   end
   else if Message.Msg=WM_TIMER Then Begin
    if HotKeys[Message.WParam-$BFF0].Notify<>'Then
     begin
      notify:='';
      notify:=HotKeys[Message.WParam-$BFF0].Notify;
      end;
    KillTimer(Self.Handle,Message.WParam);
   end
   else WndProc(Message);
   if sametext(notify,'bla') then
   Showmessage('Taste gedrückt');

   notify:='';
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
      WindowProc:=MyWindowProc;
      Hotkeys[0].Key:=Lo(97); // Ascii Code der zu drueckenden taste, bsp 'a'
      Hotkeys[0].Modify:=0;
      inc(Hotkeys[0].Modify,MOD_CONTROL); // Ob Shift , Alt, STRG gedrueckt sein soll
      Hotkeys[0].Notify:='bla'; // die msg, die beim tastendruck uebergeben wird
      RegisterHotKey(Self.Handle,$BFF0+0,Hotkeys[0].Modify,Hotkeys[0].Key);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
     UnregisterHotKey(Self.Handle,$BFF0+0);

end;

end.
Der Teil in MyWindowProc
if Message.Msg = WM_HotKey then begin wird nie ausgeführt?

Hab ich da was vergessen
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 16. Jan 2005, 11:22
OK, jetzt klappts. Ich hatte als Ascii Code 97 definiert (a), statte 65 (A). Das klappt jetzt also.

Weiß einer wie ich die F-Tasten definieren kann?
  Mit Zitat antworten Zitat
-Volle-

Registriert seit: 17. Dez 2003
Ort: Altdorf
40 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 17. Jan 2005, 17:25
mach mal ein edit und schreib in die OnKeydown event das hier rein:

showmessage(inttostr(key)); dann kommt ein popup mit dem ascii-code ... F1 is z.B. 112 wenn ich mich nich irre... :>

@ Aike. .. du kannst doch den parameter "notify" aendern ...

bei jeder taste ne andere notify-msg, dann kannst du damit arbeiten ... ( oder hab ichs jetzt verrafft ?)
cYa n' sTay [ S ! C ]

Gruss Volle
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#19

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 8. Feb 2005, 00:17
Das mit Notify klappt ganz gut!

Aber irgendwie kann ich nur einen HotKey definieren. Wenn ich ...
Delphi-Quellcode:
begin
  WindowProc:=MyWindowProc;
  Hotkeys[1].Key:=Lo(65); // Ascii Code der zu drueckenden taste
  Hotkeys[1].Modify:=0;
  inc(Hotkeys[1].Modify,MOD_Alt); // Ob Shift , Alt, STRG gedrueckt sein soll
  Hotkeys[1].Notify:='string'; // die msg, die beim tastendruck uebergeben wird
  RegisterHotKey(Self.Handle,$BFF0+0,Hotkeys[1].Modify,Hotkeys[1].Key);
end;
das so mache, passiert einfach gar nix
Achim
  Mit Zitat antworten Zitat
-Volle-

Registriert seit: 17. Dez 2003
Ort: Altdorf
40 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: Globaler HotKey/Shortcut - SysHotKey.pas

  Alt 8. Feb 2005, 00:26
RegisterHotKey(Self.Handle,$BFF0+1,Hotkeys[1].Modify,Hotkeys[1].Key);

so düerfte es gehen
cYa n' sTay [ S ! C ]

Gruss Volle
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 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