读书人

星号密码查看器不能在64位机器使用有关

发布时间: 2013-02-15 15:46:56 作者: rapoo

求助:星号密码查看器不能在64位机器使用问题

写了个星号查看器,发现只能在XP系统运行,不能在64为win7正常运行,没有测试32位的win7。
感觉是因为win32的API导致的,但是不知道该怎么去修改。求大牛帮助。
代码贴下:

#include "resource.h"
#include <Windows.h>
//全局钩子句柄
HHOOK hHook = NULL;
////////////////////////////
//函数声明部分
///////////////////////////
//鼠标钩子过程
LRESULT CALLBACK HookProc(int code, WPARAM wpara, LPARAM lparam);
//窗口过程
int CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wparam, LPARAM lparam);
//主函数
int APIENTRY WinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd)
{
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DlgProc);
}
//窗口过程处理函数
int CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wparam, LPARAM lparam)
{
switch(uMsg)
{
case WM_COMMAND:
{
switch(LOWORD(wparam))
{
case IDCANCEL:
{
UnhookWindowsHookEx(hHook);
EndDialog(hDlg, wparam);
}
break;
case IDOK:
{
hHook = SetWindowsHookEx(WH_JOURNALRECORD, HookProc, GetModuleHandle(NULL),0);
}
break;


}
}
break;
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
}
return 0;
}
//鼠标钩子过程
LRESULT CALLBACK HookProc(int code, WPARAM wparam, LPARAM lparam)
{
HWND hwnd;
POINT point;
GetCursorPos(&point); //获得鼠标位置
hwnd = WindowFromPoint(point); //得到鼠标的窗口句柄
long nStyle = GetWindowLong(hwnd, GWL_STYLE); //得到窗口风格
EVENTMSG *even = (EVENTMSG *)lparam;
if(even->message == WM_LBUTTONDOWN) //是否为密码左键
{
if(nStyle & ES_PASSWORD) //是否为密码框
PostMessage(hwnd, EM_SETPASSWORDCHAR, 0, 0);
}
return CallNextHookEx(hHook, code, wparam, lparam);
}
附程序:http://dl.vmall.com/c0m9fubanj win32 x64 api
[解决办法]
推荐使用Spy4Win软件

读书人网 >C++

热点推荐