AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

globaler HOOK funzt. nur lokal

Offene Frage von "ForestX"
Ein Thema von ForestX · begonnen am 15. Nov 2007 · letzter Beitrag vom 16. Nov 2007
Antwort Antwort
ForestX

Registriert seit: 15. Nov 2007
6 Beiträge
 
#1

globaler HOOK funzt. nur lokal

  Alt 15. Nov 2007, 21:27
Ich versuche ein hook quasi global zu machen. Ich habe die Geschichte in ne DLL ausgelagert aber es funktioniert nur wenn mein fenster den focus hatt.
Fände voll coll wenn mir jemand helfen könnte weil ich bin voll am verzweifeln und fühle mich ein wenig verloren.
Ja und dann noch
1.Nein ich will keinen keylogger schreiben (ein trainer soll es werden)
2.Ja Hab wie ein blöder im Foren gesucht bis ich bekloppt wurde
3.Ja ich habe Assabards tuto gelesen und gegoogelt wie ein blöder


so code :
Delphi-Quellcode:
library Project2;



uses
  sharemem,
  windows,
  messages;

//{$R *.res}
var HookHandle :Cardinal = 0;
var Windowhandle :cardinal = 0;

function KeyboardHookProc(nCode:integer; wParam: WPARAM ; Lparam:LPARAM):LRESULT;stdcall;
begin
Result := CallNexthookEX(HookHandle,ncode,wparam,lparam);

case nCode < 0 of
true : exit;
false:
begin
sendmessage(WIndowHandle ,WM_USER +23,wparam,lparam);
end;
end;
end;


function InstallHook(Hwnd: Cardinal): boolean; stdcall;
begin
Result := False;
if HookHandle = 0 then begin
HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHookProc,Hinstance,0);

windowhandle := Hwnd;
result := True;
end;
end;



function UninstallHook :boolean; stdcall;
begin
result := UnhookwindowsHookEx(HookHandle);
HookHandle := 0;
end;

exports
InstallHook,
UninstallHook,
keyboardHookProc ;


end.



Ich bin so Verzweifelt
Mit allen Mitteln hat es die Monachie versucht die ersten republikanischen Erhebung zu verläumden.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: globaler HOOK funzt. nur lokal

  Alt 15. Nov 2007, 21:36
Ich habe schon lange keinen Hook mehr geschrieben, da kommt man immer ein bisschen raus. Aber ich sag mal, was ich versuchen würde:
1. sharemem raus (Du brauchst sie nicht und wenn die DLL in alle Processe gemappt wird, haben die anderen Process womöglich die Sharmem nicht)
2. Postmessage ist besser bei sowas, damit du die Messagequeue nicht anhälst, wenn dein Programm Fehler macht (Aber das dürfte nicht das Problem sein)
3. globale Variable des Windowhandles? Ist da nicht ein MMF o.ä. besser? Ich glaube die Funktion (wenn sie in den anderen Processen ist) hat keinen Zugriff auf globale Variablen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#3

Re: globaler HOOK funzt. nur lokal

  Alt 16. Nov 2007, 05:21
Hallo
Bei InstallHook gibts du ein FensterHandle mit ...
Ist das eventuell das Fenster wo es bei dir funktioniert ...
Peter Schaible
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: globaler HOOK funzt. nur lokal

  Alt 16. Nov 2007, 06:50
der Fehler ist ganz einfach.
Windowhandle ist allen DLL-Instanzen bis auf einer 0.

Du musst dir bewusst sein das durch installieren des Hook, NICHT alle Tasten an die Funktion in deiner geladenen DLl geschickt werden SONDERN die DLL von jedem Prozess geladen wird. Du kannst es dir also in etwa so vorstellen das durch das installieren des Hook alle anderen Prozesse LoadLibrary aufrufen und dann alle Tasten an die Funktion in ihrer geladenen DLL schicken und nicht an die DLL-Instanz welche du geladen hast.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: globaler HOOK funzt. nur lokal

  Alt 16. Nov 2007, 09:10
Hi,

arbeite doch lieber mit FileMapping. Du brauchst ja nur mal zum Testen eine Showmessage einbauen, dann siehst du was meine Vorredner meinten.
Delphi-Quellcode:
uses

  windows,
  dialogs,
  sysutils,
  messages;

//{$R *.res}
var
  Keyboard_HookHandle: LongWord = 0;
var Windowhandle :cardinal = 0;
function KbdHookProc(nCode: Integer; wParam: LongWord; lParam: LongWord): LongWord; stdcall;
var
  PID,
    sizewritten,
    hFile: LongWord;
begin
 case nCode < 0 of
    True: exit; // If the code is smaller than 0 nothing _has_ to be done
    False:
      begin
        ShowMessage(inttostr(WIndowHandle));
        //postmessage(WIndowHandle ,WM_USER +23,wparam,lparam);
     end;
  end;
    Result := CallNextHookEx(Keyboard_HookHandle, nCode, wParam, lParam);

end;...
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
ForestX

Registriert seit: 15. Nov 2007
6 Beiträge
 
#6

Re: globaler HOOK funzt. nur lokal

  Alt 16. Nov 2007, 10:46
Ja aber ich schick ja dan Lparam und wparam an mein programm ergo = da dann müste es ja aus der geladenn 'copy ' an mein programm geschickt werden. Und was für ein handle müste ich benuzten wenn ich das ganze nicht nur auf mein fenster beziehen will sondern auf das ganze system.

Fragen über fragen und ich kannn mir keinen reihm drauf machen :wall:

aber ich werde immer weiter dancen :dance: uyaaaa
Mit allen Mitteln hat es die Monachie versucht die ersten republikanischen Erhebung zu verläumden.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: globaler HOOK funzt. nur lokal

  Alt 16. Nov 2007, 10:50
Schon dasselbe Windowhandle. Aber NICHT als globale Variable. Sondern eben als MMF.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: globaler HOOK funzt. nur lokal

  Alt 16. Nov 2007, 12:24
Zitat von ForestX:
3.Ja ich habe Assabards tuto gelesen...
Sieh dir doch mal die DLL vom Beispiel Captain Hook an, da wird mit MMF gearbeitet. Das Handle des Fensters, befindet sich dort übrigens in der Variablen lpView^.wnd.

Zitat von ForestX:
Ja aber ich schick ja dan Lparam und wparam an mein programm ergo = da dann müsste es ja aus der geladenn 'copy ' an mein programm geschickt werden.
Nein, wenn deine Variable WIndowHandle 0 ist, wird auch nichts an dein Fenster gesendet.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:34 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