C koi les commandes pour les ports des NT [VB] - Programmation
Marsh Posté le 03-07-2001 à 12:37:41
Dans les essais que j'ai fait avec NT (utilisateur), on n'a pas accès à tout ce qui est matériel, même dérouter (hooker) les commandes clavier, ça marche pas. Par mesure de "sécurité" et pour rendre le système stable, on ne fait plus ce qu'on veut (dommage).
Des collègues voulaient utiliser une carte particulière en tant qu'ADMINISTRATEUR, et ont dû utiliser des outils (bibliothèques) commerciaux pour accéder aux adresses matérielles du PC, sinon impossible...
Sous Win XP, on risque aussi d'avoir des problèmes. Fini le bricolage perso, rapide et adapté au besoin. Dommage.
Marsh Posté le 03-07-2001 à 12:54:32
Bah ouai, mais par NT j'entend les systeme NT cad NT [B]et[/B] 2000
Ce qui m'interresse le plus c'est 2000 même si une solution NT4 serais bien venue
Je crois pas que la sécurité soit aussi poussé dans 2000 que dans NT...
Marsh Posté le 03-07-2001 à 13:06:18
Deadog a écrit a écrit : Bah ouai, mais par NT j'entend les systeme NT cad NT [B]et[/B] 2000 Ce qui m'interresse le plus c'est 2000 même si une solution NT4 serais bien venue Je crois pas que la sécurité soit aussi poussé dans 2000 que dans NT... |
Pour info, Windows 2000 est le successeur de Windows NT 4, il s'appelle donc en interne 'Windows NT 5' et devait sortir en 1997
Marsh Posté le 03-07-2001 à 14:58:31
voir exemple sur :
http://www.allapi.net/api/api188.php
La seule différence que je vois est :
Private kbArray As KeyboardBytes pour toi
Dim kbArray As KeyboardBytes pour l'exemple de allapi.net
En tout cas SetKeyboardState est censée fonctionner depuis NT 3.1 :
http://www.allapi.net/api/SetKeyboardState.php
A+
Marsh Posté le 03-07-2001 à 15:38:17
G 98 est sa marche, mais je m'en fous un peu, ce que je veux c NT donc comme je vais faire tester ça à des NT, je vais bien voir
Je vous donnerai la réponse d'ici qql heures si ça va vite .
Marsh Posté le 03-07-2001 à 20:14:57
Ca marche po, désolé
J'ai pris le code, je l'ai adapté à ma version de VB (4) et je l'ai compilé et ....
Faut peut-être le compiler sous un systeme NT ?!?
Marsh Posté le 04-07-2001 à 02:45:42
Voici le code modifié fonctionnant sous windows 2000 adv serveur + VB 6 SP 5 FR :
Const VK_CAPITAL = &H14
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_USED = VK_SCROLL
' Const des touches étendues
Private Const KEYEVENTF_EXTENDEDKEY = &H1
' Const du relachement
Const KEYEVENTF_KEYUP = &H2
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' API simulant l'appuye d'une touche quelconque
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Dim kbArray As KeyboardBytes, CapsLock As Boolean, kbOld As KeyboardBytes
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Get the current keyboardstate
GetKeyboardState kbOld
'Hide the form
Me.Hide
MsgBox "Keep your eyes on the little num-, shift- and scrolllock lights on the keyboard."
TurnOff VK_CAPITAL
TurnOff VK_NUMLOCK
TurnOff VK_SCROLL
Sleep 1000
TurnOn VK_NUMLOCK
Sleep 100
TurnOn VK_CAPITAL
Sleep 100
TurnOn VK_SCROLL
Sleep 300
TurnOff VK_NUMLOCK
Sleep 100
TurnOff VK_CAPITAL
Sleep 100
TurnOff VK_SCROLL
Sleep 500
TurnOn VK_NUMLOCK
TurnOn VK_SCROLL
Sleep 200
TurnOff VK_NUMLOCK
TurnOff VK_SCROLL
Sleep 200
TurnOn VK_NUMLOCK
TurnOn VK_SCROLL
Sleep 200
TurnOff VK_NUMLOCK
TurnOff VK_SCROLL
Sleep 200
TurnOn VK_CAPITAL
Sleep 200
TurnOff VK_CAPITAL
Sleep 200
TurnOn VK_CAPITAL
Sleep 200
TurnOff VK_CAPITAL
Sleep 200
TurnOn VK_NUMLOCK
TurnOn VK_SCROLL
Sleep 200
TurnOff VK_NUMLOCK
TurnOff VK_SCROLL
Sleep 200
TurnOn VK_NUMLOCK
TurnOn VK_SCROLL
Sleep 200
TurnOff VK_NUMLOCK
TurnOff VK_SCROLL
Sleep 200
TurnOn VK_CAPITAL
Sleep 400
TurnOff VK_CAPITAL
Sleep 200
TurnOn VK_NUMLOCK
Sleep 100
TurnOn VK_CAPITAL
Sleep 100
TurnOn VK_SCROLL
Sleep 300
TurnOff VK_SCROLL
Sleep 100
TurnOff VK_CAPITAL
Sleep 100
TurnOff VK_NUMLOCK
Sleep 1000
Unload Me
End Sub
Private Sub TurnOn(vkKey As Long)
keybd_event vkKey, 69, KEYEVENTF_EXTENDEDKEY Or 0, 0
End Sub
Private Sub TurnOff(vkKey As Long)
keybd_event vkKey, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub
Private Sub Form_Unload(Cancel As Integer)
'restore the old keyboard state
SetKeyboardState kbOld
End Sub
Marsh Posté le 04-07-2001 à 21:11:52
Bah, ça à l'air de bien marcher
Merçi le DJ
Par contre c'est pas possible d'afficher une form mais ça je m'en fous, le code sera dans une DLL
Marsh Posté le 05-07-2001 à 10:49:52
Mouarf, c la première fois que je suis obligé de forcé l'affichage d'une form
Marsh Posté le 03-07-2001 à 12:02:17
Bah ouai, j'aurais besoin de savoir comment on fait pour utiliser l'API windows des NT (Win NT / 2000) pour contrôler les ports des bécanes.
Plus particulièrement je cherche à contrôler les 3 led du clavier. Avec les 95-98-Me ça marche bien mais pas avec ces cons d'NT
Alors comme je sais qu'il faut contrôle un port de communication pour faire cela, avec leur sécurité à la cons ça marche po
Sur les 9x/Me je mettais :
Private Const VK_NUMLOCK = &H90
Private Const VK_SCROLL = &H91
Private Const VK_CAPITAL = &H14
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Private kbArray As KeyboardBytes
Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" _
(kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" _
(kbArray As KeyboardBytes) As Long
Dans les déclarations et ensuite :
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = 1
SetKeyboardState kbArray
Dans ma procédure pour, par expl, contrôler le NumLock
Je me doute bien que ça change avec les NT ( ) mais ces koi qu'il faut déclarer ?