资源描述:
《在Delphi中隐藏程序进程的方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在Delphi中隐藏程序进程方法[1]主要需要解决两个问题,即隐藏窗口和设定热键。一.隐藏窗口通过API函数GETACTIVEWINDOW获取当前窗口;函数ShowWindow(HWND,nCmdShow)的参数nCmdShow取SW_HIDE时将之隐藏,取SW_SHOW时将之显示。例如:showwindow(getactivewindow,sw_hide)。隐藏好窗体后,须记住窗体句柄以便恢复。二.键盘监控为了实现键盘监控须用到钩子。以下是程序的源文件:一、创建一个动态链接库unitHKHide;//链接库中的Un
2、it文件interfaceuses Windows,Messages,sysutils;var hNextHookHide:HHook; HideSaveExit:Pointer; hbefore:longint;functionKeyboardHookHandler(iCode:Integer;wParam:WPARAM; lParam:LPARAM):LRESULT;stdcall;export;functionEnableHideHook:BOOL;export;functionDisableHi
3、deHook:BOOL;export;procedureHideHookExit;far;implementationfunctionKeyboardHookHandler(iCode:Integer;wParam:WPARAM; lParam:LPARAM):LRESULT;stdcall;export;const_KeyPressMask=$80000000;var f:textfile; temp:string;begin Result:=0; IfiCode<0Then beginResult
4、:=CallNextHookEx(hNextHookHide,iCode,wParam,lParam);Exit; end; //侦测Ctrl+Alt+F12组合键 if((lParamand_KeyPressMask)=0) //按下时生效 and(GetKeyState(vk_Control)<0) and(getkeystate(vk_menu)<0) and(wParam=vk_F12)then beginResult:=1;//文件不存在则创建ifnotfileexists('c:t
5、est.txt')thenbegin assignfile(f,'c:test.txt'); rewrite(f); writeln(f,0); closefile(f);endelsebegin assignfile(f,'c:test.txt'); reset(f); readln(f,temp); hbefore:=strtoint(temp); begin hbefore:=getactivewindow; temp:=inttostr(hbefore); rew
6、rite(f); writeln(f,temp); closefile(f); ShowWindow(hbefore,SW_HIDE); end;end;//endifFileExists(....) end elsebeginshowwindow(hbefore,SW_SHOW);rewrite(f);writeln(f,0);closefile(f); end;//endifCtrl+Alt+F12按键end;functionEnableHideHook:BOOL;export;b
7、egin Result:=False; ifhNextHookHide<>0thenExit; //挂上WH_KEYBOARD这型的HOOK,同时,传回值必须保留下 //来,免得HOOK呼叫链结断掉 hNextHookHide:=SetWindowsHookEx(WH_KEYBOARD, KeyboardHookHandler,HInstance,0); Result:=hNextHookHide<>0;end;functionDisableHideHook:BOOL;export;begin ifh
8、NextHookHide<>0then beginResult:=True;UnhookWindowshookEx(hNextHookHide);//解除KeyboardHookhNextHookHide:=0; end elseResult:=False;end;procedureHideHookExit;begin //如果忘了解除