Minimiser un programme extérieur en VB NET

Résolu
Minuitdixhuit - 11 mai 2013 à 00:06
 Utilisateur anonyme - 13 mai 2013 à 13:43
Bonjour à tous.
Visual Studio 2010

Ma problematique est la suivante :
Avec un :

Process.Start(Environment.ExpandEnvironmentVariables("%SystemRoot%\explorer.exe"), Environment.ExpandEnvironmentVariables("%SystemRoot%\Fonts"))

j'ouvre le répertoire (généralement : C:\Windows\Fonts) qui me permet de vérifier "manuellement" qu'une police est installée. Je fais ainsi car je veux que la vérification soit faite "de visu" par l'utilisateur et non par programme.

Mais ensuite je voudrais refermer cette fenêtre ou au moins la minimiser et ceci par programme pour qu'elle ne reste pas béante derrière mon application...

Avez-vous une suggestion ?

Merci.

PS : si vous vous demandez pourquoi ma question est tordue, je vous répondrai que c'est parce que mon application est tordue... Et si vous êtes vraiment curieux je vous la communiquerai...

64 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mai 2013 à 17:17
Et regarde : je l'ai trouvée (parce que moi, je l'ai cherchée) cette discussion d'à peine deux jours ! ===>>
Tapez le texte de l'url ici.
Il reste à espérer que tu sauras (je commence à en douter) l'analyser et en "tirer" ce qui t'intéresse et que tu as à utiliser.
PS : juste un "petit détail" : moi, je ne suis pas VB.Nettiste ! Toi, tu l'es


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
12 mai 2013 à 17:50
Bonjour à tous,

Hé bien...
J'ai ouvert la chasse... il tue ce qu'il veux
Car la question n'est pas de lister les processus mais de comment "fermer la fenêtre"

Je ne vois pas trop pourquoi un tuerait Explorer.exe... (uniquement pour redémarrer le PC)

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mai 2013 à 18:02
Tout-à-fait, acive,
mais dans son exemple, c'est bel et bien le processus de Explorer.exe.
Et s'il le tue, Windows devient malade
Il peut par contre tuer l'application qui ouvre Explorer (elle se nomme "Fonts" dans le gestionnaire des tâches, volet des Applications (pas celui des processus).
S'il veut se contenter maintenant d'agir sur la fenêtre Explorer ouverte, c'est encore autre chose (extraction du handle pour l'utiliser ensuite dans une instruction autre). Je sais faire en VB6 (avec des fonctions de l'Api de Windows). Le chose doit donc être également faisable depuius VB.Net, soit avec des fonctions natives, soit (si ce "simple" n'est pas offert) par la transposition en VB.Net (que je ne connais pas et ne possède pas) du code que j'écrirais en VB6.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Minuitdixhuit
12 mai 2013 à 18:09
@ucfoutu
Ok. La minus des tes qualités est certainement la disponibilité. Merci.
Non, je n'ai pas les 2 bras cassés (je suis saxophoniste alto à l'orchestre national de Lisbonne pour 800 euros par mois et j'ai encore besoin de mes deux mains et de mes 10 doigts pour nourrir) et j'ai passé un certain temps à chercher ta solution et celle des autres sur des sites brésiliens, américains et français... sans trouver. Tant pis pour moi.
Tu as une longue pratique des forums et sans doute une fatigue visible des clowns comme moi, je peux le comprendre.
Je ne suis pas VB.Netiste comme tu dis je suis juste à utiliser un occasionellement logiciel gratuit pour participer à l'apprentissage des puceaux (je ne sais pas si le terme est bon, je l'ai trouvé sur un traducteur automatique, ou bien "novice" mais je crois que c'est insultant) qui comme moi au début ont pataugué dans les difficultés musicales de la compréhension des accords bizares qu'on pouvait trouver en musique brésilienne (la plus complexe, pour pas dire tordue) le jazz et dans une certaine mesure Tzigane et même d'après mes amis français votre "musette" qui est complexe aussi.
Voila que je voulais soulager l'angoisse des utilisateurs de ma petite application.
Finalement je suis un peu désemparé mais le fond est plus important que la forme et je vais abandonner cette idée stupide que j'ai eu pour me consacrer plus au fond.
J'espère que tout malentendu sera dissipé.
N'hésite pas à nous visiter si tu passes à Lisbonne et que tu aimes la musique, la pêche et la sieste...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 mai 2013 à 18:12
Sinon, on peut énumérer les titres des fenêtres ouvertes et fermer celle qui contient la chaîne "Fonts"
For Each p As Process In Process.GetProcesses
    If p.MainWindowTitle.Contains("Fonts") Then
        p.CloseMainWindow()
    End If
Next
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mai 2013 à 18:23
Ou directement, sans énumérer, en transposant simplement ceci (VB6) en VB.Net
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_CLOSE = &H10

Private Sub Command2_Click()
  Dim couichwnd As Long
  couichwnd = FindWindow(vbNullString, "Fonts")
  If couichwnd = 0 Then Exit Sub
  PostMessage couichwnd, WM_CLOSE, 0&, 0&
