| Une autre façon de terminer une application. | |
|
|
Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Une autre façon de terminer une application. Dim 16 Juil 2017 - 2:53 | |
| - Code:
-
rem ============================================================================ rem FatalAppExit rem ============================================================================ rem Une autre façon de terminer une application rem Affiche un message et termine l’application quand on ferme la boite rem ============================================================================ FatalAppExit() end SUB FatalAppExit() dim_local ret% dll_on "kernel32" ret% = dll_call2("FatalAppExitA",0,0) dll_off END_SUB rem ============================================================================
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une autre façon de terminer une application. Dim 20 Aoû 2017 - 17:26 | |
| J'ai un problème avec une application qui ne veut pas se terminer proprement, et je ne vois pas du tout pourquoi (pas de timer, pas de manoeuvres scabreuses...) Je clique sur la croix de fermeture qui m'amène directement (ON_CLOSE) sur un TERMINATE, et j'ai systématiquement ceci: PANORAMIC.exe a cessé de fonctionner ... ... Fermer le programmeje clique et: Runtime error 217 at 004027FCJ'ai essayé ta méthode qui marche très bien. Inconvénient pour moi (et pour l'utilisateur tiers éventuel): ça affiche un message d'erreur qu'il faut acquitter. Il y a moyen de tuer le processus et de quitter discrètement le programme: - Code:
-
Quit: dll_on "kernel32" i% = dll_call1("ExitProcess",0) dll_off TERMINATE Le dll_off et le Terminate sont là pour la forme, mais ils ne servent plus à rien, on ne revient pas de la dll. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une autre façon de terminer une application. Dim 20 Aoû 2017 - 18:37 | |
| ... et encore une autre façon .... sans rien acquitter ! - Code:
-
label quit dim ret% button 10 : caption 10,"quitter" : on_click 10,quit end
Quit: dll_on "user32" ret% = dll_call4("PostMessageA",handle(0),16,0,0) dll_off
| |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une autre façon de terminer une application. Dim 20 Aoû 2017 - 19:14 | |
| Vous trouverez sur mon webdav un fichier Kill.exe (compilé à partir d’un source Delphi). Il permet de tuer n’importe quelle application récalcitrante. J’en ai créé un raccourci que j’ai épinglé dans la barre de tâche pour être facilement accessible. Ça me rend bien de services quand j’en ai besoin. Utilisation : Positionner le viseur sur le programme à tuer (son nom s'affichera en jaune sur la fenêtre) puis cliquer sur KillVoici le code en Delphi si ça vous intéresse. - Code Delphi:
- Code:
-
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) image1: TImage; Button1: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Déclarations privées } public { Déclarations publiques } end;
var Form1: TForm1; function recuphandle():integer;stdcall;
implementation
{$R *.DFM}
var prog, pollux : integer; nom : string;
const crMyCursor = 25;
// fonction de récuperation du handle de l'apps par sa position à l'écran
function recuphandle():integer; var pos : TPoint; begin getcursorpos(pos); result := windowfrompoint(pos); end;
// kill du processus par son handle
procedure TForm1.Button1Click(Sender: TObject); var nprocessid : integer; processhandle : thandle; begin getwindowthreadprocessid(prog, @nprocessid); processhandle := openprocess(PROCESS_TERMINATE, FALSE, nprocessid); terminateprocess(processhandle, 4); formcreate(form1); end;
// implémentation du curseur 'cible' dans la liste des curseurs valides
procedure TForm1.FormCreate(Sender: TObject); begin label2.caption := ''; button1.enabled := false; Screen.Cursors[25] := LoadCursor(HInstance, 'CIBLE'); image1.cursor := crMyCursor; end;
// récupération du nom de l'application
procedure TForm1.image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin HWND (prog) := recuphandle(); // on range le handle de l'apps dans prog pollux := integer(getparent(prog)); setlength(nom, 100); getwindowtext (prog, pchar(nom), 100); label2.caption := nom; if label2.caption <> '' then button1.Enabled := true; end;
end.
| |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une autre façon de terminer une application. Dim 20 Aoû 2017 - 19:51 | |
| ... Et une autre ... - Code:
-
label quit dim ret% button 10 : caption 10,"quitter" : on_click 10,quit end
Quit: dll_on "user32" ret% = dll_call1("PostQuitMessage",0) dll_off return : ' Peut être omis
Et encore ... - Code:
-
label quit dim ret% button 10 : caption 10,"quitter" : on_click 10,quit end
Quit: dll_on "kernel32" ret% = dll_call1("ExitThread",0) dll_off return : ' Peut être omis
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une autre façon de terminer une application. Dim 20 Aoû 2017 - 20:37 | |
| Bonsoir papydall,
Pour moi je n'ai pas fait aussi sophistiqué, mais ce qui suit me convient: J'ai mis un raccourci vers Task Manager sur le bureau C:\Windows\System32\taskmgr.exe ça m'affiche les tâches en cours, je clique droit sur celle que je veux tuer, 'Arrêter le processus', et c'est radical, sans bavure. Et j'ai de temps en temps l'occasion de m'en servir ! (ça permet aussi de voir quelles sont les tâches actives en cours). | |
|
| |
Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 11:07 | |
| Bonjour On peut aussi lancer taskmgr.exe avec les touches Ctrl + Shift + Esc | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 17:23 | |
| Exact. Encore faut-il s'en souvenir au moment où on en a besoin ! Tiens, un petit aide-mémoire des raccourcis clavier (sans doute non exhaustif): - Code:
-
' Raccourcis clavier DIM a$,b$,r$,i%,j%,k%,y%,n%,hl%,wl%,c%,ca$(10,30),nb%(10) DATA "1","- Généraux, touches :" DATA "Alt/F4: Fermer l'application en cours" DATA "Ctrl/C: Copier la sélection dans le presse-papier" DATA "Ctrl/X: Déplacer la sélection vers le presse-papier" DATA "Ctrl/V: Coller le presse-papier au curseur" DATA "Ctrl/Z: Annuler" DATA "Ctrl/Y: Rétablir" DATA "Ctrl/A: Tout sélectionner" DATA "Ctrl/P: Imprimer" DATA "Ctrl/Esc: Afficher le menu démarrer" DATA "Ctrl/Maj/i: indenter la sélection (8 espaces)" DATA "Ctrl/Maj/u: désindenter la sélection de 8 espaces" DATA "Alt/Tab: Fenêtre précédente (en cascade)" DATA "Alt/Esc: Parcourir les fenêtres ouvertes" DATA "F1: Afficher l'aide" DATA "F3: Recherche de fichiers" DATA "Ctrl/Maj/Esc: Affiche gestionnaire de tâches (taskmgr)" DATA "Ctrl/Alt/Sup: Gestionnaire de tâches" DATA "Ctrl/clic: Sélectionner plusieurs éléments" DATA "Shift/clic: Sélectionner tous entre deux clics" DATA "Alt/Maj: Repasser le clavier en français" DATA "Maj/Suppr: Suppression définitive fichier ou dossier"
DATA "2","- Touche Windows +" DATA "(seule): Ouvrir le menu Démarrer" DATA "E: Ouvrir l'explorateur" DATA "D: Afficher le bureau (en bascule)" DATA "F: Ouvrir 'Rechercher'" DATA "R: Exécuter une application" DATA "U: Ouvrir le Gestionnaire d'utilitaires" DATA "L: Verrouiller le pc" DATA "P: Mode d'affichage" DATA "Pause: Propriétés système" DATA "Maj/clic: Nouvelle instance d'un programme" DATA "Ctrl/F: Recherche ordinateur sur réseau"
DATA "3","- Divers Windows (fl.=flèche) :" DATA "Ctrl/roulette: Zoomer/dézoomer" DATA "Ctrl/fl.g/d: Curseur au début du mot" DATA "Shift/fl.g/d: Sélection texte" DATA "Ctrl/Shift/fl.g/d: Sélection mot entier" DATA "Ctrl/Backspace: Supprimer un mot entier" DATA "Ctrl/F4: Fermer une fenêtre (ou un pc)" DATA "Ctrl/Maj/clic: Ouvrir en tant qu'administrateur"
DATA "4","- Gestion des fenêtres :" DATA "Alt/Tab: Passer d'une fenêtre à l'autre" DATA "Alt/Shift/Tab: Idem, en ordre inverse" DATA "Windows/Tab: Comme Alt/Tab" DATA "Windows/D: Masquer toutes les fenêtres (bascule)" DATA "Windows/fl.b: Rétrécir la fenêtre" DATA "Windows/fl.h: Agrandir la fenêtre" DATA "Windows/fl.g: Fenêtre à gauche de l'écran" DATA "Windows/fl.d: Fenêtre à droite de l'écran" DATA "Ctrl/N: Ouvrir une nouvelle fenêtre" DATA "F5 ou Ctrl/R: Actualiser la fenêtre active"
DATA "5","- Explorateur :" DATA "Alt/Entr: Propriétés de l'élément sélectionné" DATA "Suppr: Supprimer l'élément sélectionné" DATA "Maj/Suppr: Supprimer définitivement l'élément" DATA "F2: Renommer l'élément sélectionné" DATA "F"
READ a$ WHILE a$ <> "F" c% = VAL(a$): READ a$: ca$(c%,0) = a$: ' nouvelle catégorie n% = 0 READ a$ WHILE LEN(a$)>1 n% = n%+1: ca$(c%,n%) = a$: READ a$ END_WHILE nb%(c%) = n%: ' nb 'éléments END_WHILE
WIDTH 0,420: HEIGHT 0,440: BORDER_SMALL 0: CAPTION 0,STRING$(30," ")+"- RACCOURCIS CLAVIER -" COLOR 0,196,255,255: FONT_NAME 0,"Consolas": FONT_SIZE 0,10
hl% = 16: ' hauteur d'une ligne de Memo y% = 0: wl% = WIDTH_CLIENT(0) n% = 10 FOR j% = 1 TO c% n%=n%+1: ALPHA n%: TOP n%,y%: FONT_BOLD n%: CAPTION n%,ca$(j%,0) y%=y%+15 n%=n%+1: LIST n%: TOP n%,y%: WIDTH n%,wl%: HEIGHT n%,nb%(j%)*hl% COLOR n%,255,255,180 FOR i% = 1 TO nb%(j%) a$ = ca$(j%,i%): k% = INSTR(a$,":"): b$ = LEFT$(a$,k%-1) IF k%<=12 THEN b$ = b$+STRING$(12-LEN(b$)," ") ITEM_ADD n%,b$+" "+RIGHT_POS$(a$,k%+2) NEXT i% y% = y%+HEIGHT(n%) NEXT j% HEIGHT 0,y%+55 END Et... pardon papydall pour la pollution | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 18:47 | |
| Encore une autre touche qui peut servir
la touche "impercr/Syst" à coté de F12 qui sert a copier l'espace du bureau et de coller a paint ou autre logiciel de retouche de photo
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 19:33 | |
| Celle-ci, tout de même, tout le monde la connaît ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 22:43 | |
| - Citation :
- Celle-ci, tout de même, tout le monde la connaît !
Par contre, je parie un programme de 100 lignes de code contre 10 lignes que tu ne connais pas au moins une de combinaisons suivantes ! * Agrandir ou réduire la fenêtre active : F11 * Afficher et masquer le bureau : Win + D * Réduire toutes les fenêtres : Win + M * Afficher la boîte de dialogue Propriétés système : Win + Pause/Break * Effectuer un zoom avant ou arrière à l'aide de la Loupe : Win + plus (+) ou moins (-) | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 22:51 | |
| T'as gagné haut la main papydall, il en manquait 3 à ma collection, je les rajoute. Ça fera moins de 10 lignes, mais bon... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 22:56 | |
| Afficher un aperçu du bureau. : Win + Espace | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 23:06 | |
| Ta dernière: Windows/Espace est inopérante chez moi... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une autre façon de terminer une application. Lun 21 Aoû 2017 - 23:34 | |
| Sous W7, Win + Espace ( sans lâcher la touche Win ) EDIT: cliquez ! | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une autre façon de terminer une application. Mar 22 Aoû 2017 - 13:27 | |
| Je confirme, sous Windows 7: Touche Win + barre d'espace (sans lâcher la touche Win) = Rien du tout, que dalle, que nib ! | |
|
| |
Contenu sponsorisé
| Sujet: Re: Une autre façon de terminer une application. | |
| |
|
| |
| Une autre façon de terminer une application. | |
|