zoukankan      html  css  js  c++  java
  • Delph 两个对立程序使用消息进行控制通信

    在实际应用中,总是会遇到两个独立的程序进行通信,其实通信的方式有好几种,比如进程间通信,消息通信。

    项目中用到了此功能, 此功能用于锁屏程序, 下面把实现的流程和大家分享一下。

    1. 在锁屏程序中,自定一个消息,如下

    //注册消息的句柄
    FIMessage: Integer;

    FIMessage:= RegisterWindowMessage('LockDeskMessage');

    2. 如果输入正确的截屏密码, 则触发广播消息,同时关闭锁屏窗体, 同时通过注册的缓存中的另一个程序的handle,广播消息,代码如下

    var
    h1: HWND;
    begin
    if (trim(edit1.Text) <> pwd) then
    application.messagebox('对不起,不能打开锁。请确定你输入了密码并且输入的密码正确!', '提示', mb_ok + mb_iconinformation)
    else
    begin
    h1:= FindWindow('Tfrm_MainIPC',PChar(FMainCaption));
    PostMessage(h1,FIMessage,0,1);
    ok := true;
    frm_lockdesk.close;
    end;
    end;

    3.另一个程序在程序启动的开始,注册消息, 代码如下

    //调用锁屏消息
    FJLockDeskMessage: Cardinal;

    FJLockDeskMessage := RegisterWindowMessage('LockDeskMessage');

    4.监听消息,覆盖不停监听消息的函数, 实现代码如下

    procedure WndProc(var Message: TMessage); override;
    procedure Tfrm_MainIPC.WndProc(var Message: TMessage);
    begin
    if Message.Msg = FJLockDeskMessage then
    begin
    iTimers_MainIPC.Enabled6 := True;
    ToolBar1.Enabled := True;
    end
    else
    begin
    inherited;
    end;
    end;

    在此消息中实现该实现的功能。

    触发的方法

    procedure Tfrm_MainIPC.iTimers_MainIPCTimer6(Sender: TObject);
    var
    sFileName_lock: string;
    begin

    //当运行环境不为C盘时说明是开发调试环境,不启动铴屏
    // if LowerCase(Copy(Application.ExeName, 1, 1)) <> 'c' then
    // exit;
    if G_SaveDebug then exit;

    FFlag := FFlag + 1;
    if FFlag >= 2 then //100
    begin
    FFlag :=0 ;
    if not wdRunOnce.findProcess('LockScreen.exe') then
    begin
    logThreadManager(ltInformation, 'B65D30A5-AA25-40B4-A801-FA647D011AFF 启动锁屏程序。');
    sFileName_lock := ExtractFilePath(Application.ExeName) + 'LockScreen.exe';
    if FileExists(sFileName_lock) then
    begin
    ToolBar1.Enabled := False;
    WinExec(PAnsiChar(sFileName_lock),SW_SHOW);

    iTimers_MainIPC.Enabled6 := False;
    //Application.ProcessMessages;
    end;
    end;
    end;
    end;

  • 相关阅读:
    对拍
    311随笔
    精彩才刚刚开始
    做不下去了,就开心一下吧。
    情书
    论Sue这个人呐(=@__@=)
    P1113 杂务
    P1546 最短网络 Agri-Net
    P2009 跑步
    P2814 家谱
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/6593796.html
Copyright © 2011-2022 走看看