# VBForums CodeBank > CodeBank - Visual Basic 6 and earlier >  VB-Disable Ctrl Alt Del in XP, Hide TaskBar, Disable Windows keys

## wordracr

Ok, I'm just packin this stuff together =O
The only thing I haven't seen on this forum is about disabling ctrl alt delete.



--Ctrl Alt Del  Here is a Link to a great article.
At first you might think it isn't possible with vb6 judging by its title.
But give things a chance ^_^  I will leave you in suspense by saying no more.
If anything, you'll be disappointed, but relieved that there is a way to accomplish it.

If you don't want to use any of the methods listed in the article,
I saw that someone posted their idea and it killed (deleted) 
taskmgr.exe on a timer- because windows remakes if you delete 
it from the system32 dir.  A decent timer interval value is 100-500 ms.
Make sure you put On Error Resume Next in the sub that kills taskmgr.exe.  
Sometimes I got a path/file access error, probably from crammed timer events.



--Hide TaskBar(only)

This will remove the taskbar graphic from the users screen.
It will not be displayed until you show it.  
If the user presses the 
Windows key, it will show the StartMenu,
but this can be fixed, as shown in the next example.

Search msdn or AllApi.net for the API calls used and not defined.

VB Code:
Private Sub ToggleTaskBar()
    Dim TaskBarWnd As Long
    
    TaskBarWnd = FindWindow("Shell_TrayWnd", vbNullString)
    If IsWindowVisible(TaskBarWnd) Then
        Call ShowWindow(TaskBarWnd, SW_HIDE)
    Else
        Call ShowWindow(TaskBarWnd, SW_SHOW)
    End If
End Sub



--Disabling Keys such as Windows, Alt+tab, Alt+Esc, Ctrl+Esc, W+L,W+R,W+F,..etc.

I used the low level hook from merrion_computing's eventvb.dll. 
It seems to work just as good as a soldering iron, except that 
you can actually change it back just by running the unhook code ='(

I didn't use modules as much as I could have because I was
getting the shortcut keys received by windows and processed..
(rarely, but still happened), and I thought less code jumps might eliminate the problem.  
It could have been because I was running from vb.  
With an executable, I can't get anything to pass through, 
no matter how fast I press.

This code could be changed somewhat, but I just did what I needed to do to get it to work fast.

Download the dll in the attachment
-reg it on your system by typing in run "regsvr32 " & [filename]
-open up a project and add the reference named "MCL Event VB Release _ "

Put in general declarations area:

VB Code:
Private Declare Function MessageBeep Lib "user32" (ByVal wType As Long) As Long
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
 Private WithEvents apiLink As EventVB.APIFunctions
Private WithEvents hook As EventVB.ApiSystemHook
 Private Const vbKeyLWin As Integer = 91
Private Const vbKeyRWin As Integer = 92
Private Const vbKeyLCtrl As Integer = 162
Private Const vbKeyRCtrl As Integer = 163

And then for the events:
VB Code:
Private Sub Form_Load()
  Set apiLink = New EventVB.APIFunctions
  Set hook = apiLink.System.Hooks
   hook.StartHook WH_KEYBOARD_LL, HOOK_GLOBAL
 End Sub
 Private Sub Form_Unload(Cancel As Integer)
   hook.StopHook WH_KEYBOARD_LL
   Set hook = Nothing
   Set apiLink = Nothing
End Sub
 Private Sub hook_KeyDown(ByVal VKey As Long, ByVal scanCode _ 
    As Long, ByVal ExtendedKey As Boolean, ByVal AltDown As _
    Boolean, ByVal Injected As Boolean, Cancel As Boolean)
     'Alt Tab
    If AltDown And VKey = vbKeyTab Then
        Cancel = True
    
    'Alt Esc
    ElseIf AltDown And VKey = vbKeyEscape Then
        Cancel = True
    
    'Ctrl Esc
    ElseIf VKey = vbKeyEscape Then
        'Check if a ctrl key down
        If GetKeyState(vbKeyLCtrl) And &HF0000000 Or _
            GetKeyState(vbKeyRCtrl) And &HF0000000 Then
            Cancel = True
        End If
        
    'Windows key (L/R). Used to "disable" the start menu.  
    'Stops single keydown of a windows key
    ElseIf VKey = vbKeyLWin Or VKey = vbKeyRWin Then
        Cancel = True
    
    'Windows + Any
    'If there is a hotkey combination being pressed,
    'the Windows key will not be stored in VKey,
    'So I check the state of the windows keys.  
    'If they are down, cancel keys
    Else
        If GetKeyState(vbKeyLWin) And &HF0000000 Or _
            GetKeyState(vbKeyRWin) And &HF0000000 Then
            Cancel = True
        End If
    End If
    
    'This is totally optional of course
    If Cancel = True Then 'We have stopped some keystrokes. Beep
        MessageBeep 0
    End If
    
