nerone21
Messages postés108Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 5 mai 2011
-
4 avril 2008 à 11:22
nerone21
Messages postés108Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 5 mai 2011
-
4 avril 2008 à 14:19
Bonjour Codeurs...
J'aimerais savoir si il est possible d'empecher un utilisateur d'avoir accés à une application jusqu'à ce qu'il valide ma fenetre que j'ai créer???
concretement, j'ai besoin que lorsqu'un utilisateur ouvre notepad, que mon programme le detecte (ça j'y arrive), et qu'il vienne greffer au dessus de la fenêtre de notepad, la mienne sans que l'utilisateur ne puisse toucher à la fenêtre de notepad
que son accés soit bloqué jusquà ce qu'il est validé la mienne...
j'ai le handle de la fenêtre de notepad ouverte...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202175 4 avril 2008 à 13:48
tu dis utiliser Process.Handle... j'ai pas tilté plus tôt, mais faut pas confondre Handle de process et Handle de fenêtre...
SetWindowLong fonctionne bien, mais avec les bonnes infos.
j'ai testé ce code :
Private Const GWL_STYLE As Long = -16
Private Const WS_DISABLED As Long = &H8000000
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Sub Form_Load()
Dim nStyle As Long
Dim hNotepadWnd As Long
hNotepadWnd = &H720694
nStyle = GetWindowLong(hNotepadWnd, GWL_STYLE)
SetWindowLong hNotepadWnd, GWL_STYLE, nStyle Or WS_DISABLED
End Sub
(VB6 donc Long a la place de tes Integer)
et ca fonctionne bien...
reste qu'il te faut récupérer un Handle de fenêtre
nerone21
Messages postés108Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 5 mai 2011 4 avril 2008 à 12:11
merci mais je m'en sort pas plus que ça...
j'ai déclarer:
<li>PrivateDeclareFunction SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd AsLong, ByVal nIndex AsLong, ByVal dwNewLong AsLong) AsLong</li><li>PrivateConst GWL_STYLE (-16)</li><li>PrivateConst WS_DISABLED &H8000000</li>mais je ne sais pas quoi mettre lors de l'appel de la fonction SetWindowLong(...)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202175 4 avril 2008 à 12:18
en .Net, on déclare :
Private DeclareFunction GetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer) As Integer
Private DeclareFunction SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
nerone21
Messages postés108Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 5 mai 2011 4 avril 2008 à 12:22
alors j'ai trouvé tout les paramétres seulement j'ai une erreur de déséquilibre de la pile (PInvokeStackImbalance) et comme je sais pas ce que c'est et encore moins le résoudre...
nerone21
Messages postés108Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 5 mai 2011 4 avril 2008 à 12:40
peut on reprendre depuis le début...
je déclare:<li>PrivateDeclareFunction SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long</li><li>PrivateConst GWL_STYLE (-16)</li><li>PrivateConst WS_DISABLED &H8000000</li>est-on d'accord déjà pour tout ça???
et ensuite l'appel:
nerone21
Messages postés108Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 5 mai 2011 4 avril 2008 à 13:21
bon désolé mais ca ne marche pas... j'ai encore la main sur le notepad
les valeurs que j'ai mise a GWL_STYLE (-16) et WS_DISABLED &H8000000 sont elles bonnes ou pas?