在WIN7下的一个软件功能的求助

孟豆豆 2012-09-07 01:24:02
最近公司接了一个在线检测的项目,客户要求:
1、系统启动后自动运行软件进入测试程序(这个写注册表自启动应该就可以了);
2、windows操作系统必须被锁定在测试程序之后,说的不清楚,意思就是只看得到测试程序,其它操作都无法进行;

第二条我水平有限也不得头脑……
我自启动后将软件页面置顶,同时去掉最小化等按钮,同时隐藏windows桌面,貌似可以了,但只要通过键盘启动任务管理器那什么都是白搭了……同时很多键盘操作也足以干掉当前活动程序
禁用任务管理器?拦截键盘消息?

那有操作是否禁用任务管理器的API么?
另外我也暂时还没试过拦截键盘消息,只听说要用钩子函数,没细究过……

工期很紧,希望各位大侠给个合适的建议,我不知道的东西我可以去查资料学习,这个没有问题……就是时间紧迫
...全文
134 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Richardw 2012-09-09
  • 打赏
  • 举报
回复
是程序没运行在管理员下吧
hyz_cs 2012-09-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

C/C++ code

HHOOK OldHook; //钩子句柄
//---------------------------------------------------------------------------
//这个是回调函数
long CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLL……
[/Quote]

这个在win7下不能屏蔽Ctrl + Alt + Del.
Richardw 2012-09-09
  • 打赏
  • 举报
回复

HHOOK OldHook; //钩子句柄
//---------------------------------------------------------------------------
//这个是回调函数
long CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *pkbhs;
if (code < 0)
{
return CallNextHookEx(OldHook, code, wParam, lParam);
}
pkbhs = (KBDLLHOOKSTRUCT*) lParam;
if (pkbhs->vkCode == 91)
{
return 1; //封锁win键
}
if (pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL)<0)
{
return 1; //封锁 CTRL+ESC
}
if (pkbhs->vkCode == VK_TAB && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+TAB
}
if (pkbhs->vkCode == 115 && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+F4
}
if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+ESC
}
if (pkbhs->vkCode == VK_SPACE && GetAsyncKeyState(VK_CONTROL)<0)
{
return 1; //封锁 CTRL+Space
}
if (pkbhs->vkCode == VK_DELETE && GetAsyncKeyState(VK_CONTROL)<0 && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 CTRL+Alt+Del
}
return CallNextHookEx(OldHook, code, wParam, lParam);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btn2Click(TObject *Sender)
{
//销毁钩子
UnhookWindowsHookEx( OldHook );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender)
{
//注册钩子
OldHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyProc, HInstance, 0);
}
//---------------------------------------------------------------------------

可以在主窗体OnCreate注册钩子,OnClose销毁,同时关机,再加上妖哥的替换explorer.exe及自启动,不进安全模式是做不了啥了
baojiang_68 2012-09-07
  • 打赏
  • 举报
回复
原来写过一个与你的相似,采用的方法主要是蔽系统热键使,比如Key=115,启动退出密码等等,目前我的这个软件还保持着打开了别人关不了的状态,退出后,Windows一切正常。
ccrun.com 2012-09-07
  • 打赏
  • 举报
回复
还得屏蔽系统热键, 防止Ctrl + Alt + Del启动任务管理器.
ccrun.com 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
妖哥,能不能明示一下怎样用我的程序替代Explorer,给个链接也行啊,或者推荐一本书呢……
[/Quote]

取消Windows文件保护, 终止Explorer进程, 将你的可执行文件替换成Explorer.exe, 然后....

当然, 这一招有点损.
孟豆豆 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这个项目肯定要被360当成木马干掉的.

第二条有个简单的办法实现就是用你的程序替代Explorer
[/Quote]

找到Explorer移走,然后用我的程序名字换成Explorer放在那???
孟豆豆 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

不用Windows行不?换成linux容易一些
[/Quote]

客户需求第一条注明:必须是win7操作系统……我也不想啊
孟豆豆 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这个项目肯定要被360当成木马干掉的.

第二条有个简单的办法实现就是用你的程序替代Explorer
[/Quote]

嘿嘿,的确……典型恶意程序的特征……

妖哥,能不能明示一下怎样用我的程序替代Explorer,给个链接也行啊,或者推荐一本书呢……
dataxdata 2012-09-07
  • 打赏
  • 举报
回复
不用Windows行不?换成linux容易一些
缘中人 2012-09-07
  • 打赏
  • 举报
回复
截获消息,扑捉键盘 都是不可缺少的
ccrun.com 2012-09-07
  • 打赏
  • 举报
回复
这个项目肯定要被360当成木马干掉的.

第二条有个简单的办法实现就是用你的程序替代Explorer
孟豆豆 2012-09-07
  • 打赏
  • 举报
回复
补充:编译器为BCB6.0

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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