End Sub

And that's it.   Post comments! =p   If you see any errors, post, so we can get them fixed.

Thanks! Enjoy.

----------


## vbNeo

What would you acomplish by disabling native windows shortcuts except disabling the user? I could only see this being used for virus development - in which case it's setting a bad 'example' to have in the codebank... Just my two cents.


Cheers!

----------


## wordracr

Plenty of people have asked, and there are many appropriate uses.

Any app dealing with security of the machine can find things like this helpful.  Do I need to go into details? lol.  win+R = run  anything u want, which can be a problem for the system admin if users can do whatever they want.

People keep saying why would you want to disable ctrl+alt+del.  Well, can you give me a reason for it?  If there is a login program running, why should the user be able to shut it down?  Or maybe there is something i'm missing.

----------


## vbNeo

> _Originally posted by wordracr_ 
> *Plenty of people have asked, and there are many appropriate uses.
> 
> Any app dealing with security of the machine can find things like this helpful.  Do I need to go into details? lol.  win+R = run  anything u want, which can be a problem for the system admin if users can do whatever they want.
> 
> People keep saying why would you want to disable ctrl+alt+del.  Well, can you give me a reason for it?  If there is a login program running, why should the user be able to shut it down?  Or maybe there is something i'm missing.*


I still stand by my opinion - unless you're making a windows replacement shell - forget about using it.

----------


## king_scott_2

> I still stand by my opinion


Why,  I am designing an aplication for teachers at my school at the moment to enable teachers to take control over the students computers.  This helps them to moniter students computer screens and freeze them If there not doing their work (evidence for detension  :Big Grin:  )

Although I do share your opinion about providing opurtunities for hackers good people like myself also use these API's

----------


## vbNeo

> _Originally posted by king_scott_2_ 
> *Why,  I am designing an aplication for teachers at my school at the moment to enable teachers to take control over the students computers.  This helps them to moniter students computer screens and freeze them If there not doing their work (evidence for detension  )
> 
> Although I do share your opinion about providing opurtunities for hackers good people like myself also use these API's*


That's exactly yhe problem, I haven't seen you in person - therefore I really don't know if you are one of the 'good' people. And seriously, people trying to make viruses using VB is just n00b hackers, so I want supply them ****(to spare them from seeing themself fail miserably  :Wink: )

Cheers!

----------


## king_scott_2

Well.  We have to give people resinable doubt.  By the way, If 5 million people want this code surly one of them must want it for a good reason.  Does it not say in the bible if a town of 5000 have sinned buy yet one remaines without sim then you must spare the town.

----------


## vbNeo

> _Originally posted by king_scott_2_ 
> *Well.  We have to give people resinable doubt.  By the way, If 5 million people want this code surly one of them must want it for a good reason.  Does it not say in the bible if a town of 5000 have sinned buy yet one remaines without sim then you must spare the town.*


[Edited by MartinLiss] - And if the other 5 million n00b hackers got it and leaked bad written crap viruses all over the net, just for one 'good' to be happy, that's crazy...

----------


## KenX

I believe this is a good vb Code wordracr!  :Smilie: 

I developed sometime ago some sort of tracking application
for a friend's internet cafe (basically monitors customers start time and informs the user how much time he/she had used). It was doing along well until some smart-aleck used the CTRL-ALT-DEL.  It was partially solved by hiding the process from the taskmanager but this vbCode would have been easier to implement  :Smilie: 

Keep up the good job!

----------


## dan shaw

Good uses for this type of coding.

I use similar code for a computer locking program.
Many users cannot restart their computer while on networks without getting the administrator involved. If they leave their desk for any period of time their data is available to anyone.

Locking programs allow the user to protect their data while doing other tasks. There is no need to turn off the computer or get the administrator involved at all.

My program uses substitution key entry as well to avoid key logger programs from saving and logging the user passwords.

