如何通过PostMessage 启动一个带参数的子程序,请帮忙举个例子

解决方案 »

  1.   


    //程序A,负责发消息
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,ShellApi, StdCtrls;const
       WM_MyMessage = WM_USER + 1;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure MyTestPro(var Message: TMessage);message  WM_MyMessage;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MyTestPro(var Message: TMessage);
    begin
      if Message.Msg=WM_MyMessage then
      ShellExecute(0, 'Open', 'C:\B.exe', 'A B C', nil, SW_SHOWNORMAL) ;//B有3个启动参数A,B,C
      inherited;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Postmessage(self.Handle,WM_MyMessage,0,0);
    end;
    //B程序
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      showmessage('第1个参数'+ParamStr(1));
     //ParamStr(1)为获取启参的第1个参数,以此类推ParamStr(2)...
    end;
      

  2.   

    static BOOL BTAPI ftk_callback_func( unsigned int nSocket = 0, const unsigned char *pData = NULL )
    {
    if ( NULL != g_pBitZamDlg )
    {
    g_nSocket = nSocket;
    g_pBitZamDlg ->PostMessage( WM_COMMAND, MAKEWPARAM( 1022, BN_CLICKED ), NULL );
    } return TRUE;
    }请帮我翻译下这个,谢谢了