[Gelöst] Shell-Hook funktioniert nicht

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

[Gelöst] Shell-Hook funktioniert nicht

Beitrag von hardfalcon »

Hallo, mit folgendem Code wollte ich den grundstein für einen eigenen Taskmanager legen, aber ich bin schier am verzweifeln. Die Procedure wird einfach nicht aufgerufen... :|

Code: Alles auswählen

#HSHELL_TASKMAN = 7

Procedure ShellProc(nCode,wParam,lParam)
  Debug "Procedure aufgerufen"
  If nCode = #HSHELL_TASKMAN
    Debug "Taskmanager!"
  EndIf
EndProcedure

OpenWindow(0,#PB_Ignore,#PB_Ignore,400,300,"CTRL+ALT+DEL Hooker")

Debug SetWindowsHookEx_(#WH_SHELL,@ShellProc(),GetModuleHandle_(0),0)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
//EDIT: Hier ist die Lösung des Problems:
http://www.purebasic.fr/german/viewtopi ... 411#129411
Zuletzt geändert von hardfalcon am 15.12.2006 18:52, insgesamt 1-mal geändert.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Schau dir mal den VB-Code an: http://www.myee.com/Programming/Program ... 30619.html

Da werden nochmal extra API-Funktionen verwendet um einen Shell Hook zu registrieren und zu deregistrieren.

Edit: Hier steht auch was sehr interessantes wie man Strg+Alt+Entf hooken kann. Scheint aber ne komplexere Angelegenheit zu sein: http://www.codeproject.com/win32/Antoni ... print=true
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Ich hab grad die Ursache des Problems gefunden:
HSHELL_TASKMAN Windows 95 only: The user has selected the task list. The wParam parameter is undefined and should be ignored. A shell application that provides a task list should return TRUE to prevent Windows from starting its task list.
WIN32.HLP sei dank, in der MSDN hab ich den wichtigen Hinweis darauf, dass das Ganze nur unter Windows 95 geht, nicht gesehen (falls es den da überhaupt gibt).

//EDIT: Vielen Dank für die Links, Thorium! :allright:
Antworten