16,472
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "wgdll.h"
#include "main.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BEGIN_MESSAGE_MAP(CWgdllApp, CWinApp)
//{{AFX_MSG_MAP(CWgdllApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWgdllApp construction
CWgdllApp::CWgdllApp()
{
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CWgdllApp object
CWgdllApp theApp;
Main *pMain;
HHOOK hhook;
extern "C" __declspec(dllexport) BOOL WINAPI SetHook(DWORD tid)
{
if (hhook == NULL)
{
::SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, theApp.m_hInstance, tid);
if (hhook != NULL)
return TRUE;
}
return FALSE;
}
extern "C" __declspec(dllexport) BOOL WINAPI UnHook()
{
return ::UnhookWindowsHookEx(hhook);
}
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL bKeyUp = lParam & (1 << 31);
if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION)
{
if (pMain == NULL)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
pMain = new Main(0);
pMain->Create(IDD_MAIN);
pMain->SetParent(0);
}
pMain->ShowWindow(pMain->IsWindowVisible()?SW_HIDE:SW_SHOW);
}
return ::CallNextHookEx(hhook, nCode, wParam ,lParam);
}
int CWgdllApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
delete pMain;
return CWinApp::ExitInstance();
}
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL bKeyUp = lParam & (1 << 31);
if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION)
{
if (pMain == NULL)
{
ReleaseCapture();
AFX_MANAGE_STATE(AfxGetStaticModuleState());
pMain = new Main(0);
pMain->Create(IDD_MAIN);
pMain->SetParent(0);
pMain->ShowWindow(SW_SHOW);
}
else
pMain->ShowWindow(pMain->IsWindowVisible()?SW_HIDE:SW_SHOW);
}
return ::CallNextHookEx(hhook, nCode, wParam ,lParam);
}
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL bKeyUp = lParam & (1 << 31);
if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION)
{
if (pMain == NULL)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
pMain = new Main(0);
pMain->Create(IDD_MAIN);
}
pMain->ShowWindow(SW_SHOW);
pMain->SetCapture();
}
return ::CallNextHookEx(hhook, nCode, wParam ,lParam);
}