Thema: Delphi HotKey-Registrierung

Einzelnen Beitrag anzeigen

Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#1

HotKey-Registrierung

  Alt 21. Apr 2004, 21:02
Hi,
ich möchte mit einem Programm mit ShortCuts andere Programme usw. öffnen. Also habe ich zu Testzwcken Code aus DP benutzt.
Das Erstellen eines ShortCuts funktioniert auch einwandfrei; sobald ich aber den HotKey wieder entfernen will (siehe unten,
'UNREGISTER') funktioniert das nicht alles.


Delphi-Quellcode:
function ConvertPascalShortCut(const p_scIN : TShortCut) : TcsWinHotKey;
const
  _iModifier : array [0..7] of integer = (
      0,
      MOD_SHIFT,
      MOD_CONTROL,
      MOD_SHIFT or MOD_CONTROL,
      MOD_ALT,
      MOD_SHIFT or MOD_ALT,
      MOD_CONTROL or MOD_ALT,
      MOD_SHIFT or MOD_CONTROL or MOD_ALT
      );

begin
  Result.dwModifier := p_scIN;
  // Die für Modifier entscheidenden Stellen herausfiltern
  Result.dwModifier := Result.dwModifier and $0000FF00;
  // an die richtige Stelle schieben
  Result.dwModifier := Result.dwModifier shr 13;
  // und den richtigen Modifier aus der Tabelle holen
  Result.dwModifier := _iModifier[Result.dwModifier];
  // Virtual Key herausfiltern
  Result.dwVK := p_scIN and $000000FF;
end;

procedure create_hotkey;
var whkWork : TcsWinHotKey;
begin
  whkWork := ConvertPascalShortCut(Hotkey1.HotKey);
  RegisterHotKey(Handle, sc_ct, whkWork.dwModifier,whkWork.dwVK);

  Memo1.Lines.Add(programm_link); // Speichert Programm_link in Memo
  Memo1.Lines.Add(ShortCutToText (Hotkey1.HotKey)); // Speichert HotKey in Memo
end;
Delphi-Quellcode:
procedure unregister;
var s2 : string;
begin
  // Die registrierten HotKeys (z.Bsp: STRG-A) sind ja in dem Memo gespeichert
  // s2 definiert fragliches das HotKey
  s2 := Memo1.Lines[..];
  UnRegisterHotKey(FShortCut.Handle, TextToShortCut (s2));
end;
Wie kann ich denn jetzt den HotKey wieder entfernen?
Kann mir da jemand helfen ?

mfg
devnull
-- Never change a running system --
  Mit Zitat antworten Zitat