----------


## Neo-dark

okay i dont get this to work,i copyed the code exactly as you said but i dont know what you mean by"MCL Event VB Release _" i tried adding it to the code but it doesnt work :S help please ?:S

----------


## wordracr

It's a component that Merrion_Computing made.  Once that project is compiled, you add the dll it makes.

You'll have to ask [him] for the dll or source - unless someone knows a current link to that project's files.

----------


## VBfang

sorry for such a n00b1sh question but every time i try to compile the program i have this in i get "user type not defined" on these lines:

*Private WithEvents apiLink As EventVB.APIFunctions
Private WithEvents hook As EventVB.ApiSystemHook*

if any one could clear this up i would realy appreceate it, thanks

----------


## Merrion

You need to add the *EventVB.dll* to your project references.
The code for that dll is attached....

----------


## VBfang

thank you verry much, i knew i was doing somthing wrong, but not what it was

----------


## techgnome

> I still stand by my opinion - unless you're making a windows replacement shell - forget about using it.


Eh... I could see another use -- a kiosk application. You know the free-standing kind that sit out in the middle of walkways of malls and such. If I had such a application that I was running unattended like that, especialy with a keyboard, I don't think I'd want the users to be able to get to the Windows menu or anything. That would be quite bad. There are certain applications when it would be appropriate to disable such things. A call center for instance. THey only need to run their call app and nothing else. Hopefully the developer is responsible enough to restore things when the app exits, but other than that, it's a perectly valid use.

Granted it could be used for malicious intent, but so could half the code on VBF. It's up to YOU to make sure you know the source of any code you run. That's why most of us here will not run attached programs, but rather ask for the code instead. Then it can be inspected for malware.

Tg

----------


## erc

Disabling control keys is useful if you want to be able to control the user's session without having to write your own GINA.  The person who wrote about not seeing any other application for this sort of thing except for virus writers is just showing their ignorance of Windows programming.

For example, I have an application that uses this code - it ties the user's login to a USB flash drive.  When the user turns on the machine, he is prompted to insert his USB key.  The udentity is validated, and the user is allowed to proceed.  When the USB drive is removed, the ALT+TAB key sequence is disabled (as well as CTRL+ESC, etc.), so that the user has to re-insert the same USB drive in order for the system to become operational again.

