关于共享内存 我写了一个全局映射表,要把它放在共享内存中,,请问高手,该怎么做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我只在linux用过,大概差不多嘛,先创建,然后写数据,sdk的api具体我就不清楚了 #include <windows.h>#pragma argsusedtypedef struct{POINT MouseLoc; // 存放鼠标位置HHOOK NewHook; // 存放新钩子句柄int LoadCount; // DLL装入次数计数HWND g_hWnd;char psw[256];} HOOKSTRUCT;HINSTANCE DllHinst=NULL;HOOKSTRUCT *HookStruct=NULL;HANDLE hFile=NULL;int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved){ DllHinst=hinst; switch(reason) { case DLL_PROCESS_ATTACH: // DLL入口 hFile=CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(HOOKSTRUCT), "HookStruct"); HookStruct=(HOOKSTRUCT *)MapViewOfFile(hFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(HOOKSTRUCT)); HookStruct->LoadCount++; break; case DLL_PROCESS_DETACH: // DLL出口处理 HookStruct->LoadCount--; UnmapViewOfFile(HookStruct); CloseHandle(hFile); break; } return 1;}//---------------------------------------------------------------------------extern "C" __declspec(dllexport)void __stdcall GetMouse(int &mx,int &my,int &js, char **p) // DLL导出函数GetMouse(){ mx=HookStruct->MouseLoc.x; // 送出鼠标位置 my=HookStruct->MouseLoc.y; js=HookStruct->LoadCount; // 送出DLL装入次数 *p=HookStruct->psw; // 送出密码}LRESULT CALLBACK MouseHook(int nCode, WPARAM wParam,LPARAM lParam){ if (nCode==HC_ACTION) { MOUSEHOOKSTRUCT *l=(MOUSEHOOKSTRUCT *)lParam; HookStruct->MouseLoc=l->pt; //送鼠标位置 SendMessage(WindowFromPoint(l->pt),WM_GETTEXT,256,(LPARAM)(LPCTSTR)HookStruct->psw); } return(CallNextHookEx(HookStruct->NewHook,nCode,wParam,lParam));}extern "C" __declspec(dllexport)void __stdcall EnableHook() // 导出函数EnableHook(){ if (HookStruct->NewHook==NULL) // 安装新钩子 HookStruct->NewHook=SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseHook, DllHinst,0);}extern "C" __declspec(dllexport)void __stdcall DisableHook() // 导出函数DisableHook(){ if (HookStruct->NewHook!=NULL) { UnhookWindowsHookEx(HookStruct->NewHook); HookStruct->NewHook=NULL; // 卸掉新钩子 }}其中的HookStruct是在共享区 请教各位关于vc+ado的问题,在线等 请问对于MFC的程序退出时都经历了哪些函数? 属性页 请教媒体处理高手一个问题,下载的wmv文件播放的时候需要license ShellExecute 返回值的问题!高手进! 想学VC++,没基础,没人帮助,该怎么学呀? 一个关于子窗体的问题~~~~~ 请问高手如何才能修改d3d9.dll的Direct3DCreate9接口 主 题: 封装一个很牛的ADO类,支持多线程,己经打包成DLL。 静态控件的颜色问题 关于CListCtrl的一点问题(急急急急急) 我想学好Vc++, 请高手指点
typedef struct
{
POINT MouseLoc; // 存放鼠标位置
HHOOK NewHook; // 存放新钩子句柄
int LoadCount; // DLL装入次数计数
HWND g_hWnd;
char psw[256];
} HOOKSTRUCT;HINSTANCE DllHinst=NULL;
HOOKSTRUCT *HookStruct=NULL;
HANDLE hFile=NULL;int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
DllHinst=hinst;
switch(reason)
{
case DLL_PROCESS_ATTACH: // DLL入口
hFile=CreateFileMapping(INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
sizeof(HOOKSTRUCT),
"HookStruct");
HookStruct=(HOOKSTRUCT *)MapViewOfFile(hFile,
FILE_MAP_ALL_ACCESS,
0,
0,
sizeof(HOOKSTRUCT));
HookStruct->LoadCount++;
break;
case DLL_PROCESS_DETACH: // DLL出口处理
HookStruct->LoadCount--;
UnmapViewOfFile(HookStruct);
CloseHandle(hFile); break;
}
return 1;
}
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport)
void __stdcall GetMouse(int &mx,int &my,int &js, char **p) // DLL导出函数GetMouse()
{
mx=HookStruct->MouseLoc.x; // 送出鼠标位置
my=HookStruct->MouseLoc.y;
js=HookStruct->LoadCount; // 送出DLL装入次数
*p=HookStruct->psw; // 送出密码
}
LRESULT CALLBACK MouseHook(int nCode,
WPARAM wParam,LPARAM lParam)
{
if (nCode==HC_ACTION)
{
MOUSEHOOKSTRUCT *l=(MOUSEHOOKSTRUCT *)lParam;
HookStruct->MouseLoc=l->pt; //送鼠标位置
SendMessage(WindowFromPoint(l->pt),WM_GETTEXT,256,(LPARAM)(LPCTSTR)HookStruct->psw);
}
return(CallNextHookEx(HookStruct->NewHook,nCode,wParam,lParam));
}
extern "C" __declspec(dllexport)
void __stdcall EnableHook() // 导出函数EnableHook()
{
if (HookStruct->NewHook==NULL) // 安装新钩子
HookStruct->NewHook=SetWindowsHookEx(WH_MOUSE,
(HOOKPROC)MouseHook,
DllHinst,0);
}
extern "C" __declspec(dllexport)
void __stdcall DisableHook() // 导出函数DisableHook()
{
if (HookStruct->NewHook!=NULL)
{
UnhookWindowsHookEx(HookStruct->NewHook);
HookStruct->NewHook=NULL; // 卸掉新钩子
}
}其中的HookStruct是在共享区