End Sub

Et je ne serais pas étonné de ce que VB.Net offre du natif pour faire lui-même cela, sans fonctions de l'Api.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
12 mai 2013 à 18:23
Et pour juste la réduire, il faut utiliser une fonction des api windows comme le suggérait ucfoutu.
Voici l'exemple ci-desssus modifié et à tester avec un bouton.
Imports System.Runtime.InteropServices
Public Class Form1
    Public Const SW_MINIMIZE = 6

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function ShowWindow(ByVal hwnd As IntPtr, ByVal nCmdShow As Int32) As Boolean
    End Function
   
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Process.Start(Environment.ExpandEnvironmentVariables("%SystemRoot%\explorer.exe"), Environment.ExpandEnvironmentVariables("%SystemRoot%\Fonts"))

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For Each p As Process In Process.GetProcesses
            If p.MainWindowTitle.Contains("Fonts") Then
                ShowWindow(p.MainWindowHandle, SW_MINIMIZE)
            End If
        Next
    End Sub
End Class
0
Utilisateur anonyme
12 mai 2013 à 18:28
Et je ne serais pas étonné de ce que VB.Net offre du natif pour faire lui-même cela, sans fonctions de l'Api

Process.Start renvoie Nothing pour explorer.exe et c'est dommage car inutilisable ensuite. Un spécialiste pourra peut-être donner une explication
0
Utilisateur anonyme
12 mai 2013 à 18:29
Salut banana,

C'est ce que je cherchais depuis un petit moment dans ma tête...
Oh la... y'a des trous... de mémoire

Minuit:
je l'ai trouvé sur un traducteur automatique

- Si tu utilises un correcteur automatique il se peut qu'il traduise relativement mal ou intreprète mal certaines idées ou termes.
Par conséquent, toi, tu as une impression de "agressivité" ou autres.

- Se tu utilizas um corretor automático, pode acontecer que ele traduza mal ou uma ma interpretação de certos termos ou ideias.
Dessa maneira pode-te levar a crer que numa espécie de "agressão" ou outras.

Waouw... sans traducteur tout ça !!!

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mai 2013 à 18:43
Process.Start renvoie Nothing pour explorer.exe et c'est dommage car inutilisable ensuite. Un spécialiste pourra peut-être donner une explication

parce que le processus Explorer.Exe tourne en permanence et est utilisé en permanence (y compris pour tout ce qui est graphique : contrôles, etc ...) par Windows. Il n'y a donc qu'un seul processus Explorer.exe et il ne faut surtout pas le tuer. Lorsque l'on ouvre l'explorateur, on se sert de ce processus et on ouvre une fenêtre (une appli dans le seul volet des applications du gestionnaire des tâches).

PS : pour les malheureux qui se seraient un jour "amusés" à tuer Explorer.Exe et se seraient retrouvés avec un Windows réagissant "bizarrement". Il suffit, pour réparer, d'aller dans le gestionnaire des tâches ===>> Volet Applications ===>> Nouvelle tâche ===>> saisir Explorer ===>> OK. De cette manière, le processus Explorer.Exe ""renaîtra" dans le volet "Processus" et Windows retrouvera toute santé
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
12 mai 2013 à 18:48
Oui, avec Ctrl+Alt+Supp car il n'y aura plus le bouton Démarrer


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Minuitdixhuit
12 mai 2013 à 18:51
@ Acive
" - Se tu utilizas um corretor automático, pode acontecer que ele traduza mal ou uma ma interpretação de certos termos ou ideias.
Dessa maneira pode-te levar a crer que numa espécie de "agressão" ou outras. "

Ora essa... Estou de queixo no chão! A Guadalupa fala português melhor que qualquer alfacinha. Eh pa, parabéns e obrigadinha! De onde és? Sou da praia de Carcavelos, perto de Lisboa.
0
Utilisateur anonyme
12 mai 2013 à 18:56
parce que le processus Explorer.Exe tourne en permanence et est utilisé en permanence (y compris pour tout ce qui est graphique : contrôles, etc ...) par Windows. Il n'y a donc qu'un seul processus Explorer.exe et il ne faut surtout pas le tuer. Lorsque l'on ouvre l'explorateur, on se sert de ce processus et on ouvre une fenêtre (une appli dans le seul volet des applications du gestionnaire des tâches).

