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 / Exemple :
{ 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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.