• C

Trapping Ctrl-Alt-Delete...Possible?

Is there anyway to trap Ctrl-Alt-Del?
GreatOneAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

galkinCommented:
You must install system keyboard hook with SetWindowsHookEx with WH_KEYBOARD flag

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
GreatOneAuthor Commented:
That's great. But how exactly would I do that? can you give me the code to do it?

0
galkinCommented:
HHOOK hHook;

LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
//check if these keys are pressed with GetKeyState and do //whatever you want

// otherwise call default processing
return ::CallNextHookEx(hHook, code, wParam, lParam);
}
 
hHook = ::SetWindowHookEx(WH_KEYBOARD, KeyboardProc, g_hInstance, 0);

0
Get Cisco Certified in IT Security

There’s a high demand for IT security experts and network administrators who can safeguard the data that individuals, corporations, and governments rely on every day. Pursue your B.S. in Network Operations and Security and gain the credentials you need for this high-growth field.

GreatOneAuthor Commented:
Code looks good. two more quick questions. First, how would i call it? second, is this written in C++? only because I see ::'s everywhere and that reminds me of c++.
0
galkinCommented:
This is pure C code. Remove :: from the code. I don't undestand your first question. When you need to trap ctrl+alt+Del call SetWindowHookEx. from this moment your KeyboardProc which is global function wil be called to any keyboard event.
0
GreatOneAuthor Commented:
So if I want it to trap ctrl-alt-del, all i would have to do is paste that code into my code, and then in main put:
HHook hHook;
hHook =SetWindowHookEx(WH_KEYBOARD, KeyboardProc, g_hInstance, 0);

is that correct? do i need to include any special library? and am i correct in assuming nothing will happen when ctrl-alt-del is pressed and that the program will continue running?
0
galkinCommented:
Yes you can cut and paste my code application. You also need to add a little bit piece of code into KeyboardProc to designate when user has pressed these tree keys. As I mentioned use GetKeyState. Also do not remember unhook your hook when you are done with hooking. Use UnhookWindowsHookEx passing hook handle.
Also last point. Hook procedure(KeyboardProc) must be located into DLL.

0
GreatOneAuthor Commented:
Last little question: how do i get Hook procedure(KeyboardProc) into a DLL? And how do i unhook? what parameter should UnhookWindowsHookEx get? (could you show me an example)
I really appreciate all your help. You will get your points real soon.
0
galkinCommented:
Create DLL and place KeyboardProc there. Use LoadLibrary to load DLL and GetProcAddress to get pointer to KeyboardProc hook procedure. When DLL is unloaded call UnhookWindowsHookEx passing hHook you get from call to SetwindowsHookEx. For more information see http://www.codeguru.com/misc/hooks.shtml and http://www.codeguru.com/samples/mfc_hooks.shtml
0
GreatOneAuthor Commented:
Thanks alot. you have been more than helpful. Really appreciate it. Here are your points. You earned it.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.