如何禁止一个程序的运行

linfei2707 2002-05-27 09:41:46
例如:asdf.exe 不知道全路径
如何禁止它运行
...全文
271 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
linfei2707 2002-05-30
  • 打赏
  • 举报
回复
谢谢各位!谢谢kingzai() 问题已经解决了,应该把m_hInstance设为共享就可以了,现在开始散分了
kingzai 2002-05-29
  • 打赏
  • 举报
回复
你把DLL挂接到这个应用程序中进行调试,就知道怎么回事了。
linfei2707 2002-05-29
  • 打赏
  • 举报
回复
我也是这么写的,怎么会钩不到呢?你给我看看吧,thx.

LRESULT __declspec(dllexport)__stdcall CALLBACK CallWndProc(int nCode,WPARAM wParam,LPARAM lParam)
{
PCWPSTRUCT pcw=(PCWPSTRUCT) lParam;

if(nCode>=0 && pcw && pcw->hwnd)
{
if(pcw->message==WM_CREATE)
{
CString strApplication;
CString strCommand=GetCommandLine();
int nnum=strCommand.ReverseFind('\\');
if(nnum!=-1)
{
strApplication=strCommand.Mid(nnum+1);
strApplication.TrimRight();
strApplication.TrimRight('\\');
}
if(strApplication==_T("asdf.exe ") )
return 0;
}
}
return CallNextHookEx(g_hHook,nCode,wParam,lParam);;
}

void __declspec(dllexport)__stdcall StartHook()
{
g_hHook = ::SetWindowsHookEx(WH_CALLWNDPROC,
(HOOKPROC)CallWndProc, g_hInstance, NULL );

}

void __declspec(dllexport)__stdcall StopHook()
{
if( g_hHook )
UnhookWindowsHookEx(g_hHook);
g_hHook = NULL;
}
kingzai 2002-05-29
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc.asp?id=271
linfei2707 2002-05-29
  • 打赏
  • 举报
回复
哪有全局钩子的标准做法?
kingzai 2002-05-29
  • 打赏
  • 举报
回复
你的输出函数还是有点问题,你可以去参考一下全局钩子的标准做法:
linfei2707 2002-05-29
  • 打赏
  • 举报
回复
void __declspec(dllexport)__stdcall SetHook(HHOOK & hHook, HINSTANCE hInstance )
{
hHook = ::SetWindowsHookEx(WH_CALLWNDPROC,
(HOOKPROC)CallWndProc, AfxGetInstanceHandle(), NULL );

}

我不明白 AfxGetInstanceHandle() 得到的也是Dll的为什么不行呢?

///////////


用了g_hInstance 后不知为什么也只能钩到CTest123Dlg的消息,别的窗口的消息
都钩不到
kingzai 2002-05-29
  • 打赏
  • 举报
回复
难怪你会出错,这个要是动态库的句柄。
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
// This function is called from both processes

switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
// The DLL is being mapped into the process's address space.
g_hinstDLL = hinstDLL;
。。。
}
}
//g_hinstDLL is you want
Bind 2002-05-29
  • 打赏
  • 举报
回复
study
linfei2707 2002-05-29
  • 打赏
  • 举报
回复
to kingzai() 请问m_hInstance 应该是谁的实例句柄,我用CTest123Dlg的和用
CTestDll的出现死机。

////////// CTestDll
void __declspec(dllexport)__stdcall SetHook(HHOOK & hHook, HINSTANCE hInstance )
{
hHook = ::SetWindowsHookEx(WH_CALLWNDPROC,
(HOOKPROC)CallWndProc, AfxGetInstanceHandle(), NULL );

}
或者

void __declspec(dllexport)__stdcall SetHook(HHOOK & hHook, HINSTANCE hInstance )
{
hHook = ::SetWindowsHookEx(WH_CALLWNDPROC,
(HOOKPROC)CallWndProc, hInstance , NULL );

}
hInstance 是CTest123Dlg中用AfxGetInstanceHandle()得到的。

请指教
kingzai 2002-05-29
  • 打赏
  • 举报
回复
我指的是m_hInstance 应该写在动态库里
linfei2707 2002-05-29
  • 打赏
  • 举报
回复
我设断点跟踪过了,只有CTest123Dlg的消息才进CallWndProc
kingzai 2002-05-29
  • 打赏
  • 举报
回复
看代码没问题。你可以在动态库里写一些TRACE语句来进行跟踪
linfei2707 2002-05-29
  • 打赏
  • 举报
回复
m_hInstance = ::LoadLibrary( "TestDll.dll" );

m_pfnStartHook = NULL;
m_pfnStopHook = NULL;
if( m_hInstance )
{
m_pfnStartHook = (STARTHOOK)GetProcAddress(m_hInstance, "?StartHook@@YGXXZ");
m_pfnStopHook = (STOPHOOK)GetProcAddress(m_hInstance, "?StopHook@@YGXXZ");
}
if( m_pfnStartHook )
m_pfnStartHook();
///////////////
kingzai 2002-05-29
  • 打赏
  • 举报
回复
看你动态库的里面的代码没错,在主程序中是怎样调用的。
xintiaf 2002-05-29
  • 打赏
  • 举报
回复
回:
“正如 kingzai()所说的用FindWindow()时,这窗口已经给创建了。”

言之有理,看来是我离题了:)
linfei2707 2002-05-29
  • 打赏
  • 举报
回复
to xintiaf(日月紫光)
正如 kingzai()所说的用FindWindow()时,这窗口已经给创建了。
xintiaf 2002-05-29
  • 打赏
  • 举报
