首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-02-15 
求助:星号密码查看器不能在64位机器使用问题写了个星号查看器,发现只能在XP系统运行,不能在64为win7正常运

求助:星号密码查看器不能在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软件

热点排行