Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LANCER EXPLORER SUR LE NOM DE VOLUME


Information sur la source

Catégorie :Système Classé sous : Explorer, mobile, Volume Niveau : Initié Date de création : 23/11/2008 Date de mise à jour : 25/11/2008 09:58:55 Vu / téléchargé: 959 / 79

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

'2008-11-25
'Version 0.3.1
'        Suppresion de la Form ==> Module Main
'
'        Parm et "PARM" accepté
'
'       Ajout fichier ressource pour l'icone

' Cet outil a pour but d'implementer l'ouverture de 'Explorer.exe' via son nom de volume.
'
' En effet de nombreuses unités mobiles sont maintenant utilisées et d'une fois sur
' l'autre le nom de l'unité qui les accueille change, d'ou cet utilitaire.
'
'   Input: Nom du volume, attention sensible à la case
'   Ouput: Lancement d'Explorer.exe sur l'unité accueillant ce volume.

'Prereq:    runtime VB6

'Mise en oeuvre
'   Installer le programme ou vous avez l'habitude d'installer vos applications.
'             attention il faut les runtime VB6

'   Créer un bouton sur le bureau avec comme paramètre le nom du volume à explorer
'               Ex: "J:\User Pgm\Mes Programmes\ExplorerVolume.exe" E-PRODUITS
'                   "J:\User Pgm\Mes Programmes\ExplorerVolume.exe" "Mes Images"
'
 

