钩子问题,请帮我看看这块代码。(100分)

axb99 axb99 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是我写的钩子程序,目的是让一些特定的程序不能运行。我是看了www.ccrun.com/上的一篇文章做出来的。(再次谢谢那位无私的高手!!!:)。现有一个问题,程序运行后可以起作用,能达到目的,但是,一旦按一次Ctrl+Alt+del,不点结束任务,直接取消,或结束了别的程序,我的钩子程序就没作用了。搞不明白这是什么回事,已经试了多种方法,请各位帮忙。
下面的代码我是放在.dll里面的。

//----------
extern "C" __declspec(dllexport) void sethook();
extern "C" __declspec(dllexport) void quithook();
LRESULT CALLBACK JournalLogProc(int iCode, WPARAM wParam, LPARAM lParam);
//static LRESULT CALLBACK JournalLogProc(int iCode,WPARAM wParam,LPARAM lParam);
//钩子变量
HHOOK g_hLogHook=NULL;
//记录上一次得到焦点的窗口句柄
//HWND g_hLastFocus=NULL;

//---------------------------------------
LRESULT CALLBACK JournalLogProc(int iCode,WPARAM wParam,LPARAM lParam)
{
if(iCode<0)
return CallNextHookEx(g_hLogHook,iCode,wParam,lParam);
//EVENTMSG* pEvt=(EVENTMSG*)lParam;
if(iCode==HC_ACTION)
{ int i;
HWND hFocus;//保存当前活动窗口句柄
char szTitle[256];//当前窗口名称
char szWinClass[256];
char szTime[128];//当前的日期和时间
char ch;
char str[10];
AnsiString sClass="CabinetWClass";
hFocus=GetActiveWindow();
GetWindowText(hFocus,szTitle,256);
GetClassName(hFocus,szWinClass,256);
TBinFile f;
f.FileName = TRelPath().Extension("cfg"); //与 .exe 同名的 .cfg 文件
f.OpenMode = TBinFile::omRead; //准备读文件

if(f.Exists) //如果文件存在
{
try
{
f.Active = true; //打开文件
char aLine[2048];
while(fgets(aLine,2000,f)) //读一行文本 (标准 C 函数)
{
if(strnicmp(aLine,"CLASS=",6)==0) //用类名识别
{
TBinFileFuncs::DeleteSpaces(aLine+6,1,1); //去除空格
if(stricmp(aLine+6,szWinClass)==0)
{
PostMessage(hFocus, WM_CLOSE, 0, 0); //关闭程序
// return false;
}
}
else if(strnicmp(aLine,"CAPTION=",8)==0) //用标题识别
{
TBinFileFuncs::DeleteSpaces(aLine+8,1,1); //去除空格

if(stricmp(aLine+8,szTitle)==0)
{
PostMessage(hFocus, WM_CLOSE, 0, 0); //关闭程序
// return false;
}
}

}
}
catch(Exception &e)
{
//忽略错误提示,
}

}
}
return CallNextHookEx(g_hLogHook,iCode,wParam,lParam);
}
//--------------------
extern "C" __declspec(dllexport) void sethook()
{
if(g_hLogHook==NULL)
//安装日志钩子
g_hLogHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)JournalLogProc,HInstance,0);

}
...全文

相关推荐

全局键盘钩子

全局键盘钩子样例,找了好多资源。只有这个好用,方便大家,也方便自己记录

aven001

解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题

主要介绍了解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38690508

C#键盘钩子

详细描述了使用C#实现键盘钩子,好好学学吧

arist199001

vue tab切换,解决echartst图表宽度只有100px的问题

解决思路:直接将图表的宽高写死,根据实际代码进行改写,提供一个思路 1.将图表放进一个div里面 2.定义一个方法,并在mounted视图更新的时候执行 [removed] export default { mounted() { this.setMyChart(); }, methods: { setMyChart() { // jq写法 // 获取父元素 var echarts =

weixin_38655484

uCOS-II操作系统MC9S12XEP100移植版本(个人优化版)

此为本人基于官方移植版本修改的基于MC9S12XEP100的uCOS-II操作系统软件框架,框架使用单CPU(即没有使用XGATE)、Banked地址模型、一个无浮点数一个32位浮点数,适用大部分需求。主要是里头对官方移植版本的代码进行了精简,优化了文件布局,删除了原版本中大量无用的附加功能的代码。另外还修复了V2.86版本存在的bug。个人使用了几个月没有发现问题,欢迎大家基于我这个版本进行嵌入式软件开发。

夏日白云
评论 8
收藏 已收藏
分享
返回顶部