Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Demande d'aide sur l'objet WB. | |
| | Auteur | Message |
---|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet WB. Jeu 20 Aoû 2015 - 21:12 | |
| Bonsoir.
@Klaus.
J'ai remarqué que l'objet WB gérait bien les caractères UNICODE. Je peux maintenant assez facilement lui transmettre un tel caractère.
Je souhaiterais cependant pouvoir envoyer n'importe quel caractère ASCII à cet objet, pour l'afficher ensuite.
Une solution est-elle envisageable ?
Merci de ton aide.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet WB. Jeu 20 Aoû 2015 - 23:43 | |
| Qu'est-ce que tu veux dire par "envoyer n'importe quel caractère ASCII" ? Tu peux utiliser les fonctions de la section "Envoi de touches, caractères et textes à un objet" de KGF.dll pour envoyer un caractère ANSI à un WB. C'est ce que tu cherches ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet WB. Ven 21 Aoû 2015 - 2:21 | |
| J'ai réussi à faire la fonction qui réalise ce que tu cherches à faire. J'ai réalisé la fonction suivante: - Code:
-
res% = dll_call4("SetSpecialKeyboardHook",opt%,handle(form%),adr(flag%),handle(edit%)) opt% est 1 pour activer le hook, ou 0 pour le désactiver. form% est en général 0 (form 0) edit% est le numéro d'un objet EDIT (qui peut être caché par HIDE). Cet objet reçoit le VK_code de la touche frappée, codée comme str$(x), en valeur positive si on l'enfonce et en valeur négative si on la relâche. Exemple: 32 ==> enfoncement de la touche Espace 41 ==> enfoncement de la touche A à ce moment, Espace et A sont enfoncés simultanément -41 ==> relâchement de la touche A -32 ==> relâchement de la touche Espace flag% est est une variable entière qui reçoit la même valeur, mais comme valeur entière Si cet objet EDIT a un évènement ON_CHANGE, cette routine sera appelée pour chaque touche enfoncée ou relâchée, et la variable flag% te servira alors pour déterminer ce qui s'est passé. Tu peux ainsi garder la trace des touches enfoncées, dans un tableau, un DLIST ou selon d'autres techniques de ton choix. Voici le programme de démo: - Code:
-
' test_SetSpecialKeyboardHook.bas
label touche, close0 dim flag%, res%
on_close 0,close0
edit 1 : top 1,10 : left 1,10 : on_change 1,touche alpha 2 : top 2,10 : left 2,200
dll_on "KGF.dll"
res% = dll_call4("SetSpecialKeyboardHook",1,handle(0),adr(flag%),handle(1))
end
close0: res% = dll_call4("SetSpecialKeyboardHook",0,handle(0),adr(flag%),handle(1)) return
touche: caption 2,str$(flag%) return
Mais il se fait tard, et je ferai la doc et la publication de l'ensemble pendant le week-end. J'aime bien ce genre de défis... | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet WB. Ven 21 Aoû 2015 - 6:07 | |
| Bonjour.
Merci beaucoup Klaus.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet WB. Ven 21 Aoû 2015 - 12:21 | |
| C'est fait. Dll et doc sont en ligne... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet WB. Ven 21 Aoû 2015 - 14:12 | |
| Regarde ce code. Il permet de savoir quelles touches sont enfoncées: - Code:
-
' test_SetSpecialKeyboardHook.bas
label touche, close0 dim flag%, res%, l%, c%, n%, key%
on_close 0,close0 width 0,1100
edit 1001 : top 1001,10 : left 1001,10 : on_change 1001,touche alpha 1002 : top 1002,10 : left 1002,200
n% = 0 for l%=1 to 8 for c%=1 to 32 n% = n% + 1 edit n% : width n%,20 : top n%,10+l%*30 : left n%,10+c%*30 color n%,255,0,0 if n%<31 text n%,"?" else text n%,chr$(n%-1) end_if next c% next l%
dll_on "KGF.dll"
res% = dll_call4("SetSpecialKeyboardHook",1,handle(0),adr(flag%),handle(1001))
end
close0: res% = dll_call4("SetSpecialKeyboardHook",0,handle(0),adr(flag%),handle(1001)) return
touche: caption 1002,str$(flag%) if flag%<0 key% = 0 - flag% color key%+1,255,0,0 else key% = flag% color key%+1,127,127,255 end_if return
| |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet WB. Ven 21 Aoû 2015 - 14:24 | |
| Bonjour. Merci Klaus. Voici donc la dernière version de mon code. Malheureusement, la dernière touche enfoncée est affichée 2 fois dans l'objet WB !! Et le fait de taper Alt D ne visualise pas un d barré dans ce même objet. Peux-tu m'aider, stp ? - Code:
-
dim a$, chaine$, flag%, touche%, h%, l%, res%, url$
label suite
edit 1 : top 1,10 : left 1,10 : on_change 1,suite
dll_on "KGF.dll"
res%=dll_call4("SetSpecialKeyboardHook",1,handle(0),adr(touche%),handle(1))
end
suite: touche%=abs(touche%)
' alt=18 if touche%=18 flag%=1 ' wait 1000 return end_if a$=chr$(touche%)
if flag%=1 and a$="c" then a$="ć" if flag%=1 and a$="d" then a$="đ" chaine$=chaine$+a$ mise_a_jour()
flag%=0 ' wait 1000 return
suite2:
return
sub mise_a_jour() res%=dll_call0("WBDelete") file_open_write 1,"c:\a\test.html" file_writeln 1,chaine$ file_close 1
url$="file://c:\a\test.html" res%=dll_call1("WBCreate",handle(0)) res%=dll_call4("WBLocate",0,200,200,200) res%=dll_call1("WBUrl",adr(url$)) res%=dll_call2("WBScrollBars",1,1) end_sub | |
| | | Contenu sponsorisé
| Sujet: Re: Demande d'aide sur l'objet WB. | |
| |
| | | | Demande d'aide sur l'objet WB. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |