AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Keystrokes auch bei inaktivem Fenster empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Keystrokes auch bei inaktivem Fenster empfangen

Ein Thema von daniel-volk · begonnen am 9. Sep 2003 · letzter Beitrag vom 9. Sep 2003
Antwort Antwort
daniel-volk

Registriert seit: 16. Jul 2003
170 Beiträge
 
Delphi 6 Enterprise
 
#1

Keystrokes auch bei inaktivem Fenster empfangen

  Alt 9. Sep 2003, 11:17
Hi,

wie kann ich Tastendrücke auch bei inaktivem Fenster abfragen?

Nur zur Info: Ich hab nicht vor einen Trojaner zu schreiben. Meine Anwendung soll nur eben im Hintergrund laufen und sich vom Nutzer über bestimmte Tastenkombinationen steuern lassen.

MfG.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Keystrokes auch bei inaktivem Fenster empfangen

  Alt 9. Sep 2003, 11:33
Wenn es Dir um die Steuerung Deiner Anwendung durch Hotkeys geht, auch wenn diese nicht aktiv ist, dann ist die Funktion RegisterHotKey perfekt

Mal ein Beispiel. Neues Anwendung und neues Form, dann im Form-Create Ereignis folgenden Code einfügen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle, 1, MOD_CONTROL or MOD_SHIFT, Ord('A'));
  RegisterHotKey(Handle, 2, MOD_CONTROL or MOD_SHIFT, Ord('B'));
end;
Ausserdem die Klasse wie folgt erweitern

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    ....
  private
    { Private declarations }
    procedure WMHOTKEY(var Msg: TWMHotKey); message WM_HOTKEY;
    ....
  public
    { Public declarations }
    ....
  end;

procedure TForm1.WMHOTKEY(var Msg: TWMHotKey);
begin
  Caption := DateTimeToStr(Now) + IntToStr(Msg.HotKey);
  case Msg.HotKey of
    1: begin
      ShowMessage('Aaaahh :-)');
    end;
    2: begin
      Close;
    end;
  else
    inherited;
  end;
end;
und die Hotkeys [Strg]+[Shift]+[A] und [Strg]+[Shift]+[B] testen

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Keystrokes auch bei inaktivem Fenster empfangen

  Alt 9. Sep 2003, 11:34
http://www.delphipraxis.net/internal...highlight=hook
  Mit Zitat antworten Zitat
daniel-volk

Registriert seit: 16. Jul 2003
170 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Keystrokes auch bei inaktivem Fenster empfangen

  Alt 9. Sep 2003, 13:59
Danke erstmal,
aber um Hotkeys geht es nicht:

Meine Anwendung blendet auf Befehl die Taskleiste oder die Desktopicons aus, wechselt das Hintergrundbild ...

Dazu gibt der User nur Befehle wie
-iconshide-
-iconsshow-
-taskbarhide-
...
ein.

Wenn das Fenster geöffnet ist, dann geht das alles schon ganz gut, aber eben nicht, wenn eine andere Anwendung im Vordergrund ist.

Hotkeys will ich nicht verwenden, weil die oft von anderen Programmen belegt sind und auch schwerer zu merken sind als Befehle.

MfG.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Keystrokes auch bei inaktivem Fenster empfangen

  Alt 9. Sep 2003, 14:52
Zitat von daniel-volk:
wie kann ich Tastendrücke auch bei inaktivem Fenster abfragen?
Gar nicht. Den Eingabefokus kann immer nur das aktive Fenster haben. Beispiel: Du tippst was in Notepad. Woher soll Windiws wissen, dass die Zeichenfolge -taskbarhide- nicht für das Notepad bestimmt ist?

Außnahmen werde da nur von Hotkeys gebildet.

Aber warum kann der Benutzer deines Programmes es nicht ganz normal in den Vordergrund hole, wie jedes andere Programm auch?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Rumpi

Registriert seit: 26. Aug 2003
Ort: Berlin
72 Beiträge
 
#6

Re: Keystrokes auch bei inaktivem Fenster empfangen

  Alt 9. Sep 2003, 15:30
Hi,

siehe : TWatch Komponente

die dort zum download steht.

Shell Hook
Keyboard Hook und
Mouse Hook

Funktioniert auch bei inaktiven Fenster.
Du musst die Hook's aber in einer dll unterbringen.

Sieh dir das Demo Projekt an, ich verwende das Teil schon seit
3 Jahren.

mfg Rumpi
  Mit Zitat antworten Zitat
daniel-volk

Registriert seit: 16. Jul 2003
170 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Keystrokes auch bei inaktivem Fenster empfangen

  Alt 9. Sep 2003, 18:58
@ Luckie:
Zitat:
Gar nicht. Den Eingabefokus kann immer nur das aktive Fenster haben. Beispiel: Du tippst was in Notepad. Woher soll Windiws wissen, dass die Zeichenfolge -taskbarhide- nicht für das Notepad bestimmt ist?
Das muss Windows ja auch nicht wissen. Der Nutzer kann das ja ruhig ins Notepad eingeben. Er kann es ja später wieder löschen. Oder er setzt den Fokus vorher auf eine Komponente, die selbst keine Eingabe ermöglicht.
Zitat:
Aber warum kann der Benutzer deines Programmes es nicht ganz normal in den Vordergrund hole, wie jedes andere Programm auch?
Aus mehreren Gründen: Erstens kannst du ein Programm, das vielleicht sogar als Trayicon läuft, schlecht in den Vordergrund holen, wenn die Taskbar ausgeblendet ist. Zweitens soll der Effekt des Progs doch gerade sein, dass man (scheinbar) irgendwas auf der Tastatur rumtippt und plötzlich ist der Desktophintergrund ein Anderer oder die Icons sind verschwunden.

@ Rumpi:
Danke für den Tipp! Werde mir das gleich mal ansehen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:18 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