Autor Beitrag
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Mi 30.10.19 17:36 
Ich bastle gerade ein kleines Tool, erst mal nur für mich, das einen Hook registriert, mit dem ich systemweit auf Tasteneingaben reagieren kann. (Kein Keylogger - was viel nützlicheres. Vielleicht zeige ich es euch später.) Das funktioniert auch so weit ganz gut.

Jetzt habe ich aber einen Knackpunkt drin: Ist das Hauptfenster aktiv, möchte ich es per <Esc> schließen können. Das habe ich zurzeit im LowLevelKeyboardHook drin.

ausblenden Quelltext
1:
2:
3:
4:
5:
function LowLevelKeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): HRESULT; stdcall;
begin
    // ...
    if bAnwendungIstFokussiert and Key = VK_ESCAPE then Application.Terminate;
end;


Da diese Prozedur aber deshalb direkt mit dem Hauptfenster der Anwendung interagieren muss (statt nur andersrum): Bedeutet das, dass ich sie nicht mehr in eine DLL auslagern kann? Das würde ich sonst durchaus wollen.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 30.10.19 22:50 
Moin!

Ich mag mich täuschen oder etwas nicht richtig verstanden haben, aber...
user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
Ist das Hauptfenster aktiv,
...dann kann es doch auch selbst auf den User-Input reagieren? :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
hydemarie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Do 31.10.19 02:22 
Theoretisch schon, aber Form.KeyUp weigert sich bei mir noch zu greifen - und ich hätte doch Funktionsredundanz, oder?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 31.10.19 11:33 
Moin!

user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
ich hätte doch Funktionsredundanz, oder?
Nein, weil das schlicht nicht in die DLL gehört. Wenn mich meine Delphi-Kenntnisse nicht vollständig verlassen haben, dann sind (Delphi-)Objekte aus DLLs heraus tabu! :mahn: (ja, das klappt häufig trotzdem, das kann aber genausogut einen Absturz provozieren - warum wieso weshalb kriege ich aber nicht mehr richtig auf die Kette :?) Notfalls per IPC aus der DLL mit der Hauptanwendung reden, Flag setzen, Message schicken, da sollte noch was gehen.

user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
Theoretisch schon, aber Form.KeyUp weigert sich bei mir noch zu greifen
Dann könnte das dein nächstes Forschungsobjekt sein? 8)

cu Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: hydemarie
hydemarie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 475
Erhaltene Danke: 51



BeitragVerfasst: Do 31.10.19 12:12 
So viel zu meinem Plan, mal eben ein kleines Programm zu schreiben ...

Danke. ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 31.10.19 14:01 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Wenn mich meine Delphi-Kenntnisse nicht vollständig verlassen haben, dann sind (Delphi-)Objekte aus DLLs heraus tabu! :mahn: (ja, das klappt häufig trotzdem, das kann aber genausogut einen Absturz provozieren - warum wieso weshalb kriege ich aber nicht mehr richtig auf die Kette :?)
Der Speichermanager ist nicht der gleiche, die DLL hat einen eigenen. Dazu kommt, dass das Hauptprogramm mit einer anderen Version von Delphi kompiliert sein könnte als die DLL. Und dann stimmen die Klassenstrukturen schlicht nicht mehr überein.

Man kann aber dem Formular problemlos ein Interface verpassen und dieses an die DLL geben.

Für diesen Beitrag haben gedankt: hydemarie, Narses