Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN THREAD POUR CTRL+ALT+DEL & BARRE MENU WINDOWS


Information sur la source

Catégorie :Trucs & Astuces Niveau : Débutant Date de création : 29/12/2003 Date de mise à jour : 29/12/2003 21:57:34 Vu / téléchargé: 5 212 / 335

Note :
9,67 / 10 - par 3 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

devrait fonctionner sous toutes les versions de windows

c'est que je cherche une façon plus agréable que d'utiliser une dll...

je n'ai aucune idée du comportement dans de gros programme.

j'ai trouver une autre façon de faire sans thread ,

donc mise à jour

 

Source

  • { 2er Méthode
  • Pour cette façon de faire l'idée c'est de fermer EXPLORER.EXE pour que le
  • message du taskMonitor ne soit pas gérer donc pas d'icone dans la barre du
  • menu.Or ce faisant EXPLORER redémarre automatiquement après x temps
  • du à l'appel de taskmgr,comme le service
  • taskMgr n'a pas reçu d'autorisation son icone ne pourra pas être affiché,et
  • comme le service est déjà démarré toutes demandes subséquantes renvoient
  • au premier service ouvert qui est caché.
  • inconvéniants :lenteur du démarrage
  • nécessite un "splash Screen" pour que l'on ne puisse percevoir
  • les actions effectuées ou toutes autres méthode simulant la
  • non disparition de la barre de tâches(capture?)
  • positif:
  • + de ressources disponibles question utilisation cpu.
  • unit unit2;
  • interface
  • uses
  • Windows,SysUtils,Classes,tlHelp32;
  • implementation
  • var
  • OldVal : LongInt;
  • C: Boolean;
  • FH: THandle;
  • FP: TProcessEntry32;
  • StartUpInfo: TStartUpInfo;
  • ProcessInfo1: TProcessInformation;
  • initialization
  • CASE Win32Platform of
  • VER_PLATFORM_WIN32_WINDOWS: //supposé fonctionner sur 95-98 me
  • SystemParametersInfo(SPI_SCREENSAVERRUNNING,Word(true),@OldVal,0);
  • VER_PLATFORM_WIN32_NT:
  • begin
  • FH :=CreateToolhelp32Snapshot(2,0);
  • FP.dwSize := Sizeof(FP);
  • C := Process32First(FH,FP);
  • while (C <> false) do
  • begin
  • if ((UpperCase(ExtractFileName(FP.szExeFile)) ='EXPLORER.EXE')or
  • (UpperCase(FP.szExeFile) ='EXPLORER.EXE')) then
  • TerminateProcess(OpenProcess($0001,false,FP.th32ProcessID), 0);
  • C := Process32Next(FH,FP);
  • end;
  • CloseHandle(FH);
  • FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  • with StartupInfo do
  • begin
  • cb := SizeOf(TStartupInfo);
  • dwFlags := STARTF_USESHOWWINDOW;
  • wShowWindow := SW_HIDE;
  • end;
  • CreateProcess(PChar('C:\WINDOWS\SYSTEM32\TASKMGR.EXE'), nil, nil, nil, False,
  • NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo1);
  • end;
  • END;
  • finalization
  • CASE Win32Platform of
  • VER_PLATFORM_WIN32_WINDOWS:
  • SystemParametersInfo(SPI_SCREENSAVERRUNNING,Word(false),@OldVal,0);
  • VER_PLATFORM_WIN32_NT:
  • begin
  • FH :=CreateToolhelp32Snapshot(2,0);
  • FP.dwSize := Sizeof(FP);
  • C := Process32First(FH,FP);
  • while (C <> false) do
  • begin
  • if ((UpperCase(ExtractFileName(FP.szExeFile)) ='TASKMGR.EXE')or
  • (UpperCase(FP.szExeFile) ='TASKMGR.EXE')) then
  • TerminateProcess(OpenProcess($0001,false,FP.th32ProcessID), 0);
  • C := Process32Next(FH,FP);
  • end;
  • CloseHandle(FH);
  • end;
  • END;
  • end.
{   2er Méthode

    Pour cette façon de faire l'idée c'est de fermer EXPLORER.EXE pour que le
    message du taskMonitor ne soit pas gérer donc pas d'icone dans la barre du
    menu.Or ce faisant EXPLORER redémarre automatiquement après x temps
    du à l'appel de taskmgr,comme le service
    taskMgr n'a pas reçu d'autorisation son icone ne pourra pas être affiché,et
    comme le service est déjà démarré toutes demandes subséquantes renvoient 
    au premier service ouvert qui est caché.

    inconvéniants :lenteur du démarrage
                  nécessite un "splash Screen" pour que l'on ne puisse percevoir
                  les actions effectuées ou toutes autres méthode simulant la
                  non disparition de la barre de tâches(capture?) 
    positif:
            + de ressources disponibles question utilisation cpu.


unit unit2;

interface

uses
  Windows,SysUtils,Classes,tlHelp32;


implementation
var

OldVal : LongInt;
C: Boolean;
FH: THandle;
FP: TProcessEntry32;
StartUpInfo: TStartUpInfo;
ProcessInfo1: TProcessInformation;

initialization

 CASE Win32Platform of
  VER_PLATFORM_WIN32_WINDOWS:           //supposé fonctionner sur 95-98 me
   SystemParametersInfo(SPI_SCREENSAVERRUNNING,Word(true),@OldVal,0);
  VER_PLATFORM_WIN32_NT:
     begin
        FH :=CreateToolhelp32Snapshot(2,0);
        FP.dwSize := Sizeof(FP);
        C := Process32First(FH,FP);
        while (C <> false) do
        begin
           if ((UpperCase(ExtractFileName(FP.szExeFile)) ='EXPLORER.EXE')or
               (UpperCase(FP.szExeFile) ='EXPLORER.EXE')) then
              TerminateProcess(OpenProcess($0001,false,FP.th32ProcessID), 0);
           C := Process32Next(FH,FP);
       end;
       CloseHandle(FH);

       FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
       with StartupInfo do
       begin
          cb := SizeOf(TStartupInfo);
          dwFlags := STARTF_USESHOWWINDOW;
          wShowWindow := SW_HIDE;
       end;
       CreateProcess(PChar('C:\WINDOWS\SYSTEM32\TASKMGR.EXE'), nil, nil, nil, False,
       NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo1);
     end;
 END;

finalization
  CASE Win32Platform of
  VER_PLATFORM_WIN32_WINDOWS:
   SystemParametersInfo(SPI_SCREENSAVERRUNNING,Word(false),@OldVal,0);
  VER_PLATFORM_WIN32_NT:
     begin
        FH :=CreateToolhelp32Snapshot(2,0);
        FP.dwSize := Sizeof(FP);
        C := Process32First(FH,FP);
        while (C <> false) do
        begin
           if ((UpperCase(ExtractFileName(FP.szExeFile)) ='TASKMGR.EXE')or
               (UpperCase(FP.szExeFile) ='TASKMGR.EXE')) then
           TerminateProcess(OpenProcess($0001,false,FP.th32ProcessID), 0);
           C := Process32Next(FH,FP);
        end;
        CloseHandle(FH);
     end;
  END;
end.

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Delphiprog le 29/12/2003 16:10:33 administrateur CS

Pas mal !
J'ai pas testé mais j'ai regardé avec attention. Un bon code, ça se repère au premier coup d'oeil.
Pour connaitre les différentes versions de Windows, tu peux utiliser : http://www.delphifr.com/code.aspx?ID=11811

signaler à un administrateur
Commentaire de yvemoreau le 29/12/2003 16:42:20

_______________________________________________________________
bonjour DelphiProg,

javais calculé que:

VER_PLATFORM_WIN32_NT:
nous renverrais toutes les versions où le "ctrl+alt+del"
ne se gère pas avec l'écran de veille...

Mes calculs sont-ils erronés ?
yve
_______________________________________________________________

signaler à un administrateur
Commentaire de grandvizir le 05/11/2004 20:28:44

Pour être efficace, c'est efficace (Win98 SE). Mais des bidules pareils ça peut-être redoutable. Supposons qu'il n'y a pas de fenêtre dans l'EXE, et qu'elle soit de type console (pas de TApplication), on n'est pas supposé savoir que l'application est chargée en mémoire et peut même passer inappercu dans un THREAD VIEWER. Si de plus l'EXE se lance à chaque démarrage, et que pour un peu le reboot soit lui aussi désactivé, le PC est littéralement paralysé.

C'est pour cela qu'il faut toujours un fameux PROCESS KILLER à portée d'icône !

Remarque importante: je lis dans les commentaires "OpenKey('LeNom', TRUE)". Il ne faut jamais mettre de TRUE !!!!!!!!!!! Il faut un FALSE sécurisant... on va pas créer une clé si elle n'existe pas. De plus, l'apparition de certaines clés dans la base de registre peut entraîner quelques conséquences dans Windows. Avec Delphi 7, il faut écrire OpenKeyReadOnly.

signaler à un administrateur
Commentaire de ni69 le 09/12/2004 00:12:43

Il serait préférable de faire repartir l'explorateur (explorer.exe) à la fin du Thread pour éviter de devoir le faire soi-même....

signaler à un administrateur
Commentaire de josswel le 10/06/2005 07:03:35

delphiprog ton adresse "": http://www.delphifr.com/code.aspx?ID=11811 " ne marche pas ??
bon code ! bien que je ne sois pas specialiste en thread

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.