This allows a user to lock the session without having to call LockWorkStation and have to type their password when they return - just re-insert the USB drive and everything is restored to what it was before.  The user can always hit CTRL+ALT+DEL (which can't be disabled easily in XP), but I've disabled all the buttons on that form except for Log Off and Cancel.

----------


## SPiZ

Funny, thats exactly why I am reading this forum.  I am writing a kiosk program for the college computer center I work in.  We have huge problems with the students hacking into the computers.  The kiosk uses XP.  For me this code is perfect.  I seriously doubt that any virus' will come from this thread.  Going by that logic all code should be kept under lock and key?  Doh!

----------


## guyjasper

will this work in windows 98??? i used a similar program that would "eat" low level keys. it works perfectly in xp and 2000 but when i used it in windows 98, after a while, the program hangs up :Frown:

----------


## xXxGuitar

Only the GOOD programmers know how to disable Ctr + Alt + Delete...   and the hackers...   usually....      anywayz...

I am hoping that someone with reasonable knowledge could post the code so that i can use it to learn from. It can be very usefull. As for the hackers, if they did have the code, it would be bad. But they aren't smart enough to distribute their virus. And if they are, then they already know how to disable Ctr + Alt + Delete.

----------


## vbNeo

> Eh... I could see another use -- a kiosk application. You know the free-standing kind that sit out in the middle of walkways of malls and such. If I had such a application that I was running unattended like that, especialy with a keyboard, I don't think I'd want the users to be able to get to the Windows menu or anything. That would be quite bad. There are certain applications when it would be appropriate to disable such things. A call center for instance. THey only need to run their call app and nothing else. Hopefully the developer is responsible enough to restore things when the app exits, but other than that, it's a perectly valid use.
> 
> Granted it could be used for malicious intent, but so could half the code on VBF. It's up to YOU to make sure you know the source of any code you run. That's why most of us here will not run attached programs, but rather ask for the code instead. Then it can be inspected for malware.
> 
> Tg


Touché   :Smilie:

----------


## smilieone2

Disabling the ability to close an application and access the operating system is extremely important on the factory floor if you are using VB for your operator interface to control a machine.  If not, a very expensive piece of equipment becomes a giant paper weight after somebody screws up the operating system whether by accident or on purpose.  Some people might also try to play games on the machine computer which makes the boss angry.

----------


## marcklaser

Hello, first of all I disagree with this becoming a source of viruses and the like. AND I know this thread is almost a year old inactive but, I wanna know if there's something like this that can be used for .NET? I tried upgrading this to .NET but it gives 100+ error messages. Any suggestions? Or can someone give me a precompiled dll?  :Big Grin: 

Thanks.

----------


## basti42

hello there wordcacr!
can i have the DLL coz the link is missing
tnx

----------


## Merrion

See post #14...!

----------


## basti42

hehehe sowee... i didn't read all replies, anyways tnx to you merrion

----------


## chadbh74

Hi, I found the code useful for a security application I've written for a state prison.  I'm a correctional officer there but I'm also a programmer on the side and I do much of their IT work so remember that this is the opinion who deals with programming and criminals alike so I see both sides.  In the end, I think it's of benefit for legitimate programmers to know and understand how to do things like this, even if the bad guys learn it as well.  There are firewalls, virus scanners, and IT policies and procedures in place with most companies that prevent malicious programs from being installed on computers so the risk to others is minimal.

In my case, and many IT professionals out there, it is of great benefit to have the information on how to do things such as this in our arsenal.


Again, I found the information here useful and I implemented it into a computer system that is sometimes in close proximity to incarcerated individuals.  Sure, there are other physical precautions to keep inmates away from the computers, but like I always tell people.. *When your in the business of security, there is no such thing as too much.*

The code shown here helped with the <CTRL><ESC>, <ALT><TAB> keys and such.  I had already figured out to tell Windows to hide the taskbar and desktop icons so all thats visible on the desktop is the program.  Before using this code, however, people could still use the "WINDOWS" keyboard key to bring up the start menu, a definite vulnerability.

I also needed to disable the <CTRL><ALT><DELETE> combination.  I did try the repeated deleting of the TASKMAN file but this didn't prove effective.  The simplest and most effective method I found so far to effectively "disable" this (and aggregate the attempting person to no end haha) is to have a timer that runs approximatley every 100ms and attempts to AppActivate the "Windows Task Manager".  If successful, it issues a SendKeys <ALT><F4> which in effect closes the Task Manager immediately after they open it so it's useless to them.

----------


## _RaJ_

*i dont block........... cltr + alt + del* 

exept that every thing good... i am using XP sp3

----------


## hugo11

I tried using this event... but no way on get the event! Help please!

Private Sub hook_TaskManagerRequested(Cancel As Boolean)
    'Your code
End Sub

How We can disable ctrl alt delete?????

----------


## aztectrev

I have been working on a replacement locking program for windows xp. I created in so it works without admin privedges by just using the windows API. Due to the way the college system works, the program does it job and works perfectly. When you hit the ctrl alt del combo it shows the window security dialog with options to logoff, shutdown etc. It stops task manager on an interval of 500ms which stops users closing the application. The program also has an option to logoff. Say it was being misused you could either restart the computer, or you can hit the logoff button on the program. I still need to iron out the bugs, but it works and it does the required job perfectly, with several customizable options. But to be able to block ctrl alt del without admin privedges, and not using the registry would be the best option, so if there is a way to do it, it would be cool to know. I programmed the entire program in VB6 without custom controls, I only used the windows API.

----------


## carl2k2

I think I used something Similar, for when I was at college, so I could lock out the computer and also stop people from attempting to log off or hijack it  :Smilie: , since the college network was so slow I couldnt be bothered with logging off and waiting 10 mins to log back in, when I could simply lock the system  :Smilie:

----------


## raamaya2

I am sorry for the N00b Question I am about to ask but can anyone tell me step by step how to get this running on my computer? Thanks in Advanced.

----------


## raamaya2

how can i make this work without a form?

----------


## raamaya2

i fugured it out.. this is so cool.. now our agents are unable to use any key combination that i specify... :big yellow:

----------


## vbdrane

Hi All.. 
Anyone could provide me a redirection to the EventVB.dll download site. The URL provided in this thread isn't working anymore.. Or someone could please give a link to the file.. I need this badly...

Thank YOu.

----------


## Destinybg

Sorry for asking a n00bish question... but 




> -Download the dll here
> -reg it on your system by typing in run "regsvr32 " & [filename]


What file do i have to reg ? Also i don't see a dll file... everything is just *cls , *bap and *vbp ...
Thanks in advance  :Smilie:

----------


## rahuls

> i fugured it out.. this is so cool.. now our agents are unable to use any key combination that i specify...


i think you got this to work..
i want this for adding security to my system..can you help me to work out???
Bcoz i am new to vb and i am finding same problem as you while starting... :Sick:

----------


## Chris11

How do I add the file into the resources?  And when I copied the code there were some errors like:

Type 'EventVB.APIFunctions' is not defined.
Name 'WH_KEYBOARD_LL' is not declared.
Name 'HOOK_GLOBAL' is not declared.
Name 'WH_KEYBOARD_LL' is not declared.
Name 'vbKeyTab' is not declared.

Can anyone help?

----------


## spyk3

One use for it is simple.
I develop for a company that places carputers in cop cars along with a house developed "OS"
it still runs over windows, but other than the windows key, there is no way for them to directly open windows
We need a way of disabling the windows key on a keyboard
by what i've seen here, i could incorporate code into my "watchdog" proggy instead of editing it on the registry of every computer installed, which would be extremely benificial since my watchdog proggy is updated over network where as reg edits have to be done manually
I would like to use this code, but the links i've tried to your dll seem dead and the other i found at that site included extreme overkill (no dll's but plenty of other info) but nothing i can find yet allows me to simply disable windows key
disabling it in .net08 for 9x and me was a pain in api but i've yet to find anything for getting it to work for XP (old code not working)
anyway, any advice on how to get it working, or arrows you can through would be nice, maybe was addressed earlier, i'll reread, but again, if this will disable the Winkey in XP, I can think of one great use for it!

