begin process at 2010 02 10 08:40:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > BLOQUER LE TASKMGR SANS CLÉ DE REGISTRE

BLOQUER LE TASKMGR SANS CLÉ DE REGISTRE


 Information sur la source

Note :
Aucune note
Catégorie :Exécution Classé sous :TaskManager, bloquage, handle, registre, timer Niveau :Débutant Date de création :21/03/2008 Date de mise à jour :21/03/2008 13:49:37 Vu :5 213

Auteur : craftsystem

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Suite a une question que j'ai poser sur le forum

en vain

j'ai chercher et trouvé le moyen de bloqué le taskmgr sans utiliser les clé de registre

pour sa j'ai utiliser une méthode que j'avais utiliser pour une de mets autre source 'KeygenMe Protection'

la methode des Handles bien connus (je vous apprend rien)

sauf que la j'ai utiliser le fichier U_Controle.pas de Kenavo ici:

http://www.delphifr.com/code.aspx?ID=22078

pour l'adapter a mes besoin

et ensuite j'ai utiliser un timer qui tourne en boucle toute les milli-secondes

dans la procédure du timer j'ai mis le code qui détecte si tel ou tel fenêtre et

ouverte si c'est le cas on la ferme sans se poser de question

Source

  • //Le pire c'est que c'était tous simple
  • //bref.......
  • //une fichier *.pas est à ajouter dans le proget
  • unit U_Controle;
  • interface
  • uses
  • Windows, SysUtils, Messages;
  • function HandleOf(TitreFenetre : String): THandle;
  • function HandleOfChild(HndlParent : THandle; Classe, Titre : String; PrevHandle : THandle): THandle;
  • Function ClickOn (Handle : THandle): boolean;
  • Function ClickOnW (Handle : THandle): boolean;
  • function SetEditText(h : THandle; s : String) : boolean;
  • implementation
  • // ---------------------------------------------------
  • // Il faut absolument respecter majuscules-minuscule
  • // dans les nom des fenêtres ou des contrôles
  • // ---------------------------------------------------
  • function HandleOf(TitreFenetre : String): THandle;
  • begin
  • Result :=0;
  • //Retrouve le Handle de la fenêtre principale
  • Result := FindWindow(nil, PChar(TitreFenetre));
  • end;
  • function HandleOfChild(HndlParent : THandle; Classe, Titre : String; PrevHandle : THandle): THandle;
  • var
  • ProgramHwnd : THandle;
  • begin
  • // retrouve le handle d'un controle enfant de type Classe de nom (caption) Titre
  • Result :=0;
  • if HndlParent<>0 then
  • result := FindWindowEx(HndlParent, PrevHandle, Pchar(Classe),Pchar(Titre));
  • end;
  • Function ClickOn (Handle : THandle): boolean;
  • begin
  • // PostMessage
  • // n'attend pas la fin de traitement du message
  • Result := BOOLEAN( PostMessage(Handle, BM_CLICK, 0, 0) );
  • end;
  • Function ClickOnW (Handle : THandle): boolean;
  • begin
  • // SendMessage
  • // Attend la fin de traitement du message
  • Result := BOOLEAN( SendMessage(Handle, BM_CLICK, 0, 0) );
  • end;
  • function SetEditText(h : THandle; s : String) : boolean;
  • begin
  • // Modifie le Contenu d'un TEdit
  • // Modifie le Nom (caption) d'un controle ou d'une form
  • Result := BOOLEAN( SendMessage(h,WM_SETTEXT,0,DWord(Pchar(s))) );
  • end;
  • end.
  • //et sur votre fiche .pas ajouter dans uses U_Controle et pour finir
  • //sur votre TForm mettais un timer et réglé son Interval sur 1
  • //et Enabled sur true
  • //mettais ceci dans la procedure du timer1
  • procedure TForm1.Timer1Timer(Sender: TObject);
  • begin
  • aHandle := HandleOf('Gestionnaire des tâches de Windows');
  • if aHandle <> 0 then begin
  • SendMessage(aHandle, WM_CLOSE, 0, 0);
  • end;
  • end;
  • //Pensez a déclarer votre variable 'ahandle' comme ceci: var //ahandle:thandle;
