à part utiliser ShellExecute au lieu de Shell, que veux tu optimiser ?
Tu utilises une variable et une fonction..
à part la commande neuronale, je vois pas mieux..
bah t'eh, voici ce que te propose, une correction de tes chemins (Programs par Program Files), une demonstration avec Command Button indexé, et l'utilisation de ShellExecute :
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As
Long
Private Sub Command1_Click(Index As Integer)
Dim E_SystemDrive As String
E_SystemDrive = Environ$("SystemDrive")
Select Case Index
Case 0: Call Launch_App(E_SystemDrive &
"\Program
Files\office2003viewers\Office11\WORDVIEW.EXE")
Case 1: Call Launch_App(E_SystemDrive &
"\Program
Files\office2003viewers\Office11\XLVIEW.EXE")
Case 2: Call Launch_App(E_SystemDrive &
"\Program
Files\office2003viewers\Office11\powerpoint2003viewer\Pptview.exe")
End Select
End Sub
Private Sub Launch_App(ByVal sAddresse As String)
ShellExecute Me.hwnd, vbNullString, sAddresse, vbNullString,
vbNullString, 1
End Sub
Ouais, mais je suis pas certain que ce soit une optimisation, bien au contraire. Ca rajoute du temp dse traitement pour les tests du select case, plus du temps d'appel d'une fonction, ....
Bref, ya pas vraiment d'optimisation à faire si ce n'est de mettre E_SystemDrive en variable globale avec une initialisation, une fois seulement au cahrgement de l'appli par exemple. Mais le maigre temps d'execution gagné est compensé par une occupation mémoire pour la variable globale. La variable globale étant alloué dans la mémoire Data de l'appli, celle-ci augmente en fonction du nombre de variable à y mettre, tandis qu'une variable locale non statique est allouée sur la pile et la pile est de taille fixe quelque soit le nombre de variable.
Casy a dit:Bref, ya pas vraiment d'optimisation à faire si ce n'est de mettre E_SystemDrive en variable globale avec une initialisation, une fois seulement au chargement de l'appli par exemple.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Pourriez vous mettre en application cette « optimisation »
Mes tentatives pour passer E_SystemDrive en variable globale sont un échec !
Mes connaissance en vb sont plus que limité cela me ferait un petit tuto !
N’hésiter pas à commenter vos actions
Un grand merci pour le travail apporter a nous autre débutant