|
Nope, didn't work. Still same errors. In settings, under link, this is what it says in the project options:
/nologo /subsystem:windows /incremental:no /pdb:"Release/123.pdb" /machine:I386 /out:"Release/123.exe"
This should be good, right? Thanks
|
|
|
|
|
Nevermind. I installed the wrong update. Apparently, the 60 meg one is the one I needed. DOne and Done. Thanks
|
|
|
|
|
|
I have read the API on how to use the SetWindowsHookEx() function and I was able to interrupt other keyboard keypresses in Windows 98 but I still can't trap Alt-Tab. Thank you.
|
|
|
|
|
To trap Alt+Tab you have to catch the message before the OS process it. A simple way to achieve it is to register Alt+Tab as a hotkey:
<br />
BOOL CYourDlg::OnInitDialog()<br />
{<br />
...<br />
m_nHotKeyID = 100;
BOOL m_isKeyRegistered = RegisterHotKey(GetSafeHwnd(), m_nHotKeyID, MOD_ALT, VK_TAB);<br />
...<br />
}<br />
To process the hotkey PreTranslate WM_HOTKEY:
<br />
BOOL CYourDlg::PreTranslateMessage(MSG* pMsg) <br />
{<br />
...<br />
if((pMsg->message == WM_HOTKEY) &&<br />
(pMsg->wParam == m_nHotKeyID))<br />
MessageBox("Alt+Tab trapped");<br />
.... <br />
}<br />
Remember to unregister it before existing the app:
<br />
BOOL CYourDlg::OnDestroy()<br />
{<br />
...<br />
UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID);<br />
...<br />
}<br />
Read Lock Windows Desktop[^], there are some references that shows it.
I hope it helps,
Marc Soleda.
... she said you are the perfect stranger she said baby let's keep it like this... Tunnel of Love, Dire Straits.
|
|
|
|
|
compiler: VC++ 6.0, SP 6
I subclassed CComboBox into CMyComboBox, then setup up event handlers for several of the reflected events -- one being CBN_CLOSEUP event. I have an object of type CMyComboBox in an MFC program, which also needs to catch the CBN_CLOSEUP event. I used ClassWizard to create all event handlers.
Problem: The event handler in CMyComboBox works ok, but the handler in the application program never gets called. I tried having the event handler in CMyBomcoBox post a message to parent, but parent never got it.
Is there a way around this problem?
|
|
|
|
|
Try using ON_xxx_REFLECT_EX inplace of ON_xxx_REFLECT. The _EX macro returns a BOOL, which determines whether the parent receives the message.
There's a blurb about it here:
http://www.microsoft.com/msj/1198/c/c1198.aspx
(I found you have to return FALSE, not TRUE as the article states)
Painted on the side of a dog trainer's van: SIT HAPPENS
|
|
|
|
|
Perfect -- thank you so very much!
|
|
|
|
|
I need a code in c++ to unlock user accounts in Windows NT/2000.
Or some similar solution.
Thank you very much!
|
|
|
|
|
But I don't WANT 'guest' unlocked on my computer ...
|
|
|
|
|
You'd have to login as the Admin, then you would have to use the tools built into the os
If you can't login as the Admin then you can get around it but don't ask me
|
|
|
|
|
I do can login in as Admin.
What I want is a code of an application in C++ (or Visual C++) that unlocks users accounts of a dominion in WinNT4 and Win2000.
Thanks
|
|
|
|
|
|
As you know, the windows standard for select all is Control-A.
There is a program I am workin at creating a 3rd party app for that uses Ctrl-A for another purpose. I am wanting to, within my app, remap ctrl-a back to the standard, and assign a new sequence to the old task it once did.
I am creating a DLL hook in my app and can capture single keyboard events, but I am having trouble determining how to capture and remap ctrl-A for this application.
In it's simplest form, the following is what I am trying to achieve. If (Control & A), display messagebox!
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(<br />
int nCode, <br />
WPARAM wParam, <br />
LPARAM lParam)<br />
{<br />
if (wParam==0x041 & VK_CONTROL) <br />
MessageBox(0, Success!, "Message", MB_OK);<br />
<br />
LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam ); <br />
return RetVal;<br />
}
Thanks for any assistance!
Jeff
|
|
|
|
|
Instead, try catching all the key events related to the 'A' character and use GetAsyncKeyState to see if the CTRL is down at the same time.
|
|
|
|
|
Thanks!
I thought I had tried that, but must have messed something up.
Here it is again altered to the current state, and working....
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(<br />
int nCode, <br />
WPARAM wParam, <br />
LPARAM lParam)<br />
{<br />
if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode)) <br />
{ <br />
if (wParam==0x041)
{<br />
BOOL bControlKeyDown = FALSE;<br />
bControlKeyDown=GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);<br />
if (bControlKeyDown != 0)<br />
MessageBox(0, "Success!, "Message", MB_OK);<br />
}<br />
}<br />
<br />
LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam ); <br />
return RetVal;<br />
}
|
|
|
|
|
You could probably safely reduce some of your logic from this:
BOOL bControlKeyDown = FALSE;
bControlKeyDown=GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);
if (bControlKeyDown != 0)
To this:
if( GetAsyncKeyState(VK_CONTROL) & 0x8000 )
At least that is how I check, and not in about 6 years has there ever been a problem
|
|
|
|
|
As a fairly new coder, I appriciate your insight! Thank you very much!
|
|
|
|
|
To continue on this, How do I now terminate this task, so that I can send a new task in it's place?
|
|
|
|
|
Blake Miller wrote:
if( GetAsyncKeyState(VK_CONTROL) & 0x8000 )
Can you tell me where I can find a listing of these masks?
Even the 0x40000000? All I can determin is that 0x8000 is for the control keys, and that 0x40000000 limits me to the key up.
Obviously, I need to change this to key down, as the task is complete before the message box displays curently. Removing this mask helped me determine this with a return value of -1...
Last question...
What reference material would you recommend reading for this type of hook information?
Jeff
|
|
|
|
|
You need to read the MSDN for each function VERY carefully.
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState. ... If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.
KeyboardProc Function
lParam
[in] Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag. For more information about the lParam parameter, see Keystroke Message Flags. This parameter can be one or more of the following values.
0-15
Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user's holding down the key.
16-23
Specifies the scan code. The value depends on the OEM.
24
Specifies whether the key is an extended key, such as a function key or a key on the numeric keypad. The value is 1 if the key is an extended key; otherwise, it is 0.
25-28
Reserved.
29
Specifies the context code. The value is 1 if the ALT key is down; otherwise, it is 0.
30
Specifies the previous key state. The value is 1 if the key is down before the message is sent; it is 0 if the key is up.
31
Specifies the transition state. The value is 0 if the key is being pressed and 1 if it is being released.
0x40000000 = 0100 0000 0000 0000 0000 0000 0000 0000 in binary.
Which means you are testing if bit 30 is set.
0x8000 = 1000 0000 0000 0000 in binary.
Which means you are testing if bit 15 is set.
|
|
|
|
|
I want to use NtCreateFile in my application, but I cant get a simple program calling NtCreateFile to compile with Visual Studio. I installed DDK but dont know how to get started with a simple example of using NtCreateFile. Can someone help or give pointers to introductory tutorials on this topic? Thanks.
|
|
|
|
|
NtCreateFile is an undocumented API and should not be required for standard WIN32 Applications which can simply use "CreateFile" as they are the same API.
Now, if you are writing a driver the API that should be documented in the DDK header files is "ZwCreateFile". This encapsulates the overhead of creating a IRP_MJ_CREATE IRP and handling it for ease of use with your driver. Of course the down fall of using such an API is that it is not flexible and can only be used at IRQL PASSIVE.
ZwCreateFile[^]
8bc7c0ec02c0e404c0cc0680f7018827ebee
|
|
|
|
|
Suppose a program is doing some processing and the CPU shoots up to 99% (by design and not by error). How do I make it use only 50% of CPU? I have seen a program somewhere that always shows 50% in the task manager. Any idea how to achieve this behaviour? Thanks.
|
|
|
|
|
1. You can reduce the priority of your application or of specific worker threads.
The SetThreadPriority function sets the priority value for the specified thread. This value, together with the priority class of the thread's process, determines the thread's base priority level.
Why not just let the OS figure it out? Although I realize that a ill-behaved foreground application can really seem to take over your computer!
|
|
|
|