//Le pire c'est que c'était tous simple
//bref.......
//une fichier *.pas est à ajouter dans le proget




     unit U_Controle;

    interface

    uses
      Windows, SysUtils, Messages;

    function HandleOf(TitreFenetre : String): THandle;
    function HandleOfChild(HndlParent : THandle; Classe, Titre : String; PrevHandle : THandle): THandle;
    Function ClickOn (Handle : THandle): boolean;
    Function ClickOnW (Handle : THandle): boolean;
    function SetEditText(h : THandle; s : String) : boolean;


    implementation

    // ---------------------------------------------------
    // Il faut absolument respecter majuscules-minuscule
    //  dans les nom des fenêtres ou des contrôles
    // ---------------------------------------------------

    function HandleOf(TitreFenetre : String): THandle;
    begin
      Result :=0;
      //Retrouve le Handle de la fenêtre principale
      Result := FindWindow(nil, PChar(TitreFenetre));
    end;

    function HandleOfChild(HndlParent : THandle; Classe, Titre : String; PrevHandle : THandle): THandle;
    var
      ProgramHwnd : THandle;
    begin
      // retrouve le handle d'un controle enfant de type Classe de nom (caption) Titre
      Result :=0;
      if HndlParent<>0 then
        result := FindWindowEx(HndlParent, PrevHandle, Pchar(Classe),Pchar(Titre));
    end;

    Function ClickOn (Handle : THandle): boolean;
    begin
      // PostMessage
      // n'attend pas la fin de traitement du message
      Result := BOOLEAN( PostMessage(Handle, BM_CLICK, 0, 0) );
    end;

    Function ClickOnW (Handle : THandle): boolean;
    begin
      // SendMessage
      // Attend la fin de traitement du message
      Result := BOOLEAN( SendMessage(Handle, BM_CLICK, 0, 0) );
    end;

    function SetEditText(h : THandle; s : String) : boolean;
    begin
      // Modifie le Contenu d'un TEdit
      // Modifie le Nom (caption) d'un controle ou d'une form
      Result := BOOLEAN( SendMessage(h,WM_SETTEXT,0,DWord(Pchar(s))) );
    end;

    end.





//et sur votre fiche .pas ajouter dans uses U_Controle et pour finir
//sur votre TForm mettais un timer et réglé son Interval sur 1
//et Enabled sur true
//mettais ceci dans la procedure du timer1




     procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      aHandle := HandleOf('Gestionnaire des tâches de Windows');
        if aHandle <> 0 then begin
          SendMessage(aHandle, WM_CLOSE, 0, 0);
        end;

    end;


//Pensez a déclarer votre variable 'ahandle' comme ceci: var //ahandle:thandle;

 Conclusion

voilii voiloo
maintenant dans n'importe quel session on peut bloquer le taskManager
vous pouvez faire sa avec toute sorte d'application si vous avez le titre de sa Caption (titre de sa fenetre)

Toute amélioration de ce code est bien sur la bienvenue

@++



 Historique

21 mars 2008 11:01:46 :
erreur de frappe
21 mars 2008 13:49:37 :
petit oublie involontaire: Pensez a déclarer votre variable 'ahandle' comme ceci: var ahandle:thandle;

 Sources du même auteur

Source avec Zip Source avec une capture WEBDEZIGN FORMULAIRE
Source avec une capture CRÉER UN INSTALLATEUR POUR VOS PROGRAMME
INTERPRÉTEUR DE SYNTAXE
Source avec Zip Source avec une capture SOUNDCRYPT
Source avec Zip Source avec une capture KEYGENME PROTECTION

 Sources de la même categorie

Source avec Zip GÉNÉRATEUR DE JET DE DÉS par koriteki
Source avec Zip Source avec une capture LES FIBERS : DES THREADS NON PRÉEMPTÉS PAR LE SYSTÈME par Caribensila
Source avec Zip Source avec une capture UAC (USER ACCOUNT CONTROL) - EXÉCUTER UNE APPLICATION EN TAN... par ni69
Source avec Zip UTILISER LES MESSAGES WINDOWS POUR GERER LE NOMBRE D'INSTANC... par lotfi213_b19
Source avec Zip Source avec une capture SIMOBROWSER par simo5963

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CAMFROG HANDLES OP par yannfrance
Source avec Zip Source avec une capture ALPHA UTILS par Bacterius
Source avec Zip TMICROTIMER - TIMER À LA MICROSECONDE ! par Bacterius
Source avec Zip Source avec une capture SIMULATION DE PLUSIEURS TIRAGES DU JEU DE JOKER (LOTTO) par bad_dark_spirit
Source avec Zip Source avec une capture NI CLIC NI TOUCHE par barbichette

