FAQ Visual Basic Consultez toutes les FAQ

Nombre d'auteurs : 50, nombre de questions : 300, dernière mise à jour : 9 février 2020 

 
OuvrirSommaireDocumentation et installation

Lorsque l'utilisateur de votre programme appuie sur la touche F1, VB ouvre le fichier d'aide dont le chemin est spécifié dans App.HelpFile.
Si le fichier d'aide se trouve dans le répertoire de l'exécutable, et s'appelle Aide.hlp, il faudra donc placer cette ligne au début du programme :

vb
Sélectionnez
App.HelpFile = App.Path & "\Aide.hlp"

Si le fichier d'aide doit aussi s'ouvrir sur le clic d'un bouton ou d'un menu, il suffira de simuler un clic sur la touche F1 avec l'instruction SendKeys :

vb
Sélectionnez
Private Sub btnAide_Click()
 
'ouvre le fichier d'aide quand on clique sur le bouton btnAide
SendKeys "{F1}"
 
End Sub
Créé le 29 juillet 2002  par Romain Puyfoulhoux

Si votre fichier d'aide est un fichier d'extension .chm, vous pouvez déclencher son ouverture lors de l'appui sur la touche F1 de la même façon que celle décrite pour un fichier d'extension .hlp.
Si vous avez besoin de passer par le code, voici le source d'un module de classe à copier dans votre projet.
Créez donc un module de classe et nommez-le CHelp.

vb
Sélectionnez
Private Enum HH_COMMAND
    HH_DISPLAY_TOPIC = &H0
    HH_HELP_FINDER = &H0
    HH_DISPLAY_TOC = &H1
    HH_DISPLAY_INDEX = &H2
    HH_DISPLAY_SEARCH = &H3
    HH_SET_WIN_TYPE = &H4
    HH_GET_WIN_TYPE = &H5
    HH_GET_WIN_HANDLE = &H6
    HH_GET_INFO_TYPES = &H7
    HH_SET_INFO_TYPES = &H8
    HH_SYNC = &H9
    HH_ADD_NAV_UI = &HA
    HH_ADD_BUTTON = &HB
    HH_GETBROWSER_APP = &HC
    HH_KEYWORD_LOOKUP = &HD
    HH_DISPLAY_TEXT_POPUP = &HE
    HH_HELP_CONTEXT = &HF
    HH_TP_HELP_CONTEXTMENU = &H10
    HH_TP_HELP_WM_HELP = &H11   
    HH_CLOSE_ALL = &H12     
    HH_ALINK_LOOKUP = &H13
End Enum
 
Private Type structHH_FTS_QUERY
    cbStruct As Long
    fUniCodeStrings As Long
    pszSearchQuery As String
    iProximity As Long
    fStemmedSearch As Long
    fTitleOnly As Long
    fExecute As Long
    pszWindow As String
End Type
 
Private Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" _
    (ByVal hwndCaller As Long, _
    ByVal pszFile As String, _
    ByVal uCommand As HH_COMMAND, _
    dwData As Any) As Long
 
Public Sub Show(NewFile As String, Optional WindowPane As String, Optional ContextID)
    Dim Fichier As String
    Fichier = NewFile
 
    If Len(WindowPane) Then
        Fichier = Trim(Fichier) & ">" & Trim(WindowPane)
    End If
 
    If IsMissing(ContextID) Then
        Call HtmlHelp(0, Fichier, HH_DISPLAY_TOC, ByVal 0&)
    Else
        Call HtmlHelp(0, Fichier, HH_HELP_CONTEXT, ByVal Clng(ContextID))
    End If
End Sub
 
Public Sub ShowIndex(NewFile As String, Optional WindowPane As String)
    Dim Fichier As String
    Fichier = NewFile
 
    If Len(WindowPane) Then
        Fichier = Trim(Fichier) & ">" & Trim(WindowPane)
    End If
 
    Call HtmlHelp(0, Fichier, HH_DISPLAY_INDEX, ByVal 0&)
End Sub
 
Public Sub ShowSearch(NewFile As String, Optional WindowPane As String)
 
    Dim Fichier As String
    Dim HH_FTS_QUERY As structHH_FTS_QUERY
    With HH_FTS_QUERY
        .cbStruct = Len(HH_FTS_QUERY)
        .fUniCodeStrings = 0&
        .pszSearchQuery = "TEST"
        .iProximity = 0&
        .fStemmedSearch = 0&
        .fTitleOnly = 0&
        .fExecute = 1&
        .pszWindow = ""
    End With
    Fichier = NewFile
 
    If Len(WindowPane) Then
        Fichier = Trim(Fichier) & ">" & Trim(WindowPane)
    End If
    Call HtmlHelp(0, Fichier, HH_DISPLAY_SEARCH, HH_FTS_QUERY)
 
End Sub

App.HelpFile vous renvoie le nom du fichier d'aide que vous avez indiqué dans les propriétés du projet. Vous pouvez aussi modifier cette propriété à l'exécution. App.HelpFile doit bien sûr être ici un fichier .chm compilé.

