mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 29 juil. 2007 à 22:14
salut,
à 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..
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 29 juil. 2007 à 22:29
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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 juil. 2007 à 22:38
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.
Leo_Robotic_Passion
Messages postés135Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention 2 décembre 2011 29 juil. 2007 à 23:14
Merci a vous deux :)
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