Autor Beitrag
Big_Boss
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: Fr 15.12.06 21:49 
Hallo (mein 1.Beitrag),


Ich möchte ein Programm machen, das auf Tastendruck von "s" reagiert.
Ich habe es soweit auch hinbekommen (mit registerhotkey) aber wenn ich mein Programm dann ausführe und im Hintergrund laufen lasse, dann wird "s" nicht mehr an die anderen Programme weitergeleitet, dann passiert blos noch das, was mein Programm machen, sonst nichts.

Wie lasse ich das "Signal" abfangen aber danach noch weiterleiten?



MfG Big_Boss
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Fr 15.12.06 21:51 
Big_Boss Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: Fr 15.12.06 22:07 
Ok, ich wollte es eigentlich mit Registerhotkey machen da ich Hooks bisher noch nicht verstanden habe aber jetzt versteh ich es einwenig.
ausblenden Delphi-Quelltext
1:
2:
if ((Msg.LParam and $80000000) = 0and FDummy then        //only count once
    Inc(FCount);

Das reagiert glaube ich auf alles, wie mach ich das speziell auf "s"?

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Sa 16.12.06 00:04 
Wie du die HotKey-ID von "s" rausbekommst, geht so: du platzierst ein THotkey auf deinem Formular, und gibst dort den gewünschten hotkey ein, dann gibt es eine Eigenschaft, die dir eben die ID sagt.
ausblenden Delphi-Quelltext
1:
2:
if ((Msg.LParam = ID) and FDummy then        //only count once
    Inc(FCount);


Aber ich empfehle dir THotkeyManager! Den gibts hier.
Big_Boss Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: Sa 16.12.06 10:35 
Der Manager ist doch blos eine Unit, kann ich mir da was abschauen oder soll ich sie einbinden???
Und wenn ich einen Thotkey platziert und angepasst habe, wie finde ich dann die ID raus?

MfG Big_Boss
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Sa 16.12.06 13:51 
user profile iconBig_Boss hat folgendes geschrieben:
Der Manager ist doch blos eine Unit, kann ich mir da was abschauen oder soll ich sie einbinden???


Also: THotkeyManager ist eine Komponente, die du aber erst anhand der Unit selbst installieren musst. Das geht so:

Delphi-Hauptmenü -> Datei -> Neu -> Weitere -> Package -> Hinzufügen -> Unit auswählen... -> Compilieren, Installieren

Die Komponente findest du dann unter der Registerkarte "System" wieder. Nun musst du noch die Unit(s), die du mit THotkeymanager heruntergeladen hast in folgendes Verzeichnis kopieren:
c:\programme\borland\delphi\lib

Das ganze brauchst du nicht speichern.



user profile iconBig_Boss hat folgendes geschrieben:
Und wenn ich einen Thotkey platziert und angepasst habe, wie finde ich dann die ID raus?


THotKey hat die Eigenschaft Hotkey, und als wert sind lauter Konstanten zur auswahl z. B. Strg+A, ...
Diese Eigenschaft ist aber vom TShortcut.
delphi-Hilfe hat folgendes geschrieben:
type TShortCut = Low(Word) .. High(Word);

Und diese Eigenschaft kannst du dann dem Hotkeymanager zuweisen, oder eben in deiner selbstgeschriebenen Procedure einbauen.


Hoffentlich hilft dir das weiter, Viele Grüße, Jakob
Big_Boss Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: Sa 16.12.06 20:33 
user profile iconJakob Schöttl hat folgendes geschrieben:
Delphi-Hauptmenü -> Datei -> Neu -> Weitere -> Package -> Hinzufügen -> Unit auswählen... -> Compilieren, Installieren

Ich brauch ja wohl nicht zu erwähnen, dass ich ein ziehmlicher Anfänger bin :oops: .
Bis zu Schritt 5 klappt alles, aber dann steht da nirgends Hinzufügen(nur ok), wenn ich ok klicke, wird eine Art neue "Unit"(Package)gemacht. Ich weiß nicht, wo ich dann eine Unit auswählen kann und installiere.

MfG Big_Boss
Big_Boss Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: Mo 18.12.06 17:39 
Ich habe mich mal länger mit hooks befasst und nun ein paar Fragen:
1. Muss ich bei globalen Hooks eine dll machen?
2. Mit diesem code istalliere ich meinen hook:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function InstallHook(Hwnd: Cardinal): Boolean; stdcall;
begin
  Result := False;
  if HookHandle = 0 then begin
//Erstmal Hook installieren
//First install the hook
    HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHookProc,
    HInstance, 0);
//Uebergebenes Fensterhandle sichern
//Save the given window handle
    WindowHandle := Hwnd;
    Result := TRUE;
  end;
end;

Was passiert wenn WindowHandle auf true/false gesetzt wird?
Wie reagiere ich(mein Programm) auf einen Tastendruck?


MfG Big_Boss