Voyons comment afficher l'index de l'aide dans la fenêtre W1, celle-ci ayant été auparavant définie dans le projet d'aide. Le paramétrage de la fenêtre d'affichage est optionnel.

vb
Sélectionnez
Dim objHelp As Chelp
 
Set objHelp = New Chelp
Call objHelp.ShowIndex(App.HelpFile, "W1")
Set objHelp = Nothing

Nous pouvons aussi afficher le sommaire :

vb
Sélectionnez
Dim objHelp As Chelp
 
Set objHelp = New Chelp
Call objHelp.Show(App.HelpFile, "W1")
Set objHelp = Nothing

Ainsi que la page de recherche :

vb
Sélectionnez
Dim objHelp As Chelp
 
Set objHelp = New Chelp
Call objHelp.ShowSearch(App.HelpFile, "W1")
Set objHelp = Nothing

Il n'est pas possible de transmettre la chaine à rechercher directement à l'onglet de recherche, comme l'indique cet article de Microsoft

Enfin voici comment afficher une page à partir de son ContextID :

vb
Sélectionnez
Dim objHelp As Chelp
 
Set objHelp = New Chelp
Call objHelp.Show (App.HelpFile, "W1", 320)
Set objHelp = Nothing
Créé le 28 juin 2004  par ThierryAIM

Vous pouvez utiliser l'assistant d'empaquetage et déploiement. Vous le trouverez dans le gestionnaire des suppléments de Visual Basic, ou dans les programmes du menu Démarrer, dans les outils Microsoft Visual Studio 6.0.

Il existe aussi des logiciels commerciaux complets et de bonne qualité, tels ceux édités par les sociétés Installshield et Wise.

Et enfin quelques outils gratuits :

  • Inno Setup : vous permet de créer un programme d'installation personnalisé
  • IsTool : interface graphique pour Inno Setup, permet aussi de convertir un fichier setup.lst créé par l'Assistant d'Empaquetage en fichier iss pour Inno Setup
  • Visual Studio Installer 1.1 : créateur de programme d'installation, n'existe pas en français
Créé le 29 juillet 2002  par Romain Puyfoulhoux

Visual Basic 3.0

VBRUN300.DLL

Visual Basic 4.0

VB40032.DLL, OLEPRO32.DLL

Visual Basic 5.0

MSVBVM50.DLL, OLEAUT32.DLL, OLEPRO32.DLL, STDOLE2.TLB, ASYCFILT.DLL, COMCAT.DLL

Visual Basic 6.0

MSVBVM60.DLL, OLEAUT32.DLL, OLEPRO32.DLL, STDOLE2.TLB, ASYCFILT.DLL, COMCAT.DLL

Les versions des fichiers distribués dans les différents Service Packs de chaque produit sont souvent différentes de celles livrées dans la version d'origine.

Ces fichiers constituent le runtime Visual Basic de chaque version. Mais dans votre programme d'installation il faut ajouter les éventuels ActiveX et références que vous avez inclus dans votre projet. Si vous utilisez ADO, il faut inclure MDAC.

Créé le 6 janvier 2003  par Romain Puyfoulhoux

Un ActiveX doit figurer dans la base de registre afin qu'il soit pris en compte par le système et qu'il puisse fonctionner. Ceci est pris en charge par le programme regsvr32.exe qui se trouve dans le répertoire système.

Pour enregistrer un ActiveX :

vb
Sélectionnez
regsvr32.exe <fichier>

Pour l'opération inverse :

vb
Sélectionnez
regsvr32.exe /u <fichier>
Créé le 6 septembre 2004  par Romain Puyfoulhoux

Ce message a lieu si un ou plusieurs fichiers systèmes à mettre à jour sont chargés en mémoire par Windows au démarrage du système. Le fichier étant chargé en mémoire, Windows doit avoir redémarré pour que la version incluse dans votre setup soit chargée à la place de la version actuelle. Pour éviter ce désagrément, regardez quels sont les fichiers présents dans la section [bootstrap files] du fichier setup.lst. Vous pouvez fournir dans votre setup les versions de ces fichiers qui sont livrées avec VB6, plutôt que les mises à jour qui ont été installées sur votre système. En effet, plus les versions que vous fournirez seront récentes, plus les postes clients devant redémarrer lors de l'installation de votre programme seront nombreux. Les versions incluses dans votre setup sont celles qui sont présentes dans votre répertoire système.

Vérifiez aussi dans le fichier setup.lst que le fichier msvcrt.dll n'est pas dans la section [setup1 files] mais [bootstrap files], et déplacez-le dans cette section le cas échéant.

Créé le 17 février 2004  par Romain Puyfoulhoux

Si vous utilisez l'assistant d'empaquetage et déploiement, ajoutez le fichier Mdac_typ.exe à votre paquetage, et choisissez $(AppPath) pour son répertoire de destination. Lors de l'installation, le setup exécutera Mdac_typ.exe avant d'installer vos fichiers.