Source

  • Option Explicit
  • '2008-11-25
  • 'Version 0.3.1
  • ' Suppresion de la Form ==> Module Main
  • '
  • ' Parm et "PARM" accepté
  • '
  • ' Ajout fichier ressource pour l'icone
  • ' Cet outil a pour but d'implementer l'ouverture de 'Explorer.exe' via son nom de volume.
  • '
  • ' En effet de nombreuses unités mobiles sont maintenant utilisées et d'une fois sur
  • ' l'autre le nom de l'unité qui les accueille change, d'ou cet utilitaire.
  • '
  • ' Input: Nom du volume, attention sensible à la case
  • ' Ouput: Lancement d'Explorer.exe sur l'unité accueillant ce volume.
  • 'Prereq: runtime VB6
  • 'Mise en oeuvre
  • ' Installer le programme ou vous avez l'habitude d'installer vos applications.
  • ' attention il faut les runtime VB6
  • ' Créer un bouton sur le bureau avec comme paramètre le nom du volume à explorer
  • ' Ex: "J:\User Pgm\Mes Programmes\ExplorerVolume.exe" E-PRODUITS
  • ' "J:\User Pgm\Mes Programmes\ExplorerVolume.exe" "Mes Images"
  • '
  • 'Declarations
  • Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
  • Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" ( _
  • ByVal lpRootPathName As String, _
  • ByVal lpVolumeNameBuffer As String, _
  • ByVal nVolumeNameSize As Long, _
  • lpVolumeSerialNumber As Long, _
  • lpMaximumComponentLength As Long, _
  • lpFileSystemFlags As Long, _
  • ByVal lpFileSystemNameBuffer As String, _
  • ByVal nFileSystemNameSize As Long) As Long
  • Private Const DRIVE_CDROM = 5
  • Private Const DRIVE_FIXED = 3
  • Private Const DRIVE_RAMDISK = 6
  • Private Const DRIVE_REMOTE = 4
  • Private Const DRIVE_REMOVABLE = 2
  • '=========================================
  • ' Create Process declaration
  • '=========================================
  • Dim TxtStart As String
  • Private Type STARTUPINFO
  • cb As Long
  • lpReserved As String
  • lpDesktop As String
  • lpTitle As String
  • dwX As Long
  • dwY As Long
  • dwXSize As Long
  • dwYSize As Long
  • dwXCountChars As Long
  • dwYCountChars As Long
  • dwFillAttribute As Long
  • dwFlags As Long
  • wShowWindow As Integer
  • cbReserved2 As Integer
  • lpReserved2 As Byte
  • hStdInput As Long
  • hStdOutput As Long
  • hStdError As Long
  • End Type
  • Private Type PROCESS_INFORMATION
  • hProcess As Long
  • hThread As Long
  • dwProcessId As Long
  • dwThreadId As Long
  • End Type
  • Private Declare Function CreateProcess Lib "kernel32" Alias _
  • "CreateProcessA" (ByVal lpApplicationName As String, _
  • ByVal lpCommandLine As String, lpProcessAttributes As Any, _
  • lpThreadAttributes As Any, ByVal bInheritHandles As Long, _
  • ByVal dwCreationFlags As Any, lpEnvironment As Any, _
  • ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
  • lpProcessInformation As PROCESS_INFORMATION) As Long
  • Private Const NORMAL_PRIORITY_CLASS = &H20&
  • Private pInfo As PROCESS_INFORMATION
  • Private sInfo As STARTUPINFO
  • Public sNull As String
  • Sub Main()
  • Dim strDrive As String
  • Dim intCnt As Integer
  • Dim NomVolume As String
  • Dim ResStr As String
  • Dim dum As Long
  • Dim RetVal As Long
  • Dim VolumeToDisplay As String
  • 'Suppression des quotes si le parametre est entre quotes
  • VolumeToDisplay = Replace(Command(), """", "", 1)
  • If VolumeToDisplay = "" Then MsgBox "Pas de parametre en entrée": End
  • For intCnt = 67 To 86 ' Scan des unité à partir de C: juqu'a Z:
  • strDrive = Chr(intCnt) & ":\"
  • Select Case GetDriveType(strDrive)
  • Case DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM, DRIVE_RAMDISK
  • '*** Récuperation du nom de volume du disque
  • NomVolume = Space$(15) 'Attribue l'espace nécessaire
  • ResStr = Space$(32) 'aux variables de type chaine de taille fixe
  • RetVal = GetVolumeInformation(strDrive, NomVolume, Len(NomVolume), _
  • dum, dum, dum, ResStr, Len(ResStr))
  • If Len(Trim(NomVolume)) > 0 Then
  • NomVolume = Left(NomVolume, Len(Trim(NomVolume)) - 1) ' Suppress right character: end of string
  • If NomVolume = VolumeToDisplay Then
  • TxtStart = "Explorer.exe " & strDrive
  • 'Lancement de l'Explorateur.
  • sInfo.cb = Len(sInfo)
  • RetVal = CreateProcess(sNull, TxtStart, ByVal 0&, ByVal 0&, 1&, _
  • NORMAL_PRIORITY_CLASS, ByVal 0&, sNull, sInfo, pInfo)
  • If RetVal = 0 Then MsgBox "Unable to start process " & TxtStart
  • End ' Exit pgm
  • End If
  • End If
  • End Select
  • Next intCnt
  • MsgBox "Le volume " & VolumeToDisplay & " n'a pas été identifié comme présent." & vbCrLf _
  • & vbCrLf & "Attention le nom du disque est sensible à la case."
  • End Sub
Option Explicit

'2008-11-25
'Version 0.3.1
'        Suppresion de la Form ==> Module Main
'
'        Parm et "PARM" accepté
'
'       Ajout fichier ressource pour l'icone

' Cet outil a pour but d'implementer l'ouverture de 'Explorer.exe' via son nom de volume.
'
' En effet de nombreuses unités mobiles sont maintenant utilisées et d'une fois sur
' l'autre le nom de l'unité qui les accueille change, d'ou cet utilitaire.
'
'   Input: Nom du volume, attention sensible à la case
'   Ouput: Lancement d'Explorer.exe sur l'unité accueillant ce volume.

'Prereq:    runtime VB6

'Mise en oeuvre
'   Installer le programme ou vous avez l'habitude d'installer vos applications.
'             attention il faut les runtime VB6

'   Créer un bouton sur le bureau avec comme paramètre le nom du volume à explorer
'               Ex: "J:\User Pgm\Mes Programmes\ExplorerVolume.exe" E-PRODUITS
'                   "J:\User Pgm\Mes Programmes\ExplorerVolume.exe" "Mes Images"
'

'Declarations
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" ( _
        ByVal lpRootPathName As String, _
        ByVal lpVolumeNameBuffer As String, _
        ByVal nVolumeNameSize As Long, _
        lpVolumeSerialNumber As Long, _
        lpMaximumComponentLength As Long, _
        lpFileSystemFlags As Long, _
        ByVal lpFileSystemNameBuffer As String, _
        ByVal nFileSystemNameSize As Long) As Long

Private Const DRIVE_CDROM = 5
Private Const DRIVE_FIXED = 3
Private Const DRIVE_RAMDISK = 6
Private Const DRIVE_REMOTE = 4
Private Const DRIVE_REMOVABLE = 2

'=========================================
'   Create Process declaration
'=========================================

Dim TxtStart As String

Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type

Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessId As Long
    dwThreadId As Long
End Type

Private Declare Function CreateProcess Lib "kernel32" Alias _
        "CreateProcessA" (ByVal lpApplicationName As String, _
        ByVal lpCommandLine As String, lpProcessAttributes As Any, _
        lpThreadAttributes As Any, ByVal bInheritHandles As Long, _
        ByVal dwCreationFlags As Any, lpEnvironment As Any, _
        ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
        lpProcessInformation As PROCESS_INFORMATION) As Long

Private Const NORMAL_PRIORITY_CLASS = &H20&

Private pInfo As PROCESS_INFORMATION
Private sInfo As STARTUPINFO
Public sNull As String

Sub Main()
    Dim strDrive As String
    Dim intCnt As Integer
    
    Dim NomVolume As String
    Dim ResStr As String
    Dim dum As Long
    Dim RetVal As Long
    Dim VolumeToDisplay As String
   
    'Suppression des quotes si le parametre est entre quotes
    VolumeToDisplay = Replace(Command(), """", "", 1)

    If VolumeToDisplay = "" Then MsgBox "Pas de parametre en entrée":   End
    
    For intCnt = 67 To 86   ' Scan des unité à partir de C: juqu'a Z:
        strDrive = Chr(intCnt) & ":\"
        Select Case GetDriveType(strDrive)
            Case DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM, DRIVE_RAMDISK
                '*** Récuperation du nom de volume du disque
                NomVolume = Space$(15)  'Attribue l'espace nécessaire
                ResStr = Space$(32)     'aux variables de type chaine de taille fixe
                RetVal = GetVolumeInformation(strDrive, NomVolume, Len(NomVolume), _
                    dum, dum, dum, ResStr, Len(ResStr))

                If Len(Trim(NomVolume)) > 0 Then
                    NomVolume = Left(NomVolume, Len(Trim(NomVolume)) - 1) ' Suppress right character: end of string
                    If NomVolume = VolumeToDisplay Then
                        TxtStart = "Explorer.exe " & strDrive
                        'Lancement de l'Explorateur.
                        sInfo.cb = Len(sInfo)
                        RetVal = CreateProcess(sNull, TxtStart, ByVal 0&, ByVal 0&, 1&, _
                            NORMAL_PRIORITY_CLASS, ByVal 0&, sNull, sInfo, pInfo)
                        If RetVal = 0 Then MsgBox "Unable to start process " & TxtStart
                    End ' Exit pgm
                    End If
                End If
        End Select
        
    Next intCnt
    MsgBox "Le volume " & VolumeToDisplay & " n'a pas été identifié comme présent." & vbCrLf _
            & vbCrLf & "Attention le nom du disque est sensible à la case."
End Sub

Conclusion

A l'écoute de vos remarques, critiques et bonnes idées
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

23 novembre 2008 14:36:56 :
.
24 novembre 2008 11:33:02 :
-Suppression de la Form passage en module Main - Traitemant du parm format Parm et "Parm" acceptés
24 novembre 2008 11:35:31 :
- Remplacement de la Form par un module Main - Parm et "Parm" format acceptable
24 novembre 2008 11:38:08 :
-remplacement de la Form par un module Main - Format du paramètre PARM et "PARM acceptable
24 novembre 2008 23:07:03 :
Réécriture code Fichier ressource pour l'icone
25 novembre 2008 09:58:55 :
Fignolage commentaires et code

Commentaires et avis

signaler à un administrateur
Commentaire de PCPT le 23/11/2008 14:59:31 administrateur CS

salut,
c'est le genre de source qui ne nécessite pas de form
place juste ton code dans un module (celui que tu as fourni est vide), avec la procédure principale publique nommée "Main", et dans les options de démarrage du projet, tu la sélectionnes.
tu peux aussi dans ce cas personnaliser l'icon de l'exe en l'ajoutant en ressources.

code non testé, l'idée n'est pas bête. reste le problème des disques non-nommés.
++

signaler à un administrateur
Commentaire de mrodenas le 24/11/2008 10:55:28

Oui d'accord, j'ai fait cela un peu vite il est vrai pour voir si le concept était viable. Effectivement il est assez rapide même en VB.

(celui que tu as fourni est vide): Merci j'ai du le vider sans m'en rendre compte.
Cela mérite une petite version épurée.

reste le problème des disques non-nommés: oui, on peut proposer la liste de ceux-ci mais l'Explorer' le  fait déjà aussi bien l'intérêt ne serait qu'une liste épurée

J'ai croisé un cas encore plus bizarre avec l'une de mes clé USB ( ma Framakey) alors que le nom de Volume est "KEY4" l'Explorer' affiche 'PortableApps.com' mais mon programme la retrouve sous "KEY4"... à élucider

Dans le même esprit il faudrait faire un eject de toute les unités d'un même disque physique après avoir débloquer tout les 'Explorer' qui lock l'eject.

signaler à un administrateur
Commentaire de PCPT le 24/11/2008 16:47:30 administrateur CS

quelques amélioration niveau code :



*ligne 176, tu peux remplacer END par exit for

*ligne 182, tu peux supprimer ton end, tu en en fin de sub donc l'appli va quitter seule

*le test GetDriveType, pas besoin de récupérer la chaine (type de drive) puisque tu ne l'utilises pas.

juste :
Case DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, [...] (sauf else)
  et là seulement tu poursuis le code actuellement ligne 144

else pas traité, on arrivera directement au Next intCnt


bonne continuation

signaler à un administrateur
Commentaire de mrodenas le 24/11/2008 17:03:54

Bonne analyse et relecture. Il y a plusieurs années que j'ai arrêté de programmer, mes réflexes sont loin. Merci de tes remarques je corrige car c'est vraiment pas propre

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Gestion fichiers Internet [ par Christophe ] Est-il possible par un programme Vb d'effacer les fichiers temporaires, l'historique d'Internet Explorer et de plus fermer toutes les fenêtres explore Adresse en cours sur Explorer!!! [ par Le J ] Salut,Comment faire pour trouver l'adresse en cours sur internet Explorer ou Netscape??MerciALPLe J Composant Internet Explorer [ par Astroboy ] Bonjour à tous,2 problèmes peut-être simples mais dont je ne trouve pas la solution :Comment se fait-il qu'il est impossible d'obtenirle handle du com Fermer internet explorer depuis VB [ par jeromax ] J'ai trouvé un source sur ce site mais il est bugger (ouvrir et fermer une application)Alors si quelqu'un peut m'aider Thumbnails de pages Internet [ par Philippe ] Bonjour à tous.Je m'étonne de ne voir nulle part dans les forums des questions portant sur l'utilisation de Webvw.dll, qui permet d'afficher une minia Internet Explorer [ par zibou ] Bonjours,Je voudrais que lorsque l'on clic sur un lien d'une page sur un controle webbrowser , le lien est mis dans un textbox ( text1 ) . Changer le nom de n'importe quelle fenêtre (explorer, regedit,...) [ par Strikenet ] Je veux faire un title changer like ;)Qui permet de changer le nom d'une ou plusieurs fenêtre avec n'importe queltexte...Merci d'avance & @+ Comment fermer une fenêtre Internet Explorer ? [ par Michael ] Qqn peut me dire comment n'avoir qu'une seule fenetre internet explorer ?C'esst à dire si une deuxième fenetre s'ouvre, je voudrais la fermer Merci be Comment fermer une fenêtre Internet Explorer ? [ par Michael ] Qqn peut me dire comment n'avoir qu'une seule fenetre internet explorer ?C'esst à dire si une deuxième fenetre s'ouvre, je voudrais la fermer Merci be Nombre de fenêtre Internet Explorer [ par luxpo ] Comment peut on détecter le nombre de fenêtre internet explorer qui sont ouvertes ???


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.