ShellExecute en console vb 2005?

Résolu
jnbrunet Messages postés 258 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 13 novembre 2012 - 7 nov. 2006 à 04:58
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 7 nov. 2006 à 16:33
Bonjour,
Est-il possible d'utilisier l'api ShellExecute en mode console en vb 2005?

J'ai essayé ceci mais ca ne marche pas:
ShellExecute(CLng(handle), vbNullString, "Diablo II.exe", "-w -ns -skiptobnet", "C:\Program Files\Diablo II", SW_SHOWNORMAL)

la valeur de handle est défini dans mon code. Je la trouve à l'aide du titre de la console. Il y a surment une meilleur façon de trouver son handle, mais je ne la connais pas.

merci,

-Jn-

5 réponses

Utilisateur anonyme
7 nov. 2006 à 16:05
Salut,

Fait plutôt ca avec un process:
System.Diagnostics.Process.Start("C:\Program Files\Diablo II\Diablo II.exe", "-w -ns -skiptobnet")
C'est du bon Framework dotnet.






__________________

Kenji
 
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 nov. 2006 à 16:33
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Integer, ByVal lpOperation As String,
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory
As String, ByVal swShowCmd As Integer) As Integer
Private Declare
Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName
As String, ByVal lpWindowName As String) As Integer

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 nov. 2006 à 09:04
Attention ShellExecute est une API Win32 et tu code en .NET. Le type des variables ne corespond pas entre les 2 plateformes

Un Long en Win32 se traduit en un Integer en .NET, donc essaye avec ceci pour voir :

ShellExecute(CInt(handle), vbNullString, "Diablo II.exe", "-w -ns -skiptobnet", "C:\Program Files\Diablo II", SW_SHOWNORMAL)

SW_SHOWNORMAL doit aussi etre de type Integer ainsi que la variable récupérant la valeur de retourde ShellExecute. A revoir aussi la ligne Declare de ShellExecute

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
7 nov. 2006 à 11:34
salut,

la déclaration de l'AI pourrait se faire comme ceci :

import system.runtime.interopservices

Private Declare Ansi Function ShellExecute Lib
"shell32.dll" Alias "ShellExecuteA" (_
ByVal hwnd As Integer,_
<MarshalAs(UnmanagedType.LPStr)>ByVal lpOperation
As String,_
<MarshalAs(UnmanagedType.LPStr)>ByVal lpFile As String,_
<MarshalAs(UnmanagedType.LPStr)>ByVal lpParameters As String,_
<MarshalAs(UnmanagedType.LPStr)>ByVal
lpDirectory As String,_
ByVal nShowCmd As Integer) As Integer

Ensuite, je pense que tu peux passer 0 comme hwnd...

ShareVB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jnbrunet Messages postés 258 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 13 novembre 2012
7 nov. 2006 à 15:38
Ca ne marche pas...

Voici mon code:

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Integer, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal swShowCmd As Integer) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Const SW_SHOWNORMAL As Integer = 1

        handle = FindWindow(vbNullString, "CsouBotV1.1")
        ShellExecute(CInt(handle), vbNullString, "Diablo II.exe", "-w -ns -skiptobnet", "C:\Program Files\Diablo II", SW_SHOWNORMAL)

Ca me retourne:

Arithmetic operation resulted in an overflow.

Le handle me donne quelque chose comme : 223772718154188400

ShareVb -> j'ai essayé ton code et je n'arrive même pas à insérer tes déclarations dans mon code. Est-ce que c'est bien en vb.net?

Merci,
-Jn-
0
Rejoignez-nous