Ouvrir l'explorateur

Résolu
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022 - 11 août 2006 à 10:04
 Utilisateur anonyme - 12 août 2006 à 18:59
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

Utilisateur anonyme
11 août 2006 à 10:51
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
3
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022
11 août 2006 à 10:58
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+
3
Utilisateur anonyme
11 août 2006 à 11:06
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
3
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022
11 août 2006 à 11:13
Merci beaucoup.
IMPECCCCCCCCC.

A+
3

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

Posez votre question
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022
11 août 2006 à 22:53
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+
3
Utilisateur anonyme
12 août 2006 à 16: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
3
Utilisateur anonyme
12 août 2006 à 11:24
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
0
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022
12 août 2006 à 15:43
Ca marche pas, toujour la boite de dialogue
"Impossible de trouver la fenêtre !"

???

A+
0
Utilisateur anonyme
12 août 2006 à 16:06
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
0
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022
12 août 2006 à 16:12
oui MaVar est identique, mais marche pas.
0
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022
12 août 2006 à 17:29
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+
0
Utilisateur anonyme
12 août 2006 à 17:42
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
0
dodineau Messages postés 45 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 11 mars 2022
12 août 2006 à 18:11
marche pas.
Les fenêtres restent ouvertes et message : Impossible de trouver la fenêtre
0
Utilisateur anonyme
12 août 2006 à 18:59
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
0
Rejoignez-nous