KeyCode

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

The keys on a keyboard are assigned with 'KeyCode'. Is there a KeyCode for
'PrtScr'? I cannot seem to find this KeyCode. If there is no such KeyCode,
can VBA codes detect when the 'PrtScr' key is pressed?

Thanks.
 
Hi,
If you want to capture the screen, maybe more simple if use
API calls :
Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const VK_SNAPSHOT = &H2C

Sub PRTSCR()
keybd_event VK_SNAPSHOT, 1, 0, 0
End Sub

Rgds,

Halim
 
I'm guessing this is connected to the OP's previous request to prevent
PrtScr rather than call it.

NickHK
 
Thanks a lot guys for all your help.

Just for your information, I have managed to circumvent the 'PrtScr' issue
by using a timer and clear clipboard procedures.
 
Can you post the code.

NickHK

Francis Ang said:
Thanks a lot guys for all your help.

Just for your information, I have managed to circumvent the 'PrtScr' issue
by using a timer and clear clipboard procedures.
 
Here is the code ...

Declare Function CloseClipboard Lib "user32" () As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long

Public RunWhen As Double
Public Const cProc = "ClrSub"

Sub ClearClipboard()
OpenClipboard 0&
EmptyClipboard
CloseClipboard
End Sub

Sub StartTimer()

RunWhen = Now + TimeSerial(0, 0, 1)
Application.OnTime earliesttime:=RunWhen, procedure:=cProc, _
schedule:=True

End Sub


Sub ClrSub()

ClearClipboard
StartTimer

End Sub
 
I won't know when the user press PrtScr. The code will run continuously and
clear the clipboard. This code takes about 1% or less of the CPU resources.
This is how I use the code.

Sub YourCode

StartTimer

Your other codes ...

End Sub

I must say this is not the best way to do it, but I achived my objective.
 
Back
Top