IrmatDen | Salut,
J'aimerais utiliser un hook global empêchant l'exécution d'un set arbitraire d'application. J'utilise pour ça un hook CBT qui intercepte la création de fenêtre.
Bien que ce ne soit peut-être pas la meilleure façon de faire, elle devrait marcher pour des applis utilisant donc des fenêtres.
Le pépin est que j'arrive à poser le hook, mais il n'est actif qu'au niveau du process initiateur
J'ai épluché un paquet de pages et d'exemples, donc j'imagine que je dois rater quelque chose; c'est pas possible autrement Voici le code de la dll en question:
Code :
- #include "libblockapp.h"
- HINSTANCE g_hCurrentModule = NULL;
- // Pour le bloc suivant, j'ai vu (et testé) les 2 façons:
- // - sans utiliser la mémoire partagée
- // - et avec
- #pragma data_seg(".AppBlck" )
- HHOOK hHook = NULL;
- #pragma data_seg()
- #pragma comment(linker, "/section:.AppBlck,rws" )
- LRESULT CALLBACK CBTProc(int nCode,
- WPARAM wParam,
- LPARAM lParam)
- {
- if(nCode < 0)
- return CallNextHookEx(hHook, nCode, wParam, lParam);
- TCHAR currentProcessName[MAX_PATH];
- if(nCode == HCBT_CREATEWND)
- {
- if(GetModuleFileName(0, currentProcessName, sizeof(currentProcessName)))
- {
- if(lstrcmpi(currentProcessName, TEXT("firefox.exe" )) == 0)
- {
- ExitProcess(1);
- }
- }
- }
- return CallNextHookEx(hHook, nCode, wParam, lParam);
- }
- DllExport bool enableBlockAppHook()
- {
- hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTProc, g_hCurrentModule, 0);
- if(hHook == NULL)
- return false;
- return true;
- }
- DllExport bool disableBlockAppHook()
- {
- if(!hHook)
- return true;
- return (UnhookWindowsHookEx(hHook) != 0);
- }
- BOOL APIENTRY DllMain(HANDLE hInst,
- DWORD ulReasonForCall,
- LPVOID lpReserved)
- {
- (void)lpReserved;
- if(ulReasonForCall == DLL_PROCESS_ATTACH)
- g_hCurrentModule = (HINSTANCE)hInst;
- else if(ulReasonForCall == DLL_PROCESS_DETACH)
- disableBlockAppHook();
- return TRUE;
- }
|
Quelqu'un aurait-il une piste svp?
PS: faîtes pas gaffe à la comparaison des noms d'applications hein  Message édité par IrmatDen le 01-11-2006 à 15:18:05 ---------------
.
|