GetClipboardData(IN UINT uFormat) 获取剪切板内容失败
需要在文档粘贴数据之时根据当前程序的类型控制粘的内容,但是现在在返回剪切板内容时出现异常上,无法返回内容,望高手指点。。
代码如下:
//#include "detours.h"
#include "NtHookEngine.h"
HANDLE WINAPI Real_GetClipboardData(UINT uFormat);
HANDLE (WINAPI *pOriGetClipboardData)(UINT uFormat);
char* UnsignedShortToCharp(unsigned short *strU)
{
UINT nStrULength=WideCharToMultiByte(CP_ACP,0,(LPCWSTR)strU,-1,NULL,NULL,NULL,NULL);
LPSTR lpStr;
lpStr=(LPSTR) malloc(nStrULength);
WideCharToMultiByte(CP_ACP,0,(LPCWSTR)strU,-1,lpStr,nStrULength,NULL,NULL);
return lpStr;
}
HANDLE __stdcall Real_GetClipboardData(IN UINT uFormat)
{
int result = GetState(0);
if(result == 20)//如果粘贴目标程序需要加密{
return NULL;
}
HANDLE hMem = pOriGetClipboardData(uFormat); //执行至此程序死机
return (hMem);
}
BOOL ProcessAttach()
{
//hook剪切板
HookFunction((ULONG_PTR) GetProcAddress(LoadLibrary(_T("USER32.dll")),
"GetClipboardData"),
(ULONG_PTR) &Real_GetClipboardData);
pOriGetClipboardData = (HANDLE (WINAPI *)(UINT uFormat))
GetOriginalFunction((ULONG_PTR) Real_GetClipboardData);//保存原始剪切板
return TRUE;
}
BOOL ProcessDetach()
{
if (GetOriginalFunction == NULL) {
return(FALSE);
}
UnhookFunction((ULONG_PTR) GetProcAddress(LoadLibrary(_T("USER32.dll")),
"GetClipboardData"));
return TRUE;
}
[解决办法]
是不是要先 OpenClipboard 一下
[解决办法]
感觉是在hookapi
[解决办法]