Ouvrir l'explorateur [Résolu]

Signaler
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007
-
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
-
Bonjour,
je voudrais savoir quelle commande utiliser pour ouvrir une fenêtre de l'explorateur en ayant la lettre du lecteur dans une variable.
Exemple : MaVar="n:\Temp"
Donc j'ouvre l'explorateur à la racine de N:\temp
Ensuite mon programme continue...

Je demande cela car je suis en train d'écrire un soft qui écrit plusieurs fichiers dans un répertoire et je voudrais que l'utilisateur voit ces fichiers s'inscrire.

Merci pour votre aide.

A+

14 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Salut,

Esseye avec



Dim
MaVar
As

String
=
"n:\Temp"

System.Diagnostics.Process.Start(MaVar)





Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007

Merci, ça fonctionne comme je le veux.
Le seul problème est que je voudrais voir mon logiciel devant et là la fenètre de l'explorateur la cache.
Comment inverser cela ?
Merci
A+
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Esseye comme ca:



Dim
MaVar
As

String
=
"n:\Temp"

System.Diagnostics.Process.Start(MaVar)

System.Threading.Thread.Sleep(50)

MyBase
.BringToFront()


Le Sleep pour laisser le temp à la fenêtre de s'ouvrir.




Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007

Merci beaucoup.
IMPECCCCCCCCC.

A+
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007

Oui c'est encore moi.


Maintenant que j'ai mon explorateur ouvert en arrière plan et mon logiciel au premier plan, je voudrais quitter le programme mais avant, fermer la fenêtre de l'explorateur.


Comment faire SVP...


Merci et A+
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Ah oui, j'ai compris, je n'y avais pas pensé.
Comme il cherche en fonction du nom de la fenêtre et qu'on peut chorir d'afficher le chemin complet ou juste le dossier actuelle. Donc on teste les deux:



Dim
Name
As

String
= MaVar.Substring(MaVar.LastIndexOf(
"\"
) + 1)

Dim
hWnd
As

Integer
= FindWindow(vbNullString, Name)

If

Not

CBool
(hWnd)
Then
hWnd = FindWindow(vbNullString, MaVar)

If

CBool
(hWnd)
Then

  
Call
PostMessage(hWnd, WM_CLOSE, 0, 0)

Else

  MsgBox(
"Impossible de trouver la fenêtre !"
, vbExclamation)

End

If





Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Salut,

J'ai pas trouver l'équivalent dans le framework, mais avec les apis ca marche :

Déclaration api :



Private

Declare

Function
FindWindow
Lib

"user32"

Alias

"FindWindowA"
(
ByVal
lpClassName
As

String
,
ByVal
lpWindowName
As

String
)
As

Integer

Private

Declare

Function
PostMessage
Lib

"user32"

Alias

"PostMessageA"
(
ByVal
hWnd
As

Integer
,
ByVal
wMsg
As

Integer
,
ByVal
wParam
As

Integer
,
ByVal
lParam
As

Integer
)
As

Integer

Private

Const
WM_CLOSE
As

Integer
= &H10

Private
MaVar
As

String
=
"d:\vba"




Ouverture de l'appli :



System.Diagnostics.Process.Start(MaVar)

System.Threading.Thread.Sleep(50)

MyBase
.BringToFront()




Fermeture :



Dim
hWnd
As

Integer
= FindWindow(vbNullString, MaVar)

If

CBool
(hWnd)
Then

  
Call
PostMessage(hWnd, WM_CLOSE, 0, 0)

Else

  MsgBox(
"Impossible de trouver la fenêtre !"
, vbExclamation)

End

If





Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007

Ca marche pas, toujour la boite de dialogue
"Impossible de trouver la fenêtre !"

???

A+
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Ben, faut que MaVar sois le même pour l'ouverture et la fermeture.
(j'ai oublier de remettre le tien, j'ai laisser "d:\vba" pour mes testes)
Je l'ai déclaré à l'exterieur exprès.



Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007

oui MaVar est identique, mais marche pas.
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007

