[VB] C koi les commandes pour les ports des NT

C koi les commandes pour les ports des NT [VB] - Programmation

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 :gun:  
Alors comme je sais qu'il faut contrôle un port de communication pour faire cela, avec leur sécurité à la cons :gun:  :gun: ça marche po :sweat:  
 
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 ( :sarcastic: ) mais ces koi qu'il faut déclarer ?

Reply

Marsh Posté le 03-07-2001 à 12:02:17   

Reply

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.

Reply

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

Reply

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


---------------
- "Qui diable es-tu ?"
Reply

Marsh Posté le 03-07-2001 à 14:45:37    

:lol:  
 
Bon, d'accord :D mais ça me dit pas comment je fait moi :(

Reply

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+

Reply

Marsh Posté le 03-07-2001 à 15:29:54    

qqun as testé ça ? je suis interessé si ça marche ....

Reply

Marsh Posté le 03-07-2001 à 15:29:56    

qqun as testé ça ? je suis interessé si ça marche ....

Reply

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

Reply

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 ?!?

Reply

Marsh Posté le 03-07-2001 à 20:14:57   

Reply

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

Reply

Marsh Posté le 04-07-2001 à 21:11:52    

Bah, ça à l'air de bien marcher :)
 
Merçi le DJ :D
 
 
Par contre c'est pas possible d'afficher une form :( mais ça je m'en fous, le code sera dans une DLL :D

Reply

Marsh Posté le 04-07-2001 à 22:18:48    

Bah tu mets Show au début du Form_Load =)

Reply

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 :D
 
 :lol:  :lol:  :lol:  
 
 :pt1cable:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed