Typing special chars with keybd_event

Windows specific forum
Dude
Addict
Addict
Posts: 1907
Joined: Mon Feb 16, 2015 2:49 pm

Typing special chars with keybd_event

Post by Dude »

Hi dudes! :)

The following code is meant to type a copyright symbol by holding down the Alt key and typing 0169 on the numeric keypad.

But for some reason, it's not working. If I set UseAlt to 0, the 0169 definitely works and gets typed, so Alt is clearly the issue.

Any ideas on why it would be failing? Note: I don't want to use SendInput because I'm more interested in why this fails.

[Edit] Seems I'm not the only one with this problem: http://www.delphigroups.info/2/47/498662.html

Code: Select all

Sleep_(2000)

UseAlt=1

If UseAlt=1
  keybd_event_(#VK_MENU,0,0,0)
EndIf

keybd_event_(#VK_NUMPAD0,0,0,0) : keybd_event_(#VK_NUMPAD0,0,#KEYEVENTF_KEYUP,0)
keybd_event_(#VK_NUMPAD1,0,0,0) : keybd_event_(#VK_NUMPAD1,0,#KEYEVENTF_KEYUP,0)
keybd_event_(#VK_NUMPAD6,0,0,0) : keybd_event_(#VK_NUMPAD6,0,#KEYEVENTF_KEYUP,0)
keybd_event_(#VK_NUMPAD9,0,0,0) : keybd_event_(#VK_NUMPAD9,0,#KEYEVENTF_KEYUP,0)

If UseAlt=1
  keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0)
EndIf
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4636
Joined: Sun Apr 12, 2009 6:27 am

Re: Typing special chars with keybd_event

Post by RASHAD »

What are you doing Dude?

Code: Select all

RunProgram("notepad.exe") ; Start Notepad...
Repeat 
  hwnd = FindWindow_(0,"Untitled - Notepad")
Until hwnd

SetForegroundWindow_(hWnd)
keybd_event_(#VK_MENU, MapVirtualKey_(#VK_MENU, 0), 0, 0);
keybd_event_(#VK_NUMPAD0, MapVirtualKey_(#VK_NUMPAD0, 0), 0, 0):keybd_event_(#VK_NUMPAD0, MapVirtualKey_(#VK_NUMPAD0, 0), #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_NUMPAD1, MapVirtualKey_(#VK_NUMPAD1, 0), 0, 0):keybd_event_(#VK_NUMPAD1, MapVirtualKey_(#VK_NUMPAD1, 0), #KEYEVENTF_KEYUP, 0);
keybd_event_(#VK_NUMPAD6, MapVirtualKey_(#VK_NUMPAD6, 0), 0, 0):keybd_event_(#VK_NUMPAD6, MapVirtualKey_(#VK_NUMPAD6, 0), #KEYEVENTF_KEYUP, 0);
keybd_event_(#VK_NUMPAD9, MapVirtualKey_(#VK_NUMPAD9, 0), 0, 0):keybd_event_(#VK_NUMPAD9, MapVirtualKey_(#VK_NUMPAD9, 0), #KEYEVENTF_KEYUP, 0);
keybd_event_(#VK_MENU, MapVirtualKey_(#VK_MENU, 0), #KEYEVENTF_KEYUP, 0)
Egypt my love
Dude
Addict
Addict
Posts: 1907
Joined: Mon Feb 16, 2015 2:49 pm

Re: Typing special chars with keybd_event

Post by Dude »

Thanks Rashad, I didn't know MapVirtualKey_() would be needed, because without Alt the other keys are typed without problem. Appreciate your helping me. :)
Post Reply