回复
回:
////
楼上的想法好像不错.不过
Findwindow(NULL,"hello");
::SendMessage(hWnd,WM_CLOSE,NULL,NULL);
两个函数有什么权限要求吗?(在win2000下)
///
不知道你想要什么权限,你要关闭的是什么进程,我这样试了,
关闭一个普通的进程没什么问题

void CTestDlg::OnButton3()
{
// HWND hWnd = ::FindWindow(NULL, "MSDN Library Visual Studio 6.0"); //我先用windowname,好使的
HWND hWnd = ::FindWindow("HH Parent", NULL); //HH Parent是相应的类名,这个也通过了
if(!hWnd)
{
MessageBox("FindWindow fail");
return;
}
::SendMessage(hWnd, WM_CLOSE, 0,0);
DWORD dw = GetLastError();
TCHAR c[2];
wsprintf(c, "%d", dw); //返回值为0,that is ERROR_SUCCESS
MessageBox(c);
}

我的系统window2k professional build 2195

另:
SetWindowsHookEx的第四个参数是相关线程的ID,若为0,
表示你要捕获整个系统中的消息,这时钩子函数必须放在一个DLL中才行

linfei2707 2002-05-29
  • 打赏
  • 举报
回复
to feijunjun(军仔)
如果用
g_hHook = ::SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProc, NULL, NULL );
将不成功,也就是说g_hHook反回为NULL;


King_Cpp 2002-05-29
  • 打赏
  • 举报
回复
我还是帮你顶一下吧!!
加载更多回复(21)
随着元宇宙概念兴起与虚拟数字人技术快速发展,虚拟主播、在线教育虚拟助教、元宇宙社交等应用场景对实时动作表情驱动系统提出更高需求。当前主流动作捕捉方案多依赖专业光学动捕设备或深度相机,设备成本高昂、部署复杂,难以在普通用户场景普及。本研究设计并实现一套基于普通单目摄像头的虚拟数字人实时动作表情驱动系统,旨在降低数字人内容生产门槛。系统采用Unity作为主开发引擎,结合Blender进行数字人模型构建与BlendShape表情系统制作,使用MediaPipe框架实现人脸关键点检测与人体姿态估计,通过C#脚本完成实时数据处理与渲染控制。系统包含五个关键模块:人脸关键点检测(MediaPipe Face Mesh提取468个关键点)、人体姿态估计(MediaPipe Pose识别33个骨骼关键点)、表情迁移映射、动作平滑优化(卡尔曼滤波与贝塞尔曲线插值消除抖动)、实时渲染(60fps流畅渲染,支持直播推流与视频录制)。实验结果表明,系统在普通笔记本上可实现60fps实时驱动,人脸关键点检测准确率达98.7%,人体姿态估计平均误差小于5像素,表情迁移相似度达92.3%。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论基础 第3章 系统架构设计 第4章 关键模块设计与实现 第5章 实验与结果分析 第6章 总结与展望 参考文献
内容概要:本文提出了一种基于蒙特卡洛模拟与拉格朗日松弛法的分散式优化策略,用于解决电动汽车充电站在分时电价机制下的有序充电调度问题。通过蒙特卡洛方法模拟电动汽车充电行为的随机性,生成多样化负荷场景,构建以降低电网负荷波动和用户充电成本为目标的优化模型;采用拉格朗日松弛法对耦合约束进行解耦,实现分布式求解,在保障用户隐私的同时提升计算效率。文中设计了详细的仿真场景,系统分析了该调度策略对电网负荷特性和用户经济性的影响,验证了所提方法在实际应用中的有效性与可行性。; 适合人群:具备电力系统运行、优化算法理论及Matlab编程能力的研究生、科研人员以及从事智能电网与电动汽车相关领域的工程技术人员。; 使用场景及目标:①应用于城市规模化充电站集群的有序充电管理,实现电网“削峰填谷”;②为电力公司制定科学合理的分时电价政策提供量化分析工具;③支撑智能电网中需求侧资源的分布式协同优化调度研究与系统设计。; 阅读建议:建议结合提供的Matlab代码深入理解算法实现流程,重点掌握蒙特卡洛场景生成机制与拉格朗日松弛迭代求解过程,可通过调整参数设置复现不同工况下的仿真结果,以深化对分散式优化机制与调度效果之间关系的理解。
内容概要:本文研究了基于阶跃响应的V-Tiger自动增益调整PID控制器优化方法,并提供了完整的Matlab代码实现。通过深入分析PID控制的核心性能指标与V-Tiger控制器的动态特性,提出了一种融合阶跃响应特征提取与多目标协同优化的自动整定方案,设计了具备自适应迭代校正能力的优化机制,有效提升了控制系统的响应速度、稳定性和抗干扰能力。文中系统阐述了整定原理、算法架构设计及性能验证流程,通过仿真实验充分验证了该方法在复杂工业控制场景下实现高精度参数自整定的可行性与优越性,为智能PID控制提供了可复现、可拓展的技术路径。; 适合人群:具备自动控制理论基础和Matlab编程能力,从事控制工程、自动化、电气工程等领域研究的研发人员及高校研究生。; 使用场景及目标:①应用于需要高精度PID参数整定的工业控制系统中,如电机驱动、温度控制、电力电子变换器等;②为科研人员提供一种可复现、可扩展的智能PID整定方法,用于提升系统动态性能与鲁棒性;③作为教学案例帮助学生理解PID整定原理与现代优化算法的融合应用。; 阅读建议:建议读者结合文中的Matlab代码逐模块运行与调试,重点关注阶跃响应特征提取与增益优化策略的实现逻辑,同时可尝试将其应用于实际控制系统中进行对比验证,以深化对自动整定机制的理解。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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