编写后台监控软件的技巧

编写后台监控软件的技巧,第1张

后台监控软件 为了达到隐蔽监控的目的 应该满足正常运行时 不显示在任务栏上 在按Ctrl+Alt+Del出现的任务列表中也不显示 管理员可以通过热键调出隐藏的运行界面 要作到这些 必须把当前进程变为一个系统服务 并且定义全局热键

一 把当前进程变为一个系统服务 目的是在任务列表中把程序隐藏起来 调用API函数RegisterServiceProcess实现

二 定义全局热键(本例中定义热键Ctrl+Del+R) 步骤 定义捕获Windows消息WM_HOTKEY的钩子函数 即 procedure WMHotKey(var Msg : MHotKey)message WM_HOTKEY 向Windows加入一个全局原子 Myhotkey: GlobalAddAtom( MyHotkey ) 并保留其句柄 向Windows登记热键 调用API函数RegisterHotKey实现

三 设计界面和源程序 unit Unit interface uses Windows Messages Forms Dialogs Classes Controls StdCtrlstype TForm = class(TForm) Button : TButtonButton : TButtonprocedure FormCreate(Sender: TObject)procedure Button Click(Sender: TObject)procedure Button Click(Sender: TObject)procedure FormClose(Sender: TObjectvar Action: TCloseAction)private {热键标识ID} id: Integerprocedure WMHotKey(var Msg : MHotKey)message WM_HOTKEY{ Privat Declarations} public { Public Declarations} endvar Form : TForm implementation const RSP_SIMPLE_SERVICE= function RegisterServiceProcess (dwProcessID dwType: DWord) : DWordstdcallexternal KERNEL DLL {$R * DFM}

{捕获热键消息} procedure TForm WMHotKey (var Msg : MHotKey)begin if msg HotKey = id then ShowMessage( Ctrl+Alt+R键被按下! )form Visible :=trueend

procedure TForm FormCreate(Sender: TObject)Const {ALT CTRL和R键的虚拟键值} MOD_ALT = MOD_CONTROL = VK_R = begin {首先判断程序是否已经运行} if GlobalFindAtom( MyHotkey ) = then begin {注册全局热键Ctrl + Alt + R} id:=GlobalAddAtom( MyHotkey )RegisterHotKey(handle id MOD_CONTROL+MOD_Alt VK_R)end else haltend

{把当前进程变为一个系统服务 从而在任务列表中把程序隐藏起来} procedure TForm Button Click(Sender: TObject)begin RegisterServiceProcess(GetCurrentProcessID RSP_SIMPLE_SERVICE)form Hideend

procedure TForm Button Click(Sender: TObject)begin closeend{退出时释放全局热键} procedure TForm FormClose(Sender: TObjectvar Action: TCloseAction)begin UnRegisterHotKey(handle id)GlobalDeleteAtom(id)endend

lishixinzhi/Article/program/Delphi/201311/25039

*** 作系统,有两个层次,第一个层次是对组装起电脑的各个硬件的驱动程序;第二个是建立在驱动程序上的各项应用程序,比如桌面显示、键盘监听后的处理程序等等。如果想要进行监听键盘,那么就需要获取到所使用 *** 作系统给出的api接口,以windows系统为例,是用c和c++进行编写的,所以他们提供的api都是c和c++的api接口。于是用java的话就需要用到java的native方法,一个Native Method就是一个java调用非java代码的接口。所以3个步骤:

1、引用java native方法。

2、研究windows api。

3、调用windows api中的键盘监听接口,完成程序。

    //杀掉进程

    [[NSNotificationCenter defaultCenter] addObserver: self

                                             selector: @selector (onTerminate)

                                                 name:UIApplicationWillTerminateNotification

                                               object: nil ]

    //进入后台

    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (applicationWillEnterBackground) name:UIApplicationDidEnterBackgroundNotification object: nil ]

-( void )onTerminate {

    NSLog(@"杀掉进程")

}

/// 进入后台

- ( void )applicationWillEnterBackground {

    NSLog(@"1进入后台")

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11123687.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存