c++编程的一个问题,这是一个星号密码查看器,我看书上的代码打的,为什么没有效果呢,即使是对它自己 30
望高手帮帮忙,刚学窗口编程没多久,对钩子之类的了解不多,还请知道原因的同志说说为什么它没有效果#include"resource.h"#include<Windows.h...
望高手帮帮忙,刚学窗口编程没多久,对钩子之类的了解不多,还请知道原因的同志说说为什么它没有效果
#include "resource.h"
#include <Windows.h>
//全局钩子句柄
HHOOK hHook = NULL;
//函数声明部分
//鼠标钩子过程
LRESULT CALLBACK HookProc(int code,WPARAM wparam,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 * event = (EVENTMSG *)lparam;
//是否为密码左键
if(event ->message==WM_LBUTTONDOWN)
{
//是否为密码框
if(nStyle&ES_PASSWORD)
{
PostMessage(hwnd,EM_SETPASSWORDCHAR,0,0);
}
}
return CallNextHookEx(hHook,code,wparam,lparam);
}
运行后没效果是指我的程序编译通过了,也执行了,但是没办法查看星号密码, 展开
#include "resource.h"
#include <Windows.h>
//全局钩子句柄
HHOOK hHook = NULL;
//函数声明部分
//鼠标钩子过程
LRESULT CALLBACK HookProc(int code,WPARAM wparam,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 * event = (EVENTMSG *)lparam;
//是否为密码左键
if(event ->message==WM_LBUTTONDOWN)
{
//是否为密码框
if(nStyle&ES_PASSWORD)
{
PostMessage(hwnd,EM_SETPASSWORDCHAR,0,0);
}
}
return CallNextHookEx(hHook,code,wparam,lparam);
}
运行后没效果是指我的程序编译通过了,也执行了,但是没办法查看星号密码, 展开
3个回答
展开全部
应该是你的控件的名称是 IDCCOK IDCCANCEL,而程序里面的是IDOK IDCANCEL,你试下看是不是这原因,这个程序我碰巧弄过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有效果指什么 是无法编译 还是程序运行后没有用效果? 运行后点OK, 把鼠标移到密码区, 左键点星号。 请把问题详细描述下
追问
就是执行后出现窗口,我在密码框中输入密码,然后点查看,又点密码星号,但是密码没有显示出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询