I just pinched this one from one of my MASM apps. It is designed to be used in a key processing function from a WM_KEYUP message or similar. I use it in the message loop for hotkey combinations.
It can be done with a couple of less instructions but at the price of inverting the logic for the following conditional jump.
Code:
#IF 0 ' *********************************************** macro to test if a virtual key is pressed use the following ASM instructions to respond ' either CmpKey(%VK_SHIFT) ! je label ' if VK_SHIFT is pressed ' or CmpKey(%VK_SHIFT) ! jne label ' if VK_SHIFT is not pressed ' ....... label: #ENDIF ' *********************************************** MACRO CmpKey(vk_key) GetAsyncKeyState vk_key ! and eax, &B00000000000000001000000000000000 ! rol eax, 17 ! cmp eax, 1 END MACRO ' ******************************************************