Ce n'est pas l'explication que j'attendais, celle-là je la connaissait déjà. Je me demandais pourquoi Process.Start ne renvoyait rien.
0
Utilisateur anonyme
12 mai 2013 à 18:58
MinuitDixhuit:
Je t'ai envoyé un MP, et avec le code de banana32 tu as testé?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mai 2013 à 19:06
Il ne renvoie rien parce qu'il de démarre aucun processus, ce processus-là étant déjà présent.
Tu peux observer ces choses-là manuellement :
- toutes fenêtres d'utilisation de l'explorateur étant fermées ===>> aucune dans le volet applications du gestionnaire de tâches. Explorer.exe est présent dans le volet des processus
- en ligne de commande ===>> tu saisis "Explorer" et valides ===>> toujours un seul processus Explorer.Exe, mais, cette fois-ci, une appli nouvelle dans le volet "Applications", appli dont le caption de la barre de titre sera le nom du dossier ou sous-dossier choisi automatiquement (par défaut) par Windows.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
12 mai 2013 à 19:13
Merci ucfoutu pour ton explication logique. Mais Process.Start devrait au moins renvoyer le process explorer.exe.
Je suis pas barbichu alors...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mai 2013 à 22:03
Bon.
Je crois que nous avons fait le tour de la question.
Reste à espérer que le demandeur s'y connaisse suffisamment pour s'en sortir. Qu'il s'y connaisse au moins un tout petit peu mieux qu'en matière de pêche et ... de poissons.
Car cette phrase :
parce que moi aussi j'ai autre chose à faire comme la sieste et pêcher la morue (Portugal oblige)

m'a fait exploser de rire, ainsi que tous mes amis pêcheurs (dont 5 Portugais) à qui je viens de la rapporter
Reste également à espérer que ses connaissances en musique ne sont pas du même niveau.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Minuitdixhuit
12 mai 2013 à 23:57
Tu vois ucfoutu, ta morgue te pend au nez.
Des amis tu en as donc plus de 5 dont au moins 5 portugais ! Quelle chance que tu as !
La réalité c'est que tu n'en as pas un, c'est pour ça que tu traines tes 12825 messages sur le net. L'ennui.
Mais tu as le droit de vivre tes pauvres fantasmes. Cela ne me concerne pas.
Je ne te souhaite qu'une chose : des amis et si possible, au moins un portugais. La plus part des gens de mon pays sont des braves gens avec une casquette, humbles, respectueux et attentifs aux autres et ils n'auraient pas rire à ta moquerie à leur sujet. J'ose espérer que tu n'es pas représentatif de la France que ma grand-mère admirait tant (C'est à cause d'elle que je connaisse un peu le français, c'était obligatoire les fins de semaines chez elle ! Je crois qu'elle s'appelle snobe en français)
Je ne sais pas si tu as réellement 71 ans en tout cas bravo si tu vas encore à la pêche à cet âge c'est que tu as une bonne degaule. J'ai lu aussi ta confession dans ton profil. Elle est léchante mais plus vraiment adaptée il me semble à ton état d'esprit. Tu es de bon conseil, accepte le mien : change.

Quant à mes connaissances en musique, tu as voulu me faire du mal d'écoeurement, tu as réussi parce que c'est ma vie. Tu peux être réjoui. Cependant, si tu as besoin d'un conseil musical, n'hésite pas, dans la mesure de mes moyens, je t'aiderai autrement qu'en me foutrant de ta gueule, parce que les tiens, dans le domaine où tu penses exceller me furent d'un pauvre secours.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 mai 2013 à 00:42
Vraiment désolé pour toi... Vraiment .... Tu viens encore de me faire rire et ne sais même pas de quoi tu parles
Et le plus drôle (mais tu ne peux le savoir) est sans aucun doute :
J'ose espérer que tu n'es pas représentatif de la France

Et euh .... aucun de mes amis pêcheurs Portugais ne porte de casquette (ni celui qui arrive en bicyclette, ni celui qui ne roule qu'en BMW, ni le plus jeune (vient d'avoir 17 ans), ni le plus vieux (près de 80 ans) ni les autres, hein ...). Ils savent par contre toujours, eux, de quoi ils parlent et ne mentent jamais
Je me garderais par ailleurs bien de te demander des conseils en matière de musique, maintenant que j'ai pu constater certaines petites choses.
Allons Allons ! Je te souhaite bonne chance (tu me parais en avoir sacrément besoin).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
13 mai 2013 à 01:43
Bonjour,

Reste à espérer que le demandeur s'y connaisse suffisamment pour s'en sortir.


Que cela lui plaise ou non, il devrait en avoir assez lu pour se convaincre qu'il doit songer à un nouveau plan, génial ou diabolique, c'est selon, pour obliger convaincre ses utilisateurs à passer leurs fichiers de polices un par un pour voir si La Policeest là. J'imagine déjà ses clients qui cherchent la bonne fenêtre parmi les 3 ou 4 qu'ils ont déjà pu ouvrir précédemment. Je suis peut-être paranoïaque, mais je sais une chose : on se procure des programmes (payants ou gratuits) pour régler un problème, pas pour en créer de nouveaux. C'est le travail du développeur de s'assurer que son programme règle le problème. Si on peut se contenter d'un programme bâclé pour sa consommation personnelle, c'est un très mauvais exercice de marketing (ou même de relations publiques) que de distribuer des programmes bâclés, fussent-ils gratuits. Mais bon, il y en a qui ne veulent pas ce genre de réponse ou de mise en garde.
0
Rejoignez-nous