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:
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:
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:
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