Commentaires et avis

Commentaire de cirec le 22/03/2008 00:07:18 administrateur CS

Content que tu ais trouvé une solution à ton problème.

Mais on ne peut pas laisser cette "source" ici...

L'essentiel du code n'est pas de toi et la partie qui est de toi (même si elle fonctionne) reste du bricolage.

Je ne pense pas que mettre un Timer avec un interval à 1 milliseconde soit une bonne solution pour détecter la présence d'une application.

@+
Cirec

Commentaire de cirec le 22/03/2008 11:20:08 administrateur CS

et je te conseil d'en faire de même ici :
http://coding.xooit.org/t229-src-Bloque-le-TaskMgr-sans-Cle-de-Registre.htm

puisque sur cette page tu t'es déjà approprié le code :(

je cite
"Salut a tous

bon après quelques tests et quelques échecs et
0 réponse de la part des communautés extérieur

j'ai réussi tous seul comme un grand

et le pire c'est que c'était tous simple
"

Commentaire de Kenavo le 23/03/2008 08:20:37

"sauf que la j'ai utiliser(sic) le fichier U_Controle.pas de Kenavo ici:
http://www.delphifr.com/code.aspx?ID=22078
pour l'adapter a(resic) mes besoin(reresic)"

Adapter, dis-tu ! En quoi ? Tout juste utilisé !
Tu n'as même pas corrigé la faute d'orthographe des commentaires
".. dans les nom des fenêtres ou des contrôles "

Tout ça ne serait pas bien grave, puisque le but de ce site est de partager des codes et des idées, et que tu cites ici l'origine du code que tu utilises, mais pourquoi n'en fais-tu pas autant sur coding.xooit.org ?
Il serait digne, élégant, et pour tout dire plus honnête, que tu y ajoutes toi-même un message précisant l'origine de ce code. Je ne souhaite pas le faire moi-même ...
Et puis faire connaître Delphifr est toujours une bonne action.

Ken@vo

Commentaire de matrix1 le 23/03/2008 12:15:45

Thread + Hook ça fera l'affaire mais tj sensible pour certain anti virus.

Commentaire de BruNews le 24/03/2008 15:13:05 administrateur CS

'Gestionnaire des tâches de Windows' n'ira que sur Windows french, vraiment très restrictif pour un truc aussi simple à réaliser.

SetWindowsHookEx de type WH_CBT.
Quand dwReason du DllMain vaut DLL_PROCESS_ATTACH, on controle par GetModuleFileName si le processus qui se crée est taskmgr.exe et si c'est le cas on appelle illico ExitProcess(0).
Voila tout.

Commentaire de craftsystem le 24/03/2008 16:59:44

Excuser moi pour ma lenteur a répondre

mais je n'été pas là ce WeekEnd

Bon pour commencé toute mets escuse a tous

pour ne pas avoir cité Kenavo sur Coding

Mais c'est vraiment un oublie involontaire

bref c'est corrigé et en rouge sang pour que tous le monde puise le voir

dans une réponse pour signalé un nouveaux Message

Je l'aurais corrigé en rentrant sur (je suis pas un Lamer)

J'ai déjà déposer des sources de Mauricio avec sont accord bien sur et je

l'ai cité (DelphiFr et déjà connus sur mon site)

j'en aurais fait autant pour Kenavo

vous auriez put le signalé sur mon site sa ne m'aurait pas tuez loin de là

je sais que je ne l'ai pas fait volontairement et les membres de Coding le

savent aussi bien que moi.

mets j'été tellement excité d'avoir trouvé que je me suis dépécher de poster

voilà donc pour mets esplication.