----------


## Runesmith

Does anyone with VB6 happen to have a published build of the dll? I can't compile this project on VB.net 2008 as the conversion is a herculean task.

----------


## spyk3

> Does anyone with VB6 happen to have a published build of the dll? I can't compile this project on VB.net 2008 as the conversion is a herculean task.


If I had more time I'd walk you through it, but honestly, since having found pinvoke.net, there really is no need to copy someone else's source for this.  Just go there and look at the listing under "user32" and you'll find every command and function you can dream of with updates as to what does and doesn't work and plenty of examples.

----------


## Runesmith

> If I had more time I'd walk you through it, but honestly, since having found pinvoke.net, there really is no need to copy someone else's source for this.  Just go there and look at the listing under "user32" and you'll find every command and function you can dream of with updates as to what does and doesn't work and plenty of examples.


You mean, you have actually managed to write a global keyboard hook in VB.net? Most of the references I've looked up just tell me to forget it and use eventVB.

----------


## spyk3

Gimmie some time this weekend, and i'll try to clean up a class i made for my company (remove company service references and key server class references) and i'll try to get a post back on here of my class for it.  Although, I should warn, in doing it through dotNet, there extreme limitations and headaches to deal with, but once you have a proper class in place, the speed and difference between a .net reference to a global hook, and C++ reference are unnoticeable. Other sights and such tell you to avoid it, because it is a headache and is not fully implemented ... yet.  Of course, always remember, the point of dotnet, be it vb or c# is to help get more people moving away from "hard coding" and more into simplified "oop".  Thus, spite what critics say, microsoft is constantly on the move, (much documentation can be found on MS MVP sites referencing things of "this thread's" nature) and looking to implement all possible requirements of "hard code" into an easy to read and use compilation.  In other words, never count dotNet out for anything, and expect these types of classes to actually be available as "prewritten" classes in the future.

----------


## Amerigo

What a long thread!
I am using VB 2005 to create a system lock.
I am running Windows 7, but need to app to work on xp as well.
The .dll above downloaded, but I can't get it to do anything or find the Reference to add to my project.

I have managed to disable/hide the desktop, taskbar, & clock, but the code I have doesn't work to hide/disable the Start button. It seems all the code I find is for VB below or above 2005 (if even for VB). Very frustrating.

I also need to find out how to use Bluetooth with or without "InTheHand" to lock/unlock the PC based on the proximity of my phone.

----------


## guyjasper

