KEYTOSCREEN

sese817 Messages postés 38 Date d'inscription samedi 19 avril 2003 Statut Membre Dernière intervention 28 avril 2004 - 12 juin 2003 à 22:30
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 - 10 sept. 2004 à 00:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7420-keytoscreen

Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
10 sept. 2004 à 00:52
encore moi :-)

pour finir je dirais que voila g fait un module pour garder le focus d'une form sur une autre, un peu comme une msgbox. je n'utilise pas ma méthode cité au dessus et c mieux.

ca devrai vous interesser :-)

http://www.vbfrance.com/code.aspx?ID=26048

elle pourrai clignoter aussi
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
9 sept. 2004 à 19:33
oh yes ! g trouvé ce que je cherchai, je vous en fais part :
donc vous choisissez une méthode pour garder le focus sur votre form et vous mettez ca en plus :

ds les déclarations :
'pour simuler l'action de la souris, autre que le mouvement
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10

puis là ou vous avez votre méthode de keep focus :
(ds mon cas c ce que j'ai proposé juste au dessus)

Private Sub Form_Deactivate()
Dim cButt As Long
Dim dwEI As Long
'dans cet exemple, ca lève le bouton gauche de la souris
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
DoEvents
Me.setfocus
End Sub

dans cette exemple ca lève le bouton gauche de la souris. donc si vous cliquez avec le bouton gauche, mettons ailleurs que sur votre form,eh bien ca l'annule, et remet la form en focus.

biensur faut blinder avec select case pour le bouton de la souris, et avec la position du click de la souris, pour ne pas annuler le clic du bouton de votre form, mais plutot annuler les clics en dehors de la form. ajoutez un beep qd le click est endehors et ca fait comme pour une message box. :-) là je suis content tout d'un coup.
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
9 sept. 2004 à 19:16
ca m'interesse bcp ce keep focus

pour garder le focus y avai aussi :
Private Sub Form_Deactivate()
Me.setfocus
End Sub

MAIS , les réponses sont pas parfaites. si on clique sur une form en arriere plan, le clique sera qd meme valide. c-a-d si l'on clique sur un bouton d'une fenetre en arriere plan, y aura qd meme l'évenement du bouton qui se produira. donc comment faire pour garder le focus une fenetre et d'empecher de cliquer sur une autre, un peu comme une msgbox, sur msgbox on ne peut pas cliquer sur la fenetre qui est derriere. voyez...

je cherche ds la voie qui lache le bouton de la souris, mais je trouve pas.
comment faire ?
:-)
UnExPeCtEdSpy Messages postés 139 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 3 juillet 2003
13 juin 2003 à 19:36
Lol merci les gars (bien que vous auriez pu me faire l'honneur de donwload la source :p) vous auriez vu qu'elle est déjà en premier plan forcée :)

Effectivement j'avais oublié la propriété Setfocus, qui correspond exactement a ce que je chercher :)

Merci a+
cs_Krach Messages postés 18 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 13 septembre 2003
13 juin 2003 à 17:35
En effet, mais ça ne bouffe pas trop le CPU le fait que le Timer soit toujours en fonctionnement?
ICIoBRa Messages postés 368 Date d'inscription dimanche 24 juin 2001 Statut Membre Dernière intervention 7 décembre 2015
13 juin 2003 à 17:33
Nan ça ca reste visible à l'écran kand on click otre part, mais ça ne garde pas le focus...
cs_Krach Messages postés 18 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 13 septembre 2003
13 juin 2003 à 16:30
Sinon, pour une version sans Timer il y a ça :

1) fais un module qui contiendra ça :

Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

Public Sub RendreFormTjsVisible(MonForm As Object)
SetWindowPos MonForm.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub

Public Sub RendreFormPasTjsVisible(MonForm As Object)
SetWindowPos MonForm.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub


2) Met ça dans Form_Load :

RendreFormTjsVisible Form1

__________________________________________________________________

Et voilà, c'est peut-etre plus long que les message ci-dessu mais ça n'utilise pas de Timer.

@+
ICIoBRa Messages postés 368 Date d'inscription dimanche 24 juin 2001 Statut Membre Dernière intervention 7 décembre 2015
13 juin 2003 à 11:13
Tu mets juste le timer avec le Me.SetFocus t'en a assé ;)
sese817 Messages postés 38 Date d'inscription samedi 19 avril 2003 Statut Membre Dernière intervention 28 avril 2004
12 juin 2003 à 22:30
Salut tu fais d'abord un module tu y met :
Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)

Ensuite dans le load de ta form tu met :

SetWindowPos Form1.hwnd, -1, Form1.Left / 15, _
Form1.Top / 15, Form1.Width / 15, _
Form1.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW

Enusite tu met un timer avec intervall 10
dedans tu met :
Me.SetFocus
voila allez @ +
Rejoignez-nous