Site:  Cours VB.net  
4.10 Lancer une application, une page Web.

Comment lancer une autre application, un autre programme ?

L'ancienne méthode VisualBasic toujours valable: Shell

Shell lance un programme exécutable.

Id=Shell (NomdeProgramme)    'lance l'application NomdeProgramme

on peut utiliser aussi:

Id=Shell( NomdeProgramme, TypedeFenetre, Wait, TimeOut)

TypedeFenêtre utilise l'énumération AppWinStyle pour définir le type de fenêtre de l'application lancée: AppWinStyle.MaximizedFocus ouvre par exemple l'application en plein écran. 

Si vous souhaitez attendre la fin du programme avant de continuer, vous devez définir Wait à True.

TimeOut  est le  nombre de millisecondes à attendre pour la fin du programme si Wait est True.

Exemple:

ID = Shell("""C:\Program Files\MonFichier.exe"" -a -q", , True, 100000)

Dans une chaîne une paire de guillemets doubles adjacents ("")  est interprétée comme un caractère de guillemet double dans la chaîne. Ainsi, l'exemple précédent présente la chaîne suivante à la fonction Shell :
"C:\Program Files\MonFichier.exe" -a -q

La fonction AppActivate rend active l'application ou la fenêtre définie par son nom ou son Id (Numéro indentificateur).

Dim ID As Integer

 

On peut utiliser:

AppActivate("Untitled - Notepad")
 

ou

ID = Shell(NOTEPAD.EXE", AppWinStyle.MinimizedNoFocus)
AppActivate(ID)

 


On peut utiliser la Classe 'Process' du Framework.

La Classe Process fournit l'accès à des processus locaux ainsi que distants, et vous permet de démarrer et d'arrêter des processus système locaux.

Classe de nom à importer :Imports System.Diagnostics

Dim monProcess As New Process()
 

Ensuite il faut fournir à la classe fille StartInfo  les informations nécessaires au démarrage.

monProcess.StartInfo.FileName = "MyFile.doc"
monProcess.StartInfo.Verb = "Print"
monProcess.StartInfo.CreateNoWindow = True

 

Enfin on lance le process

monProcess.Start()
 

Noter la puissance de cette classe: on donne le nom du document et VB lance l'exécutable correspondant, charge le document, effectue certaines actions.

Dans l'exemple du dessus on ouvre Word on y charge MyFile , on l'imprime, cela sans ouvrir de fenêtre.

Process.Start("IExplore.exe")

Process.Start(MonPathFavori)

ou en une ligne:

Process.Start("IExplore.exe", "http//:developpez.com")

En local on peut afficher un fichier html ou asp

Process.Start("IExplore.exe", "C:\monPath\Fichier.htm")
Process.Start("IExplore.exe", "C:\monPath\Fichier.asp")

 

Dim startInfo As New ProcessStartInfo("IExplore.exe")
startInfo.WindowStyle = ProcessWindowStyle.Minimized

Process.Start(startInfo)

startInfo.Arguments = "hrrp//:developpez.com"

Process.Start(startInfo)
 

Des propriétés du processus en cours permettent de connaître l'Id du processus (Id) les threads, les modules, les Dll ,la mémoire , de connaître le texte de la barre de titre (MainWindowsTitle)..

On peut fermer le processus par Close ou CloseMainWindows

 

On peut instancier un 'Process' sur une application déjà en cours d'exécution avec GetProcessByName et GetProcessById:

Dim P As Process() = Process.GetProcessesByName("notepad")
 

 ' On peut récupérer le processus courant.
Dim ProcessusCourant As Process = Process.GetCurrentProcess()


' Récupérer toutes les instances de  Notepad qui tournent en local.
Dim localByName As Process() = Process.GetProcessesByName("notepad")
 

' Récupérer tous les processus en cours d'exécution grâce à GetProcesses:
Dim localAll As Process() = Process.GetProcesses()

 

Processus sur ordinateur distant.

Vous pouvez afficher des données statistiques et des informations sur les processus en cours d'exécution sur des ordinateurs distants, mais vous ne pouvez pas appeler Kill, Start, CloseMainWindows sur ceux-ci.