Lordvb
Messages postés57Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 3 décembre 2004
-
7 juin 2003 à 15:00
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007
-
6 mai 2004 à 21:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Private Type Msg
hwnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private Sub Form_Load()
RegisterHotKey(Me.hwnd, &HBFFF&, MOD_CONTROL, vbKeyN) 'touche a enregistrer, tu met vbkey(ce que tu veux) et la place de MOD_CONTROL, soit MOD_ALT ou MOD_SHIFT , met tu peux laisser tel quel, le couple de touche serait alors control+N
Show
ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
bCancel = True
'unregister hotkey
Call UnregisterHotKey(Me.hwnd, &HBFFF&)
End
End Sub
Private Sub ProcessMessages()
Dim Message As Msg
'loop until bCancel is set to True
Do While Not bCancel
'wait for a message
WaitMessage
'check if it's a HOTKEY-message
If PeekMessage(Message, Me.hwnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
'code que tu veux faire lors de l'appui des touches raccourcis
End If
End If
'let the operating system process other events
DoEvents
Loop
End Sub
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 6 mai 2004 à 21:19
En fait, si tu déroules un menu d'une application et qu'ensuite tu cliques sur l'application de capture afin de promener ta souris, le menu se referme aussitôt...
J'ai laissé un message sur la source de zappy pour voir s'il peut ou non modifier cette "option"
Ceci dit, je réitère ma demande de commentaires à Renfield... lorsqu'il repassera par ici...
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 6 mai 2004 à 21:16
Mon code prend bien en compte les menus, je me disai bien que c'était strange ... Il les prend car la capture est faite depuis une zone rectangulaire délimitée par raport à l'écran, et comme le menu est dans la fenetre , il le prend ... Je crois que je me suis aidé du code cité plus haut pour faire le mien, si tu veux, je peux poser mon code si l'autre ne te convient pas pour t'inspirer
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 6 mai 2004 à 21:10
Je venai justement pour te passer l'adresse lol
Par contre pour les menu, j'ai jamais fait attention, c'est bizzare :(
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 6 mai 2004 à 21:06
Pour info, la source dont tu parles est "MAGIQUE CAPTURE (CAPTURE D'ÉCRAN ET DE SOUS FENÊTRES)" de zappy.
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 6 mai 2004 à 21:05
>>>azerty25
C'est justement celle que j'étais en train de tester quand ton message est arrivé.
Mais d'après ce que j'ai constaté, il n'est pas possible de copier un menu déroulé... Ce qui était possible avec la source de Renfield...
Ceci dit, il me reste à étudier le code pour tenter de comprendre le fonctionnement de ces API...
Merci pour la réponse
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 6 mai 2004 à 20:55
Il est tout à fait possible de le faire, j'ai fait ce code mais qui n'ai pas sur VBfrance, il faut utiliser getwindowrec pour cadrer la position de la fenetre, et apres je sais plus trop.
Mais regarde sur le site, il y a déja une source qui le fait, j'ai déja vu, il utilise un détecteur de handle sous la souris si ma mémoire est bonne, cad quand tu met le curseur sous une fenetre, il la cadre toute seul, il fonctionne aussi avec des textbox etc etc qui on aussi des handle, met il passe par le clipboard pour coller l'image.
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 6 mai 2004 à 18:38
Salut Renfield,
Je suis occupé à revoir le code de ma source citée ci-dessus et je voulais recomparer avec le tien.
Mais avec l'interception des touches, j'ai encore du mal...
Pourrais-tu commenter ton code afin de me permettre de comprendre le fonctionnement de celui-ci ?
De plus, sauf erreur de ma part, il me semble qu'il n'est (actuellement) pas possible de copier une fenêtre active qui n'occuperait pas l'entièreté de l'écran (style une boîte de dialogue avec les touches ALT+PRINTSCREEN).
D'avance merci.
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 7 déc. 2003 à 10:52
Oua trop dla bombe, et moi qui a cherché sa il y a déja un moment sur le net sans jamais vraiment trouvé pour faifre des screen de jeux 8-)
C'est tout simplement ce qu'il me fallai lol
Mici bocou Billou, toujours des bonnes idées !!! ;)
Alors ton projet de konkette de Micro$oft avance lol ?
PSALSI
Messages postés2Date d'inscriptionvendredi 22 août 2003StatutMembreDernière intervention26 août 2003 26 août 2003 à 10:46
Merci beaucoup Renfield ! ;o)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 23 août 2003 à 10:01
il te suffit de remanier legerement ma source : tu remarquera que la capture d'ecran ne se trouve pas dans le presse papier.... la touche n'a pas ete transmise !!!
PSALSI
Messages postés2Date d'inscriptionvendredi 22 août 2003StatutMembreDernière intervention26 août 2003 22 août 2003 à 11:32
bonjour à tous,
moi c'est l'inverse, je cherche à bloquer la touche imprim'écran, est ce que l'un de vous sait comment faire et peut m'aider ?
merci d'avance!
skowee59
Messages postés78Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention29 juin 2006 8 juin 2003 à 12:23
Je viens juste de la tester (sans regarder la source pour l'instant) et c'est vrai que c'est simple d'utilisation. Pour le moment, le seul truc que je peux reprocher c'est que, si je ne me trompe pas, tes fichiers s'enregistrent selon "date" et "heure" mais si tu viens à créer 2 images écran exactement au même moment => que se passera-t-il ? La première sera t-elle supprimée ?
Sinon, très bien ;-)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 juin 2003 à 10:47
non, Programix, ton appli est certes plus complète, mais la capture d'ecran suit toujours le meme processus, ca passe par le presse-papiers, que tu enregistre ensuite dans un fichier.
mon appli est moins aboutie, je te l'accorde, et j'en suis pleinement conscient, mais ca ne passe aucunement par le presse papiers......
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 8 juin 2003 à 10:41
C'est pareil pour moi, j'utilise la touche "Imprim Ecran".
Si le titre parle de la barre des tâches, c'est tout simplement parce que l'application est prévue pour se mettre dans la barre des tâches et, surtout, se lancer à chaque démarrage du PC.
L'option "Imprimer" me paraissait importante pour en cas de message d'alerte inhabituel dans l'une ou l'autre application, cela me permet de faire imédiatement une copie d'écran de ce message pour en garder une trace en cas de besoin ultérieur (appel à un dépanneur par exemple).
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 juin 2003 à 10:18
merci Programmix, j'y jetterais peut-être un oeil, pas forcément tout de suite.....
l'avantage de ma technique, a mon avis, c'est l'interception de la touche Imprim Ecran...
ce qui fait que ni le presse papier, ni les habitudes de fonctionnement ne sont modifiés.
encore merci pour l'info
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 8 juin 2003 à 09:42
Oups... la source se nomme "Imprimer ou enregistrer une copie d'écran via la barre des tâches" et porte le n° 5959.
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 8 juin 2003 à 09:41
J'avais réalisé une source de ce genre qui permettait d'imprimer la capture ainsi que l'enregistrer en BMP ou en JPEG...
Ma source est encore loin d'être parfaite, mais tu pourrais peut-être t'en servir pour atteindre tes objectifs. Si tel était le cas, fais-moi signe que je vois les améliorations que tu y auras apportées.
Lordvb
Messages postés57Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 3 décembre 2004 7 juin 2003 à 15:00
merci beaucoup c vraiment genial comme source je vais tente de l'adapter en .net ;)
6 mai 2004 à 21:27
Je te joint un exemple simple que j'utilise, tiré de all api et modifé ensuite.
Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312
Private bCancel As Boolean
Private Type Msg
hwnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private Sub Form_Load()
RegisterHotKey(Me.hwnd, &HBFFF&, MOD_CONTROL, vbKeyN) 'touche a enregistrer, tu met vbkey(ce que tu veux) et la place de MOD_CONTROL, soit MOD_ALT ou MOD_SHIFT , met tu peux laisser tel quel, le couple de touche serait alors control+N
Show
ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
bCancel = True
'unregister hotkey
Call UnregisterHotKey(Me.hwnd, &HBFFF&)
End
End Sub
Private Sub ProcessMessages()
Dim Message As Msg
'loop until bCancel is set to True
Do While Not bCancel
'wait for a message
WaitMessage
'check if it's a HOTKEY-message
If PeekMessage(Message, Me.hwnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
'code que tu veux faire lors de l'appui des touches raccourcis
End If
End If
'let the operating system process other events
DoEvents
Loop
End Sub
6 mai 2004 à 21:19
J'ai laissé un message sur la source de zappy pour voir s'il peut ou non modifier cette "option"
Ceci dit, je réitère ma demande de commentaires à Renfield... lorsqu'il repassera par ici...
6 mai 2004 à 21:16
6 mai 2004 à 21:10
Par contre pour les menu, j'ai jamais fait attention, c'est bizzare :(
6 mai 2004 à 21:06
http://www.vbfrance.com/code.aspx?ID=4251
6 mai 2004 à 21:05
C'est justement celle que j'étais en train de tester quand ton message est arrivé.
Mais d'après ce que j'ai constaté, il n'est pas possible de copier un menu déroulé... Ce qui était possible avec la source de Renfield...
Ceci dit, il me reste à étudier le code pour tenter de comprendre le fonctionnement de ces API...
Merci pour la réponse
6 mai 2004 à 20:55
Mais regarde sur le site, il y a déja une source qui le fait, j'ai déja vu, il utilise un détecteur de handle sous la souris si ma mémoire est bonne, cad quand tu met le curseur sous une fenetre, il la cadre toute seul, il fonctionne aussi avec des textbox etc etc qui on aussi des handle, met il passe par le clipboard pour coller l'image.
6 mai 2004 à 18:38
Je suis occupé à revoir le code de ma source citée ci-dessus et je voulais recomparer avec le tien.
Mais avec l'interception des touches, j'ai encore du mal...
Pourrais-tu commenter ton code afin de me permettre de comprendre le fonctionnement de celui-ci ?
De plus, sauf erreur de ma part, il me semble qu'il n'est (actuellement) pas possible de copier une fenêtre active qui n'occuperait pas l'entièreté de l'écran (style une boîte de dialogue avec les touches ALT+PRINTSCREEN).
D'avance merci.
7 déc. 2003 à 10:52
C'est tout simplement ce qu'il me fallai lol
Mici bocou Billou, toujours des bonnes idées !!! ;)
Alors ton projet de konkette de Micro$oft avance lol ?
26 août 2003 à 10:46
23 août 2003 à 10:01
22 août 2003 à 11:32
moi c'est l'inverse, je cherche à bloquer la touche imprim'écran, est ce que l'un de vous sait comment faire et peut m'aider ?
merci d'avance!
8 juin 2003 à 12:23
Sinon, très bien ;-)
8 juin 2003 à 10:47
mon appli est moins aboutie, je te l'accorde, et j'en suis pleinement conscient, mais ca ne passe aucunement par le presse papiers......
8 juin 2003 à 10:41
Si le titre parle de la barre des tâches, c'est tout simplement parce que l'application est prévue pour se mettre dans la barre des tâches et, surtout, se lancer à chaque démarrage du PC.
L'option "Imprimer" me paraissait importante pour en cas de message d'alerte inhabituel dans l'une ou l'autre application, cela me permet de faire imédiatement une copie d'écran de ce message pour en garder une trace en cas de besoin ultérieur (appel à un dépanneur par exemple).
8 juin 2003 à 10:18
l'avantage de ma technique, a mon avis, c'est l'interception de la touche Imprim Ecran...
ce qui fait que ni le presse papier, ni les habitudes de fonctionnement ne sont modifiés.
encore merci pour l'info
8 juin 2003 à 09:42
8 juin 2003 à 09:41
Ma source est encore loin d'être parfaite, mais tu pourrais peut-être t'en servir pour atteindre tes objectifs. Si tel était le cas, fais-moi signe que je vois les améliorations que tu y auras apportées.
7 juin 2003 à 15:00