dodineau
Messages postés45Date d'inscriptiondimanche 4 juillet 2004StatutMembreDernière intervention11 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.
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
dodineau
Messages postés45Date d'inscriptiondimanche 4 juillet 2004StatutMembreDernière intervention11 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+
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
dodineau
Messages postés45Date d'inscriptiondimanche 4 juillet 2004StatutMembreDernière intervention11 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.
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:
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
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
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
dodineau
Messages postés45Date d'inscriptiondimanche 4 juillet 2004StatutMembreDernière intervention11 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.
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
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