Bloquer l'accés à une fenetre

Résolu
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 5 mai 2011 - 4 avril 2008 à 11:22
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Derniè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...

merci.

14 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 avril 2008 à 11:37
alors désactive là, par exemple.... (WS_DISABLED)
0
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 5 mai 2011
4 avril 2008 à 11:43
Merci de cet info mais puis-je avoir un exemple parce que je sais pas comment on s'en sert... Merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 avril 2008 à 11:51
Api SetWindowLong GWL_STYLE
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Derniè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(...)

le premier parametre est le handle, mais aprés???

Merci encore
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
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

pour le reste, suffit de lire la doc !

http://msdn2.microsoft.com/en-us/library/ms633584(VS.85).aspx


et donc de faire :

Dim nStyle As Integer
nStyle = GetWindowLong( hNotePadWindow, GWLSTYLE)
SetWindowLong(hNodepageWindow, GWL_STYLE, nStyle Or WS_DISABLED)
0
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Derniè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...

HEEEEELP.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 avril 2008 à 12:29
erreur de copier/coller :

GetWindowLong Lib "user32" Alias "SetWindowLongA"
devrait etre:
GetWindowLong Lib "user32" Alias "GetWindowLongA"

sinon, pas le bon nombre de parametres, et la pile est déséquilibrée.
0
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 5 mai 2011
4 avril 2008 à 12:36
je n'utilise pas la fonction GetWindowLong

et le handle que je met dans le premier parametre est récupéré grace a la class process.handle...
0
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Derniè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:

SetWindowLong (processNotePad.handle, GWL_STYLE, WS_DISABLED)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 avril 2008 à 12:49
tu fais que ca ?
pas de GetWindowLong ?

c'est con, tu viens de fusiller NotePad...

il faut lire la valeur de 'GWL_STYLE'
y ajouter (Or) WS_DISABLED
et redonner le style a la fenêtre
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 avril 2008 à 12:51
et change tes déclarations APIs...( Long en Integer)
0
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Derniè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?
0
nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 5 mai 2011
4 avril 2008 à 14:19
C'est bon c'est parfait, j'ai trouvé... merci!
0