IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème avec ShellExecute


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut Problème avec ShellExecute
    Bonjour,

    je travaille sur une application tactile et pour saisir des données j'aimerai faire apparaitre le clavier virtuel de windows.

    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit On
     
    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 callVirtualKeyBord()
     
            Dim lngReturn As Long
            lngReturn = ShellExecute(CLng(Me.Handle), "open", "osk.exe", vbNullString, "c:\windiws\system32\", 1)
     
        End Sub
    J'ai le message d'erreur suivant :
    PInvokeStackImbalance a été détecté
    Message: Un appel à la fonction PInvoke ' ****:ShellExecute' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.
    est ce que vous aurez une idée.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut
    Ligne 10 lngReturn = ShellExecute(CLng(Me.Handle), "open", "osk.exe", vbNullString, "c:\windiws\system32\", 1)Handle, windiws et le dernier \ ?
    Ne serait ce pas plutôt Windows et pas le dernier \.
    Je verrai mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lngReturn = ShellExecute(Me.hWnd, "open", "osk.exe", vbNullString, Environ("systemroot") & "\system32", 1)
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    En lisant d'autre forum je me suis rendu compte que cette erreur viens de la conversion en Long . Si on est en VB6 ça marche mais apparemment en VB.net il faut remplacer les long par Interger.

    j'ai remplacé tous les intégers en Long et je n'ai plus la même erreur.
    ça m'affiche maintenant.
    impossible de lancer le clavier virtuel
    .

    Certain disent que c'est parce que l'application s'exécute en mode 32bit et que ça veut lancer une application qui s'exécute en mode 64 bits.

    Est ce que quelqu'un aurait une idée de comment le résoudre en VB.net

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Si le but est d'invoquer un programme, pas besoin de sortir l'artillerie lourde du P/Invoke. Y'a une classe pour ca:
    http://msdn.microsoft.com/en-us/library/53ezey2s.aspx

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    C'est clair que j'utilise ca pour une petite GED maison


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Private Sub callVirtualKeyBord()
            Dim PROC As New Process()
     
            PROC.StartInfo.FileName = "C:\Windows\System32\osk.exe"
            PROC.Start()
     
            PROC.Close()
     
     
        End Sub

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    En effet je pense que La classe process suffit largement.
    mais je pense que c'est plus un problème de droits.

    Est ce que quelqu'un aurait une idée de comment contourner se problème?

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    En utilisant un ProcessStartInfo en paramètre tu peux éventuellement te connecter avec un autre nom d'utilisateur

Discussions similaires

  1. Problème avec ShellExecute
    Par lou_delphdev dans le forum Web & réseau
    Réponses: 3
    Dernier message: 28/08/2007, 13h59
  2. Problème avec Shellexecute
    Par cincap dans le forum Composants VCL
    Réponses: 10
    Dernier message: 19/08/2007, 23h08
  3. [VBA]Problème avec ShellExecute()
    Par Sunchaser dans le forum SDK
    Réponses: 1
    Dernier message: 24/06/2007, 19h27
  4. Problème avec ShellExecute
    Par Xav++ dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/05/2006, 13h58
  5. Problème avec ShellExecute
    Par SkYsO dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo