| Fermer un programme externe à PANORAMIC | |
|
|
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: Fermer un programme externe à PANORAMIC Lun 11 Avr 2016 - 15:12 | |
| Tout est dans le titre et bien expliqué dans le code. Servez-vous. - Code:
-
rem ============================================================================ rem Fermer un programme externe à PANORAMIC rem ============================================================================ rem Pour fermer un programme, il suffit d envoyer le message WM_CLOSE à sa rem fenêtre principale. rem Tout d abord, on détermine le handle de la fenêtre du programme qu on désire rem fermer. rem Pour cela, on dispose de la fonction HANDLE_FORM() de Panoramic à laquelle rem on transmettra le titre de la fenêtre en question. rem Ensuite on envoie le message WM_CLOSE rem ============================================================================ rem Comme exemple, on va tester notre SUB sur la calculatrice(calc.exe) puis sur rem Notepad++. rem (Vous pouvez bien sûr choisir un autre programme) rem Lancez une instance de la calculatrice (calc.exe) rem Observez que la barre de titre de la fenêtre est "calculatrice". rem C est ce texte qu on va transmettre à la fonction HANDLE_FORM() pour rem déterminer le handle de la fenêtre. rem Si la fenêtre est trouvée (son handle est <> 0), on lui envoie le message rem WM_CLOSE qui est tout simplement un code : 10 en hexa rem La fenêtre de l application sera fermée rem ============================================================================ rem Pour info : rem On a utilisé la fonction "PosteMessageA" qui est asynchrone. rem Son rôle est simplement de placer le message dans la queue des messages à rem traiter et retourne immédiatement. rem Elle ne se préoccupe donc pas de savoir si le message a été correctement traité. rem ============================================================================ Close_Form("Calculatrice") Close_Form("new 1 - Notepad++") end rem ============================================================================ SUB Close_Form(titre$) dim_local hWnd,WM_CLOSE,ret% WM_CLOSE = hex("10") dll_on "user32" hWnd = handle_form(titre$) if hWnd <> 0 ret% = dll_call4("PostMessageA",hWnd,WM_CLOSE,0,0) if ret% = 1 message "La fenêtre de : " + titre$ + " a été fermée" else message "ERREUR dans la fonction !!!" end_if else message "Impossible de trouver la fenêtre !" end_if dll_off END_SUB rem ============================================================================
| |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Fermer un programme externe à PANORAMIC Lun 11 Avr 2016 - 17:15 | |
| Testé ! Fonctionne parfaitement !
Merci Papydall ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fermer un programme externe à PANORAMIC Lun 11 Avr 2016 - 17:31 | |
| Merci Mark37 pour le retour | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fermer un programme externe à PANORAMIC Lun 11 Avr 2016 - 19:20 | |
| Encore un bon truc à savoir !
Merci Papydall.
| |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Fermer un programme externe à PANORAMIC Lun 11 Avr 2016 - 19:25 | |
| Encore une astuce a mettre de coté ! Au passage je rappelle que la KGF de Klaus le fait aussi très bien. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fermer un programme externe à PANORAMIC Lun 11 Avr 2016 - 22:19 | |
| Je ne sais pas si c'est vraiment le sujet, mais sinon, pour 'tuer' un programme récalcitrant dont on connaît le nom de l'exécutable (ici Prog.exe), il y a toujours la possibilité en ligne de commande de faire: - Code:
-
EXECUTE_WAIT "cmd.exe /c taskkill.exe /F /IM Prog.exe /T" Et j'avoue que je l'utilise assez souvent (je me suis même fait un petit utilitaire 'Kill' qui sert à ça). Je rappelle que pour avoir la liste de tous les exécutables en train de tourner, il faut faire, toujours en ligne de commande: - Code:
-
tasklist.exe | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fermer un programme externe à PANORAMIC Lun 11 Avr 2016 - 23:05 | |
| Jean Claude, Minibug, merci pour vos retours. @JL35 Personnellement, j’ai épinglé sur la barre de tâches kill_Panoramic.exe pour le retrouver à porté de main le cas échéant. Je rappelle ici le code - Code:
-
rem ============================================================================ rem "Tuer" Panoramic.exe rem ============================================================================ rem Il arrive parfois que PANORAMIC.EXE plante pour une raison ou une autre. rem La SUB Kill_Panoramic_exe() permet de "tuer" toute instance de PANORAMIC.exe rem REMARQUE : rem Pour "tuer" un .exe quelconque, il suffit de préciser son nom au lieu de rem 'Panoramic.exe' rem Vous pouvez paramétrer la SUB pour cela. rem ============================================================================ hide 0 Kill_Panoramic_exe() terminate : end rem ============================================================================ SUB Kill_Panoramic_exe() dim_local scr$,q$ scr$ = "C:\TEMP\killpano.vbs" q$ = chr$(34) FILE_OPEN_WRITE 9999,scr$ FILE_WRITELN 9999,"strComputer = " + q$ +"." +q$ FILE_WRITELN 9999,"strProcessKill = " + q$ + "'Panoramic.exe'" + q$ FILE_WRITELN 9999,"Set objWMIService = GetObject(" + q$ + "winmgmts:"+ q$ + " _" FILE_WRITELN 9999,"& " + q$ + "{impersonationLevel=impersonate}!\\" + q$ + " & strComputer & " + q$ + "\root\cimv2" + q$ + ")" FILE_WRITELN 9999,"Set colProcessList = objWMIService.ExecQuery _" FILE_WRITELN 9999,"(" + q$ + "Select * from Win32_Process Where Name = " + q$ + " & strProcessKill )" FILE_WRITELN 9999,"For Each objProcess in colProcessList" FILE_WRITELN 9999,"objProcess.Terminate()" FILE_WRITELN 9999,"Next" FILE_WRITELN 9999,"WSCript.Echo " + q$ + "Just killed process " + q$ + " & strProcessKill" FILE_WRITELN 9999,"WScript.Quit"
FILE_CLOSE 9999 EXECUTE_wait scr$ FILE_DELETE scr$ : ' La suppression du fichier n'aura pas lieu, puisque "Panoramic.exe" est déjà tué avant d'arriver ici! END_SUB rem ============================================================================
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fermer un programme externe à PANORAMIC Mar 12 Avr 2016 - 17:49 | |
| Et pourquoi pas tout simplement taskkill /F /IM Panoramic.exe ? Mon kill plus général affiche la liste des tâches en cours (tasklist), et je clique sur la tâche que je veux tuer (ce qui déclenche un taskkill). Il y a parfois des programmes qui se lancent intempestivement, alors c'est bien pratique.
Je rappelle que pour avoir la liste des programmes qui se lancent automatiquement au démarrage du système, il faut faire en ligne de commande ('Windows' + 'R') msconfig, onglet 'Démarrage' | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fermer un programme externe à PANORAMIC Mar 12 Avr 2016 - 18:25 | |
| | |
|
| |
mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Fermer un programme externe à PANORAMIC Mar 12 Avr 2016 - 18:44 | |
| pour ma part, j'avais une méthode infaillible JE RALE ET JE TOURNE EN ROND DEVANT L ORDINATEUR merci pour votre méthode qui a l'air plus efficace | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fermer un programme externe à PANORAMIC Mar 12 Avr 2016 - 18:56 | |
| - Citation :
- pour ma part, j'avais une méthode infaillible
JE RALE ET JE TOURNE EN ROND DEVANT L ORDINATEUR Pendant combien de temps ? - Jusqu'à épuisement de la batterie !!!! Ce n’est pas un robot déréglé, ça ? | |
|
| |
mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Fermer un programme externe à PANORAMIC Mer 13 Avr 2016 - 19:16 | |
| | |
|
| |
Contenu sponsorisé
| Sujet: Re: Fermer un programme externe à PANORAMIC | |
| |
|
| |
| Fermer un programme externe à PANORAMIC | |
|