Ne marche pas à 100%
Voici mon code de test
J'ouvre 2 fenêtres et je veux les refermer.

Public

Class Form1

Declare
Function FindWindow
Lib
"user32"
Alias
"FindWindowA" (
ByVal lpClassName
As
String,
ByVal lpWindowName
As
String)
As
Integer

Declare
Function PostMessage
Lib
"user32"
Alias
"PostMessageA" (
ByVal hWnd
As
Integer,
ByVal wMsg
As
Integer,
ByVal wParam
As
Integer,
ByVal lParam
As
Integer)
As
Integer

Const WM_CLOSE
As
Integer = &H10

Dim Mavar1
As
String =
"c:\windows"

Dim Mavar2
As
String =
"c:\program files"

Dim name1
As
String

Dim hWnd
As
Integer

Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.ClickSystem.Diagnostics.Process.Start(Mavar1)

System.Threading.Thread.Sleep(1000)

System.Diagnostics.Process.Start(Mavar2)

System.Threading.Thread.Sleep(1000)

MyBase.BringToFront()

End
Sub

Sub Button2_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button2.Clickname1 = Mavar1.Substring(Mavar1.LastIndexOf(

"") + 1)hWnd = FindWindow(vbNullString, name1)

If
Not
CBool(hWnd)
Then hWnd = FindWindow(vbNullString, Mavar1)

If
CBool(hWnd)
Then

Call PostMessage(hWnd, WM_CLOSE, 0, 0)

ElseMsgBox(

"Impossible de trouver la fen�ªtre !", vbExclamation)

End
Ifname1 = Mavar2.Substring(Mavar2.LastIndexOf(

"") + 1)hWnd = FindWindow(vbNullString, name1)

If
Not
CBool(hWnd)
Then hWnd = FindWindow(vbNullString, Mavar2)

If
CBool(hWnd)
Then

Call PostMessage(hWnd, WM_CLOSE, 0, 0)

ElseMsgBox(

"Impossible de trouver la fen�ªtre !", vbExclamation)

End
If

End
SubEnd

Class

Il faut un formulaire avec 2 boutons, un pour ouvrir et un pour fermer.
Si les répertoires sont par exemple c:\ et d:\, ça ne marche pas.

A+
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Oui, c'est un encore un petit oubli de ma part à cause des ""


Dim
Name
As

String
=
New
System.IO.DirectoryInfo(MaVar).Name

Dim
hWnd
As

Integer
= FindWindow(vbNullString, Name)

If

Not

CBool
(hWnd)
Then
hWnd = FindWindow(vbNullString, MaVar)

If

CBool
(hWnd)
Then

   
Call
PostMessage(hWnd, WM_CLOSE, 0, 0)

Else

  MsgBox(
"Impossible de trouver la fenêtre !"
, vbExclamation)

End

If





Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n
Messages postés
43
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2007

marche pas.
Les fenêtres restent ouvertes et message : Impossible de trouver la fenêtre
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Bon, c'est vraiment pas terrible mais ca marche :



Dim
DriveName
As

String
=
New
System.IO.DriveInfo(MaVar).VolumeLabel

Dim
Name
As

String
=
New
System.IO.DirectoryInfo(MaVar).Name

If
Name.EndsWith(
"\"
)
Then
Name = Name.Substring(0, Name.Length - 1)

Dim
StrName
As

String
= DriveName &
" ("
& Name &
")"

Dim
hWnd
As

Integer
= FindWindow(vbNullString, Name)

If

Not

CBool
(hWnd)
Then
hWnd = FindWindow(vbNullString, StrName)

If

Not

CBool
(hWnd)
Then
hWnd = FindWindow(vbNullString, MaVar)

If

CBool
(hWnd)
Then

  
Call
PostMessage(hWnd, WM_CLOSE, 0, 0)

Else

  MsgBox(
"Impossible de trouver la fenêtre !"
, vbExclamation)

End

If





Kenji



Il était une fois, un pauvre petit règlement que personne ne lisait. Il est tout sympa mais il est triste, aidez-le, lisez-le, ca lui ferait plaisir ainsi qu'a n