Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 Enter-Taste abfragen
Autor: Jens-Arne Reumschüssel (---.77.8.pool.telefonica.de)
Datum:   01.07.22 16:22

Hallo,

ich habe öfter das Problem, dass bei bestimmten Controls (z.B. Buttons) beim Drücken von Enter WM_CHAR und WM_KEYDOWN nicht gesendet werden. D.h. man kann im Subclassing nicht auf das Drücken von Enter bei diesen Controls prüfen, was natürlich manchmal extrem ärgerlich sein kann.

Ich habe jetzt eine Lösung gefunden, die über einen Keyboard-Hook funktioniert. Vielleicht ist das ja für den einen oder anderen interessant.

 declare hB%,ende%,enter%,hKbHook%
 
 PROC KeyboardHookProc
   parameters code&,wParam&,lParam&
   declare i%,erg%
   erg%=0 'Message weiterreichen und von anderen Hooks oder dem System bearbeiten lassen
   if code&>=0 'sonst muss alles direkt an CallNextHookEx weitergereicht werden [https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms644984(v=vs.85)]
     if wParam&=13 '13=~VK_RETURN
       if @testbit(lParam&,31)=0 'keydown
         if %getfocus=hB%
           enter%=1
           @sendmessage(%HWnd,$8000,0,0) 'waitinput verlassen
           erg%=1 'Message *nicht* weiterreichen und von anderen Hooks oder dem System bearbeiten lassen
         endif
       endif
     endif
   endif
   if erg%=0
     return @external("USER32.DLL","CallNextHookEx",0,code&,wParam&,lParam&)
   else
     return erg%
   endif
 ENDPROC 'KeyboardHookProc
 
 'Hauptprogramm
 cls
 usermessages $10,$8000 'Programmende, waitinput verlassen
 hB%=@create("BUTTON",%HWnd,"Button",10,50,100,30)
 @setfocus(hB%)
 hKbHook%=@external("USER32.DLL","SetWindowsHookExA",2,@procaddr("KeyboardHookProc",3),0,@external("KERNEL32.DLL","GetCurrentThreadId")) '2=~WH_KEYBOARD
 print "Enter drücken. Reagiert nur, wenn der Button den Fokus hat (das ist bei Pro-"
 print "grammstart der Fall)."
 enter%=0
 ende%=0
 whilenot ende%
   waitinput
   if %umessage=$10
     ende%=1
   elseif enter%
     @messagebox("Enter auf Button gedrückt","Enter gedrückt",0)
     enter%=0
   endif
 endwhile
 @external("USER32.DLL","UnhookWindowsHookEx",hKbHook%)
 end
 


Gruß, Jens-Arne

Beitrag beantworten
 
 Re: Enter-Taste abfragen
Autor: p. specht (---.nat.highway.telekom.at)
Datum:   02.07.22 11:08

Interessant. Gehört in XProfan-5. Von dem man aber wenig gehört hat. :cry:

____
Ein richtiges Problem hat keine Lösung, nur Näherungen!

Beitrag beantworten
 
 Re: Enter-Taste abfragen
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   02.07.22 11:19

Zitat:

Gehört in XProfan-5. Von dem man aber wenig gehört hat.


Die Hoffnung auf X5 habe ich schon aufgegeben.
Ich fände es schon gut, wenn Roland mal die Befehle /Funktionen,
die in X4 nicht mehr (richtig) funktionieren, berichtigen würde.
In Paules Forum hatten wir ja in der Vergangenheit einige
gepostet.

Zumindest ein Patch wäre schon gut.

H.Brill
XProfan X4 + FreeProfan

Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org