主题:【求助】MFC DLL中的窗体消息传递问题
编写的是个带有窗体的DLL,功能是:按下C键之后,弹出一个可以输入密码的对话框,如果输入密码正确,则用户可以使用C键,否则就屏蔽C键。
这是键盘钩子的函数简单代码:
BEGIN_MESSAGE_MAP(CFileHookApp, CWinApp)
//{{AFX_MSG_MAP(CFileHookApp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFileHookApp construction
CFileHookApp::CFileHookApp()
{
}
CFileHookApp theApp;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wp, LPARAM lp)
{
if (nCode==HC_ACTION) {
if (wp=='C'){ //CTRL+C
AFX_MANAGE_STATE(AfxGetStaticModuleState());
SecretDlg secretDlg;//简单的Dlg,上面有密码输入编辑框以及确定按钮
secretDlg.DoModal();
if (判断输入的密码正确)
{
return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
}
else
{
return 1;
}
}
}
return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
}
DLLEXPORT BOOL DisableTaskKeys(HWND hwnd,BOOL bDisable)
{
h_wnd=hwnd;
if (bDisable) {
if (!g_hHookKbdLL) {
g_hHookKbdLL = SetWindowsHookEx(WH_KEYBOARD,
KeyboardProc,theApp.m_hInstance, 0);
}
} else if (g_hHookKbdLL != NULL) {
UnhookWindowsHookEx(g_hHookKbdLL);
g_hHookKbdLL = NULL;
}
return g_hHookKbdLL != NULL;
}
现在的问题是:当可以输入密码的对话框弹出来以后输入密码,到该窗口关闭,如果将输入的数据(或者说返回一个true or false)传送到上面这个程序中的if()中间去呢。
还有个问题,如果我要屏蔽Ctrl+C键,怎么写呢?(如果不是带有窗体的dll,我可以解决。)
这是键盘钩子的函数简单代码:
BEGIN_MESSAGE_MAP(CFileHookApp, CWinApp)
//{{AFX_MSG_MAP(CFileHookApp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFileHookApp construction
CFileHookApp::CFileHookApp()
{
}
CFileHookApp theApp;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wp, LPARAM lp)
{
if (nCode==HC_ACTION) {
if (wp=='C'){ //CTRL+C
AFX_MANAGE_STATE(AfxGetStaticModuleState());
SecretDlg secretDlg;//简单的Dlg,上面有密码输入编辑框以及确定按钮
secretDlg.DoModal();
if (判断输入的密码正确)
{
return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
}
else
{
return 1;
}
}
}
return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
}
DLLEXPORT BOOL DisableTaskKeys(HWND hwnd,BOOL bDisable)
{
h_wnd=hwnd;
if (bDisable) {
if (!g_hHookKbdLL) {
g_hHookKbdLL = SetWindowsHookEx(WH_KEYBOARD,
KeyboardProc,theApp.m_hInstance, 0);
}
} else if (g_hHookKbdLL != NULL) {
UnhookWindowsHookEx(g_hHookKbdLL);
g_hHookKbdLL = NULL;
}
return g_hHookKbdLL != NULL;
}
现在的问题是:当可以输入密码的对话框弹出来以后输入密码,到该窗口关闭,如果将输入的数据(或者说返回一个true or false)传送到上面这个程序中的if()中间去呢。
还有个问题,如果我要屏蔽Ctrl+C键,怎么写呢?(如果不是带有窗体的dll,我可以解决。)