le principal (la méthode)
J'ai procéder comme çà car sa faisait quatre jour que j'avais poster la question mets personne ne ma répondus dans aucun des forums
5 ou 6
Donc j'ai tester la technique des Handles mets là je me suis heurter a un gros problème
Car le taskmrg a comme Handle #32770 et beaucoup de chose fonctionne avec cette handle
et en particulier tous les Dialog de sauvegarde et d'ouverture
de fichier

donc j'ai chercher le moyen de faire çà autrement et je suis tombé sur la source de Kenavo qui l'utilisé pour contrôlé une autre application
celon sa Caption et là met yeux on brillé de mille éclat

Ce que je veux dire par adapté: c'est simplement que je l'ai utilisé pour une autre utilité que la tienne Kenavo c'est tous...
pourquoi ne pas avoir corrigé tes fautes d'orthographe: car j'aidéjà que j'ai du mal a me corrigé alors je ne vais pas me cassé le crane a le faire pour les autres

et ce qui importe c'est la qualité du code

voilà messieurs la seul chose que je voulais faire c'été poster une réponse
a ma question pour le futur et évité que certain traine sur le web pendant prêt d'une semaine et que personne et l'amabilité de pouvoir répondre a une question qui vu les réponses de ce poste avait des réponses claire et sans doute fiable voilà

Commentaire de imi le 25/03/2008 11:23:06

KENAVO, visiblement il n'aurait pas pu corriger tes fautes d'orthographe ... ;-)

Commentaire de Caribensila le 25/03/2008 15:57:53

Je dirais même plus :  
il l'a échappé belle KENAVO!
Il aurait pu en rajouter une paire.   mdr

Commentaire de matrix1 le 25/03/2008 16:41:41

Excuser moi ! mais  de quel version de windows vous parlez

Commentaire de craftsystem le 26/03/2008 19:44:33

Caribensila....lol c'est même certain...

MATRIX1 pour ma part je tourne sur XP SP2...

Commentaire de Forman le 13/09/2008 15:33:21

Je découvre ce source... juste par curiosité, à part pour protéger une sorte de programme inavouable (virus, trojan) pour qu'il soit invisible, c'est sensé servir à quoi?

Autre méthode toute simple pour désactiver le taskmanager: renommer le fichier taskmgr.exe dans Windows/System32 en qqchose d'autre et le remplacer par une copie d'un autre exe (genre notepad, lol).

Ceci dit j'aimerai savoir s'il est possible de faire pointer le raccourci Alt+Ctrl+Del vers autre chose que taskmgr.exe de manière moins brutale.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Registre [ par Shadow ] Salut, je veux que la caption de mon label sois dans le registre mais j arrive pas a lire dans le registre pour afficher la caption que je veux!!!!!!! Handle [ par SMoG ] une bonne documentation sur les handle ? merci ;)SMoG Handle [ par Vinch ] Bonjour à tous,J'ai une erreur lors d'un ajout d'un enregistrement dans ma base access depuis delphi, il me met:"Erreur lors de la création du handle base de registre [ par eedy31 ] Je sais que dans le style casse couille ,on fait pas mieux que moi,mais j'ai ENCORE une question!Comment on fait pour ecrire dans la base registre(c p Un TIMER plus précis... [ par DAR ] Je cherche un timer beaucoup plus précis que celui livré avec Delphi.Il me faut une précision de l'ordre de la micro seconde.Merci à ceux qui pourront Registre [ par sebastienbro ] J'aimerais savoir comment écrire dans la valeur par défaut d'un clé (celle intitulé (Défaut))merci ecrire des data dans registre [ par crogger ] Salut, je voudrai arriver à ecrire dans la base registre des informations de type DATA...par exemple, une fois détérminé le chemin etc... pouvoir ecri Recup texte d'une statusbar par handle/classe [ par replic ] salut, j'aimerai recuperer le texte de la statusbar d'une application en execution. Puis-je y arriver par l'intermediaire du handle de celle et de la Accès base de registre !!! [ par scott114 ] Debutant Delphi !!Comment puis-je recuperer une serie de clef de la base de registre et inscrire les dites clefs et leurs valeurs dans un fichier text Registre : prob avec HKEY_CURRENT_USER [ par Bruto ] Salut,je migre de vb vers delphi et je rencontre qq prob's. Je me crée des outils sur la base de registre mais mon compilateur m'indique qu'il ne reco


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales