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

VBScript Discussion :

APISOFT tester VERR MAJ actif ou non


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Par défaut APISOFT tester VERR MAJ actif ou non
    Bonjour,

    J'ai un problème dans le logiciel de comptabilité APISOFT qui est codé (il me semble) en VBScript.

    Lors de l'ouverture d'une Vue (une fenêtre qui nous montre toutes les données de la base de données) j'ai un champs "CODE" qui désigne l'id de la ligne. Cet ID est TOUJOURS en majuscule, par contre,
    lors ce qu'on ouvre la vue et qu'on cherche un code (ID) on tape en minuscule.

    Je voudrais faire un script tout simple qui fait que lorsque la touche CAPSLOCK est désactivé, je l'active, sinon je ne fais rien.
    quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       1. 'definitions des fonctions
       2. set WshShell = CreateObject("WScript.Shell" )
       3.
       4. 'ouverture:
       5. If CapsLockOn = False Then
       6.     WshShell.SendKeys "{CAPSLOCK}"
       7. End If


    Le problème c'est qu'il ne détecte pas le "if CapsLockOn" (je ne sais pas pourquoi mais j'ai suposé que la fonction n'était pas native)

    J'ai alors chercher un moyen sur google de détecter l'etat d'une touche VERR MAJ et j'ai trouver ce script :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
       1. ' Declare Type for API call:
       2.       Private Type OSVERSIONINFO
       3.         dwOSVersionInfoSize As Long
       4.         dwMajorVersion As Long
       5.         dwMinorVersion As Long
       6.         dwBuildNumber As Long
       7.         dwPlatformId As Long
       8.         szCSDVersion As String * 128   '  Maintenance string for PSS usage
       9.       End Type
      10.
      11.       ' API declarations:
      12.
      13.       Private Declare Function GetVersionEx Lib "kernel32" _
      14.          Alias "GetVersionExA" _
      15.          (lpVersionInformation As OSVERSIONINFO) As Long
      16.
      17.       Private Declare Sub keybd_event Lib "user32" _
      18.          (ByVal bVk As Byte, _
      19.           ByVal bScan As Byte, _
      20.           ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
      21.
      22.       Private Declare Function GetKeyboardState Lib "user32" _
      23.          (pbKeyState As Byte) As Long
      24.
      25.       Private Declare Function SetKeyboardState Lib "user32" _
      26.          (lppbKeyState As Byte) As Long
      27.
      28.       ' Constant declarations:
      29.       Const VK_NUMLOCK = &H90
      30.       Const VK_SCROLL = &H91
      31.       Const VK_CAPITAL = &H14
      32.       Const KEYEVENTF_EXTENDEDKEY = &H1
      33.       Const KEYEVENTF_KEYUP = &H2
      34.       Const VER_PLATFORM_WIN32_NT = 2
      35.       Const VER_PLATFORM_WIN32_WINDOWS = 1
      36.
      37. Private Sub Command1_Click()
      38.       Dim o As OSVERSIONINFO
      39.       Dim NumLockState As Boolean
      40.       Dim ScrollLockState As Boolean
      41.       Dim CapsLockState As Boolean
      42.
      43.       o.dwOSVersionInfoSize = Len(o)
      44.       GetVersionEx o
      45.       Dim keys(0 To 255) As Byte
      46.       GetKeyboardState keys(0)
      47.
      48.       ' NumLock handling:
      49.       NumLockState = keys(VK_NUMLOCK)
      50.       If NumLockState <> True Then    'Turn numlock on
      51.         If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=== Win95/98
      52.
      53.           keys(VK_NUMLOCK) = 1
      54.           SetKeyboardState keys(0)
      55.         ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=== WinNT
      56.         'Simulate Key Press
      57.           keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
      58.         'Simulate Key Release
      59.           keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
      60.              Or KEYEVENTF_KEYUP, 0
      61.         End If
      62.       End If
      63.
      64.       ' CapsLock handling:
      65.       CapsLockState = keys(VK_CAPITAL)
      66.       If CapsLockState <> True Then    'Turn capslock on
      67.         If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=== Win95/98
      68.           keys(VK_CAPITAL) = 1
      69.           SetKeyboardState keys(0)
      70.         ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=== WinNT
      71.         'Simulate Key Press
      72.           keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
      73.         'Simulate Key Release
      74.           keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY _
      75.              Or KEYEVENTF_KEYUP, 0
      76.         End If
      77.       End If
      78.
      79.       ' ScrollLock handling:
      80.       ScrollLockState = keys(VK_SCROLL)
      81.       If ScrollLockState <> True Then    'Turn Scroll lock on
      82.         If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=== Win95/98
      83.           keys(VK_SCROLL) = 1
      84.           SetKeyboardState keys(0)
      85.         ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=== WinNT
      86.         'Simulate Key Press
      87.           keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
      88.         'Simulate Key Release
      89.           keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY _
      90.             Or KEYEVENTF_KEYUP, 0
      91.         End If
      92.       End If
      93.     End Sub



    Le problème est que sur ce logiciel la syntaxe:
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1. Dim keys(0 To 255) As Byte
    est fausse !

    j'ai donc changé pour Dim Keys tout cours, evidement, ça ne fonctionne pas.
    Je suis un peu perdu, je ne comprend pas bien si c'est du langage VBScript ou pas, si j'ai fait une erreur ou autre...

    Quelqu'un pourrait m'aider à trouver le moyen de TESTER l'ETAT de la touche VERR MAJ ?

    Je vous remercie par avance,

    Prosciuto

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,

    J'ai un problème dans le logiciel de comptabilité APISOFT qui est codé (il me semble) en VBScript.
    j'espère pour toi que non
    et de toute façon la nature du langage utilisé par les concepteurs est sans intérêt pour la résolution de ton problème

    Quelqu'un pourrait m'aider à trouver le moyen de TESTER l'ETAT de la touche VERR MAJ ?
    (nécessite un wrapper pour appeler l'api win32 que tu trouveras dans la page contrib vbs de ce forum)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    VK_CAPITAL = 20
    Set oAPI = CreateObject ("DynamicWrapperX") 
    oAPI.Register "user32.dll", "GetKeyState", "i=l", "r=l"
    res = oAPI.GetKeyState(VK_CAPITAL)
    Select Case res
      Case 0 MsgBox "Touche CapsLock inactive"
      Case 1 MsgBox "Touche CapsLock active"
    End Select
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par omen999 Voir le message
    (nécessite un wrapper pour appeler l'api win32 que tu trouveras dans la page ..
    ici :
    Test d'outil : Accéder aux API Win32 en VBScript avec DynamicWrapperX

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Par défaut
    Citation Envoyé par omen999 Voir le message
    et de toute façon la nature du langage utilisé par les concepteurs est sans intérêt pour la résolution de ton problème
    Bonjour, ce forum est vraiment impressionnant, je n'aurais jamais trouvé la solution tout seul...
    Ça fonctionne très bien !

    Par contre, j'ai vu sur la page fourni par bbil qu'il y avait deux types de code, pour Jscript et VBscript. J'ai utilisé ton code (omen999) pour faire fonctionner le script, j'en conclu que le code que je dois écrire s'écrit en VBScript ou pas du coup ?

    Je vous remercie pour votre réponse, A bientôt.

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    ici :
    Test d'outil : Accéder aux API Win32 en VBScript avec DynamicWrapperX
    mince, suis-je distrait...

    j'en conclu que le code que je dois écrire s'écrit en VBScript ou pas du coup ?
    non pas nécessairement, le même en jscript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var VK_CAPITAL = 20;
    oApi = new ActiveXObject ("DynamicWrapperX");
    oApi.Register ("user32.dll", "GetKeyState", "i=l", "r=l");
    res = oApi.GetKeyState(VK_CAPITAL);
    switch (res) {
    case 0 : WScript.Echo("Touche CapsLock inactive");
             break;
    case 1 : WScript.Echo("Touche CapsLock active");
    }
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Par défaut
    Ok merci de votre aide. Ça fonctionne très bien.

    C'est dommage, finalement ça n'ai pas ce qui est attendu...
    Je reviendrais donc surement à vous après d'autres recherches.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester base de données dorsale non accédée
    Par gerard101 dans le forum VBA Access
    Réponses: 3
    Dernier message: 24/06/2011, 15h16
  2. Réponses: 8
    Dernier message: 01/10/2007, 15h19
  3. Réponses: 9
    Dernier message: 28/09/2007, 08h54
  4. Détecter lien actif ou non
    Par BnA dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/07/2007, 07h53
  5. [D7] Simuler l'appui sur la touche VERR MAJ ??
    Par fredfred dans le forum Delphi
    Réponses: 8
    Dernier message: 14/06/2006, 14h23

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