GetWindowModuleFileName出错,返回空串

xmyjd 2013-06-29 07:15:02
这是一个在DLL里的SHELL HOOK,监视2个消息(HSHELL_WINDOWACTIVATED和HSHELL_LANGUAGE),得到新窗口的程序路径和新窗口输入法的名字.
但是temp和lang的新值都完全没有改变,仍然是temp和lang.

LRESULT CALLBACK shellhookproc(int nCode, WPARAM wParam, LPARAM lParam)
{
wfstream ofile;
LPTSTR temp=_T("temp");
LPTSTR lang=_T("lang");
DWORD proid;
switch (nCode)
{
case HSHELL_WINDOWACTIVATED:
ofile.open("d:/out.txt",ios::app);
GetWindowModuleFileName(NULL,temp,255);
proid = GetWindowThreadProcessId(hWnd,&proid);
ImmGetDescription(GetKeyboardLayout(proid),lang,255);
ofile<<"HSHELL_WINDOWACTIVATED\t"<<temp<<"\t"<<lang<<endl;
ofile.flush();
ofile.close();
break;
case HSHELL_LANGUAGE:
ofile.open("d:/out.txt",ios::app);
GetWindowModuleFileName(NULL,temp,255);
proid = GetWindowThreadProcessId(hWnd,&proid);
ImmGetDescription(GetKeyboardLayout(proid),lang,255);
ofile<<"HSHELL_LANGUAGE\t"<<temp<<"\t"<<lang<<endl;
ofile.flush();
ofile.close();
break;
default:
break;
}
return CallNextHookEx(shellhook, nCode, wParam, lParam);
}
...全文
215 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yofoo 2013-07-15
  • 打赏
  • 举报
回复
LPTSTR temp=_T("temp"); GetWindowModuleFileName(NULL,temp,255); windows或C下这样不行把, 你的是ios?, ios不懂
贪玩的老鼠 2013-07-01
  • 打赏
  • 举报
回复
case HSHELL_WINDOWACTIVATED: HWND h=(HWND)wParam; ofile.open("d:/out.txt",ios::app); GetWindowModuleFileName(h,temp,255);
xmyjd 2013-06-30
  • 打赏
  • 举报
回复
自己顶自己顶自己顶自己顶

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