> What a long thread!
> I am using VB 2005 to create a system lock.
> I am running Windows 7, but need to app to work on xp as well.
> The .dll above downloaded, but I can't get it to do anything or find the Reference to add to my project.
> 
> I have managed to disable/hide the desktop, taskbar, & clock, but the code I have doesn't work to hide/disable the Start button. It seems all the code I find is for VB below or above 2005 (if even for VB). Very frustrating.
> 
> I also need to find out how to use Bluetooth with or without "InTheHand" to lock/unlock the PC based on the proximity of my phone.


were you able to block ALT-TAB / ALT-ESC / ALT-F4? :Smilie:

----------


## Amerigo

No, I wasn't. I used a different code to lock the desktop as such.
Nothing I've tried will lock the keys. I am unable to integrate this .dll into my program either because I don't know how, or it's not compatible with vb2005

----------


## guyjasper

that's my problem too. would you care to share how you worked around locking the desktop? the technique discussed here would no longer work in Windows 7.

----------


## Amerigo

http://www.a1vbcode.com/app-5005.asp
It doesn't hide/disable the start button at all. Change "ShowWindow(CInt(TaskbarWnd), 0)" to " ShowWindow(TaskbarWnd, 0)" to get the taskbar to disappear in Windows 7.

----------


## JohnSmith1

--Hide TaskBar(only)

This will remove the taskbar graphic from the users screen.
It will not be displayed until you show it. 
If the user presses the 
Windows key, it will show the StartMenu,
but this can be fixed, as shown in the next example.

Search msdn or AllApi.net for the API calls used and not defined.

VB Code:
Private Sub ToggleTaskBar()
    Dim TaskBarWnd As Long

    TaskBarWnd = FindWindow("Shell_TrayWnd", vbNullString)
    If IsWindowVisible(TaskBarWnd) Then
        Call ShowWindow(TaskBarWnd, SW_HIDE)
    Else
        Call ShowWindow(TaskBarWnd, SW_SHOW)
    End If
End Sub 


Maybe i am doing something wrong but i could use somehelp. I am not a computer expert but i want some code to hide the taskbar. I put that into a .api file and run it but get a message saying "windows cant find anything to run this with" So my question is do i need something extra to run it, and if so could u name it or even better link it  :Smilie:

----------


## DaleVB

Im n visual basics 2010 and get the following errors:

WH_KEYBOARD_LL
HOOK_GLOBAL
vbKeyTab
vbKeyEscape
vbKeyEscape

Anyone know whats going on?

----------


## Nightwalker83

> Im n visual basics 2010 and get the following errors:
> 
> WH_KEYBOARD_LL
> HOOK_GLOBAL
> vbKeyTab
> vbKeyEscape
> vbKeyEscape
> 
> Anyone know whats going on?


You are using the wrong version! This is VB6 code not .Net code. You can probably find the .Net equivalent of the above code by searching either the VB.Net section or VB.Net code bank here on vbforums.

----------


## thosethingy

hey! is it compatible in visual studion 2008??

----------


## Nightwalker83

> hey! is it compatible in visual studion 2008??


As stated in the post above yours is the VB6 section. You  can use VB6 in .NET although, the best option would be to rewrite the function in VB.NET see post #4 here for more.

----------


## thosethingy

thanks a lot  :Smilie:

----------


## gulliver3

Hi,

In your code for this, you have the variables (or are they constants?):

WH_KEYBOARD_LL, HOOK_GLOBAL

Can someone please explain where they are supposed to be declared and what they're supposed to be declared as?

Thanks,
Gulliver.

----------


## Cire04

> What would you acomplish by disabling native windows shortcuts except disabling the user? I could only see this being used for virus development - in which case it's setting a bad 'example' to have in the codebank... Just my two cents.
> 
> 
> Cheers!


Well for one, I have most definitely a perfect use that is "appropriate" My teacher wants to write a program that will disable the user during a certain time, and renabling after a certain time. Its to prevents the other students from using the computer during cleaning. Of course, I will set a password that me or the teacher can enter if someone has to use it. Are you saying this is inappropriate?

Thank you for providing this tutorial, I've been trying to make the program fail proof.

----------


## Cashogie

Thanks 4 this code. Really helped me control the users at my work place. (( PROGRAMMER SALUTE TO YOU))  :wave:

----------


## silangitnet

Just took out the ctrl button from the keyboard and problem solved  :Smilie:  . Just kidding, programmer need some joke sometimes  :Smilie:   :Smilie:   :Smilie:

----------