Pour pouvoir installer MDAC sous Windows 95 et Windows 98, vous devez d'abord avoir installé respectivement DCOM95 et DCOM98.

Créé le 6 janvier 2003  par Romain Puyfoulhoux

Le principe repose sur la création de plusieurs clés dans la base de registres. Il existe deux méthodes : l'utilisation du Windows Script Host Object Model et celle des API Windows.

Avec Wshom.ocx :

vb
Sélectionnez
Dim MaCle As WshShell 'ou As object
 
Set MaCle = New WshShell 'ou Set MaCle = CreateObject("WScript.Shell")
'nom de votre type de fichier
MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\", "Test Ext", "REG_SZ"
'commande a exécuter pour ouvrir les fichiers de ce type
MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\shell\open\command\", "C:\jmarc\FAQ\TestExt.exe %1", "REG_SZ"
'icone à utiliser pour représenter les fichiers de ce type, ici la troisième icone contenue dans TestExt.exe
'(la première icone a l'index 0)
MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\DefaultIcon\", "C:\jmarc\FAQ\TestExt.exe,2", "REG_SZ"
""
'extension correspondant à ce type de fichier
MaCle.RegWrite "HKEY_CLASSES_ROOT\.jmr\", "Test Ext", "REG_SZ"

Avec les anciennes versions de Wshom.ocx, la classe WshShell s'appelle IWshShell_Class.

Avec les API :

vb
Sélectionnez
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
                                      (ByVal hKey As Long, ByVal lpSubKey As String, _
                                       phkResult As Long) As Long
Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" _
                                     (ByVal hKey As Long, ByVal lpSubKey As String, _
                                      ByVal dwType As Long, ByVal lpData As String, _
                                      ByVal cbData As Long) As Long
 
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const MAX_PATH = 255
Private Const REG_SZ = 1
 
Private Sub cmdAssocExt_Click()
 
Dim MaCle As Long
 
Call RegCreateKey(HKEY_CLASSES_ROOT, "Test Ext", MaCle)
Call RegSetValue&(MaCle, "", REG_SZ, "Test Ext", 0&)
Call RegSetValue&(MaCle, "shell\open\command", REG_SZ, "C:\jmarc\FAQ\TestExt.exe %1", MAX_PATH)
Call RegSetValue&(MaCle, "DefaultIcon", REG_SZ, "C:\jmarc\FAQ\TestExt.exe,2", MAX_PATH)
Call RegCreateKey&(HKEY_CLASSES_ROOT, ".jmr", MaCle)
Call RegSetValue&(MaCle, "", REG_SZ, "Test Ext", 0&)
 
End Sub

Dans les deux cas, tout fichier ayant une extension ".jmr" sera ouvert avec le programme TestExt.exe.

Un autre exemple de programmer ces actions :

vb
Sélectionnez
Private Declare Sub SHChangeNotify Lib "shell32.dll" ( _ 
ByVal wEventId As Long, _ 
ByVal uFlags As Long, _ 
dwItem1 As Any, _ 
dwItem2 As Any) 
 
Private Const SHCNE_ASSOCCHANGED = &H8000000 
Private Const SHCNF_IDLIST = &H0& 
 
Private Function Associer(AdApp As String, AdIcon As String, Extention As Variant, NomDuFichier As String) As Boolean 
 
    On Error GoTo F 
 
    Set WshShell = CreateObject("Wscript.Shell") 
 
    For v = LBound(Extention, 1) To UBound(Extention, 1) 
        WshShell.RegWrite "HKEY_CLASSES_ROOT\." & Extention(v) & "\", NomDuFichier, "REG_SZ" 
    Next v 
 
    AdSp = "HKEY_CLASSES_ROOT\" & NomDuFichier & "\" 
    WshShell.RegWrite AdSp, "Khorne File Crypted", "REG_SZ" 
    WshShell.RegWrite AdSp & "DefaultIcon\", AdIcon, "REG_SZ" 
    WshShell.RegWrite AdSp & "Shell\open\command\", Chr(34) & AdApp & Chr(34) & " %1", "REG_SZ" 
    SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0 
    Associer = True 
 
F: 
 
End Function 
 
Private Sub Form_Load() 
    Insérer 
End Sub 
 
Sub Insérer() 
    ExtentionAMettreEnRelation = Array("kh1", "kh2", "kh4") 
    CheminDeLAppli$ = "d:\sp\Khorne.exe" 
    CheminDeLicone$ = "d:\sp\Khorne.ico" 
    NomDuGenreDeFichier$ = "Image Cryptée Spécifique" 
    If Associer(CheminDeLAppli$, CheminDeLicone$, ExtentionAMettreEnRelation, NomDuGenreDeFichier$) Then 
        MsgBox "Changement réussi.", vbInformation, "Super ça a marché!!!" 
    Else 
        If (MsgBox("Ca n'a pas marché car l'un des paramétres insérés est mauvais.", vbCritical + vbYesNo, "Erreur") = vbYes) Then Insérer 
    End If
End Sub
Mis à jour le 13 juin 2005  par Jean-Marc Rabilloud, Khorne
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.