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