Bonjour,
Je souhaite pouvoir par un click de bouton fermer proprement toutes applications ouvertes sur mon ordi. Est-il possible de le faire de façon simple?
Merci pour toute réponse.
Bonjour,
Je souhaite pouvoir par un click de bouton fermer proprement toutes applications ouvertes sur mon ordi. Est-il possible de le faire de façon simple?
Merci pour toute réponse.
J'utilise ca dans une de mes applications :
Ca peut peut-être t'aider ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 var nSnapShot: Integer; FProcessEntry32: TProcessEntry32; begin Result := 0; nSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //.Si erreur. if nSnapShot = -1 then Exit; FProcessEntry32.dwSize := SizeOf(FProcessEntry32); if Process32First(nSnapShot, FProcessEntry32) then begin repeat //.Si application recherchée. if AnsiLowerCase(ExtractFileName(FProcessEntry32.szExeFile)) = 'App_test' then begin //.Suppression du processus. if not TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0) then Inc(Result); end; until not Process32Next(nSnapShot, FProcessEntry32); end; CloseHandle(nSnapShot); end;
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)
Merci Lung pour ta réponse, mais si tu peux faire quelques commentaire...
Par ex. j'ai une application qui tourne, je veux fermer propremment cette application, tout en enregistrant les fichiers ouverts pour ne pas perdre des données...
Là ca se complique ...Envoyé par kikica
Mon bout de code ferme (sans poser de question, les applications).
Pour ce que tu cherches, je ne sais pas ...
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)
Merci. Ce code ferme TOUTES applications ouvertes? Faut-il préciser le NOM des applications? Que mettre dans "USES"?
Pour tester, remplace la partie qui supprime par de l'affichage des exe trouvé. Tu pourra voir la liste. Par exemple, avec un TRichEdit :Envoyé par kikica
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if Process32First(nSnapShot, FProcessEntry32) then begin repeat RichEdit.Lines.Add(ExtractFileName(FProcessEntry32.szExeFile)); until not Process32Next(nSnapShot, FProcessEntry32); end;Tlhelp32Envoyé par kikica
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)
Est-tu sûr que ce côde fonctionne? Je n'arrive pas à compiler ce côde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Identificateur non déclaré:TProcessEntry32etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Identificateur non déclaré:result
ps. Peux-tu faire un copier-collé du côde qui fonctionne?
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Tlhelp32, StdCtrls, ComCtrls;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure TForm1.Button1Click(Sender: TObject); var nSnapShot: Integer; FProcessEntry32: TProcessEntry32; begin nSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //.Si erreur. if nSnapShot = -1 then Exit; FProcessEntry32.dwSize := SizeOf(FProcessEntry32); if Process32First(nSnapShot, FProcessEntry32) then begin repeat RichEdit.Lines.Add(ExtractFileName(FProcessEntry32.szExeFile)); until not Process32Next(nSnapShot, FProcessEntry32); end; CloseHandle(nSnapShot); end;
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)
C'est l'application cible qui doit gérer cette situation.Envoyé par kikica
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
Yess! L'affichage dans "richedit" fonctionne parfaitement. Maintenant, lorsque je fais un copier-coller du côde:
J'ai à nouveau l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 FProcessEntry32.dwSize := SizeOf(FProcessEntry32); if Process32First(nSnapShot, FProcessEntry32) then begin repeat //.Si application recherchée. if AnsiLowerCase(ExtractFileName(FProcessEntry32.szExeFile)) = 'App_test' then begin //.Suppression du processus. if not TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0) then Inc(Result); end;Donc, j'ai rajouté dans
Code : Sélectionner tout - Visualiser dans une fenêtre à part Identificatoeur non déclaré:"Result"
et ça compile, mais avec un avertissement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part var result: integer;
Et alors, rien ne se passe!
Code : Sélectionner tout - Visualiser dans une fenêtre à part La valeur affecté à 'result' n'est jamais utilisé
Le code donné par Lung est une fonction pas une procédure donc pas besoin de déclarer Result en variable locale.
A moins que dans ton cas tu ne souhaites pas connaitre le nb de process terminés par ce traitement.
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
En effet, je veux simplement par un click du buton fermer toutes applications ouvertes. Si je mets ce code dans un bouton, j'ai une procédure. Donc, je suis bien obligé d'y rajouter "result" dans var. Le problème c'est que j'obtiens toujours l'erreur suivante:
et rien ne se passe!
Code : Sélectionner tout - Visualiser dans une fenêtre à part La valeur affecté à 'result' n'est jamais utilisé
Bonjour,
Si result (nombre d'appli fermées) ne sert à rien, écrire simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0) ;
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager