Include cellular jamming system in your database - actually that may not be enough - it may need to wipe the phone completely, like those 20 people in Robert Mueller's team whose phones were all accidentally wipe erased near the end of the investigation. If that doesn't work, maybe put your database in a special terminal, 15 feet behind a metal grate - like those vending machines in rest areas on the highway, so no one can get close enough to take a picture without using tiny drones.... (Disclaimer: I'm just joking)
this will lead to another security measure , can we via VBA prevent Printscreen from keyboard hardware or softeware , @isladogs is there any VBA for this?
To directly answer your question, you can block certain key or key combination using the Form_KeyDown event
The following code blocks Ctrl+C, Ctrl+V, PtrtSc & Alt+PrtSc
Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Err_Handler
'Used to disable selected input key values
Select Case Shift
Case acCtrlMask
'Control pressed
If KeyCode = vbKeyV Then
MsgBox "Sorry - pasting text is not allowed on this form", vbCritical, "ERROR"
KeyCode = 0
End If
If KeyCode = vbKeyC Then
MsgBox "Sorry - copying text is not allowed on this form", vbCritical, "ERROR"
KeyCode = 0
End If
'Exit Sub
Case acAltMask
'Alt pressed
If KeyCode = vbKeyPrint Then KeyCode = 0 'Alt + PtrSc pressed - don't allow it
End Select
Select Case KeyCode
Case vbKeyPrint
'PtrSc pressed - don't allow it
KeyCode = 0
End Select
Exit_Handler:
Exit Sub
Err_Handler:
MsgBox "Error " & Err.Number & " in Form_KeyDown procedure : " & Err.Description
Resume Exit_Handler
End Sub
For this to work, set Key Preview = Yes in the form property sheet.
However, whilst I often block Ctrl+C & Ctrl+V, I agree with recent comments that trying to block screenshots is completely futile.
If I can't use Print Screen, I would just use the Windows Snipping Tool or take a photo on my phone etc, etc ....
@isladogs
Just out of curiosity, I was thinking of keypress too but isn't that sadly dependent on Focus?
For example, if you have a database screen showing on your computer, with, say, the Desktop in the background. (all other windows are minimized). While looking at the db screen, you mouse click on a blank spot on the Desktop, to the side(behind).
At that point the whole database will still be showing, but won't have the focus, and the key events won't really be caught, right?
When I studied for my Security+ certificate for the Navy, we discussed the fact that that is an inverse relationship between security and usability. The most secure computer in the world is the one that isn't plugged in - but it isn't worth a damn because nobody can use it. The whole point of a shared data system is to share data. Therefore, when asking security questions, you have to determine what would and what would not be within the intended scope of usage of your system. The starting point is, of course, that you NEVER EVER let a user see anything but forms, and then you very carefully control what those forms can do. Outside of the DB app, secure the pathways to the folders where that app and data are stored. But you have to also identify things that are within the scope of work of someone just "doing their job" innocently.
Past a certain point, you have to realize that your problem isn't securing the database. It is securing the people by knowing who is using what parts and knowing whether they are worthy of trust to use the data. You are stuck with a reality that sounds terrible, but it is a reality. There is no way that a usable system can be 100% secure. But you can improve the odds with appropriate training of your employees to include discussions of WHY you guys are so paranoid about what they can and cannot do.
In the end analysis, you are looking at a risk/reward situation. What is the risk of allowing users to see the data? What reward do you get if they do? What is the cost to allow that type of usage? What is the cost of abuse of that usage? It is all a balancing act. Some of the decisions must be made by higher management in light of the inverse relation between security and utility. In a really small company, all of that might be on one person, but in a decent-sized business, the programmer and the manager are not the same person. The decision-makers need to be in the loop at some point to decide what risks are involved.
You're not paying attention. Even if you find a way to disable print screen keyboard, users can use 3d party applications or even windows' snipping tool.
If you disable them too, you can't use vba to prevent them to take a photo of the screen with their phones.
Try to work with customer's ID and don't show their names or other confidential info on the screen.
i am paying attention , thats why i am asking for VBA code for this , i will do the maximum i can do in my app , the rest might be disabled by the company IT , and for sure there is security cameras in the offices that will help detecting who try taking photos by his mobile phone.
To directly answer your question, you can block certain key or key combination using the Form_KeyDown event
The following code blocks Ctrl+C, Ctrl+V, PtrtSc & Alt+PrtSc
Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Err_Handler
'Used to disable selected input key values
Select Case Shift
Case acCtrlMask
'Control pressed
If KeyCode = vbKeyV Then
MsgBox "Sorry - pasting text is not allowed on this form", vbCritical, "ERROR"
KeyCode = 0
End If
If KeyCode = vbKeyC Then
MsgBox "Sorry - copying text is not allowed on this form", vbCritical, "ERROR"
KeyCode = 0
End If
'Exit Sub
Case acAltMask
'Alt pressed
If KeyCode = vbKeyPrint Then KeyCode = 0 'Alt + PtrSc pressed - don't allow it
End Select
Select Case KeyCode
Case vbKeyPrint
'PtrSc pressed - don't allow it
KeyCode = 0
End Select
Exit_Handler:
Exit Sub
Err_Handler:
MsgBox "Error " & Err.Number & " in Form_KeyDown procedure : " & Err.Description
Resume Exit_Handler
End Sub
For this to work, set Key Preview = Yes in the form property sheet.
However, whilst I often block Ctrl+C & Ctrl+V, I agree with recent comments that trying to block screenshots is completely futile.
If I can't use Print Screen, I would just use the Windows Snipping Tool or take a photo on my phone etc, etc ....
thank you for the code , i will work on it , but i will edit few things in it , such as instead of showing the user a warning msg , i will add a line that will add record to a table that warn the admin or the company owner there this user was trying to print screen a form with details of time , user , computer and form name.
this will help detecting and spotting thieves .
and in case of form lost focus it will be auto minimized
@isladogs
Just out of curiosity, I was thinking of keypress too but isn't that sadly dependent on Focus?
For example, if you have a database screen showing on your computer, with, say, the Desktop in the background. (all other windows are minimized). While looking at the db screen, you mouse click on a blank spot on the Desktop, to the side(behind).
At that point the whole database will still be showing, but won't have the focus, and the key events won't really be caught, right?
@isladogs
Just out of curiosity, I was thinking of keypress too but isn't that sadly dependent on Focus?
For example, if you have a database screen showing on your computer, with, say, the Desktop in the background. (all other windows are minimized). While looking at the db screen, you mouse click on a blank spot on the Desktop, to the side(behind).
At that point the whole database will still be showing, but won't have the focus, and the key events won't really be caught, right?
Well obviously that would have no meaningful impact on keycodes like Ctrl+P or indeed Alt+PrtSc (as that grabs the active window)
Whilst it could be done to overcome any blocking of PrtSc used on its own, that's easy to prevent by several methods including:
a) maximizing the app & preventing it being restored
b) restricting the mouse to the application area so users cannot click outside it
However that's all rather irrelevant in the case of screenshots when they can be done outside the app anyway
thank you for the code , i will work on it , but i will edit few things in it , such as instead of showing the user a warning msg , i will add a line that will add record to a table that warn the admin or the company owner there this user was trying to print screen a form with details of time , user , computer and form name.
this will help detecting and spotting thieves .
and in case of form lost focus it will be auto minimized
The code was just intended as an example. Feel free to add to it or modify it as you wish.
Perhaps you could upload your own version when done for the benefit of others
However beware spending lots of time creating monitoring code that may be rarely if ever used in practice
I'm not aware that Ctrl+PtrSc does anything ... though Alt+PtrSc is a valid combination
However I had forgotten about Win+PrtSc and of course there is Windows + Shift + S for running the new Snipping Tool.
There are so many ways around it, I don't even try to disable screenshots
Anyway, yes - you can confine user movement within the application window.
For example the attached app does that at startup ...although I also provide code to undo that feature on a button click
Anyway, yes - you can confine user movement within the application window.
For example the attached app does that at startup ...although in that case I also provide code to undo that feature
Wow! I never knew that. Who knows when or how? I must have gotten the impression at some point that I needed Ctrl. (maybe laptop is different depending on different/multi-purposed keys?) But at least on my regular keyboard, I now know I can stop including Ctrl. Thanks for that.
This has been a week of surprises for me, finding out the odd things I never knew but should have. Like the existence of SaveCopyAs in Excel VBA.
The code was just intended as an example. Feel free to add to it or modify it as you wish.
Perhaps you could upload your own version when done for the benefit of others
However beware spending lots of time creating monitoring code that may be rarely if ever used in practice
thank you , i will modify it somehow and will let you know.
and for sure once i am done i will post an example of it as for the others.
if it catch even 1 person better than having some thive among us and we don't know ,also it is better to do everything while building the app as long as i still have the time for it .
Thanks. I do now! Is that from the XBox?
Never seen that before. Seems to only work if you're on the taskbar.
Perhaps you can tell me the purpose of the Ctrl+T shortcut in the VBE.
It does the same thing in all Office apps and has done for many if not all versions back to 1.0 ... but I've no idea what its purpose is