构思:
   已有一个可执行程序a,现在想写另一可执行程序b,用b来运行a,在a运行时需要登录,其按钮是TSpeedButton。如果是一般的TButton我可以用消息机制向登录按钮发一个click消息,而TSpeedButton由于没有句柄,没法发,请问高手怎么解决啊

解决方案 »

  1.   

    用TBitBtn不行么?http://lysoft.7u7.net
      

  2.   

    a程序只是一个可执行程序,没法改成TBitBtn或其它的
      

  3.   

    确定登陆窗口的位置clienttoscreen
    算出登陆按钮在屏幕上的位置
    模拟鼠标按下mouse_event
      

  4.   

    to qin_wei:
    能不能给个简单的例子,事太急了
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Buttons, StdCtrls;type
      TForm1 = class(TForm)
        SpeedButton1: TSpeedButton;
        Edit1: TEdit;
        procedure SpeedButton1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      i : Integer;implementation{$R *.dfm}procedure TForm1.SpeedButton1Click(Sender: TObject);
    begin
    edit1.Text := 'OK!';
    showmessage('ok');
    end;end.
    ////////////////////////
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;type
      TForm2 = class(TForm)
        BitBtn1: TBitBtn;
        procedure BitBtn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementationuses Unit1;{$R *.dfm}procedure TForm2.BitBtn1Click(Sender: TObject);
    var
      tp: TPoint;
    begin
        form1.show;
        //form1.SpeedButton1.OnMouseDown
    tp.X := 370;//数值自己确定一下
    tp.Y := 320;
    SetCursorPos(tp.x, tp.y);
    mouse_event(MOUSEEVENTF_LEFTDOWN, tp.x, tp.y, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, tp.x, tp.y, 0, 0);end;end.
    D7下测试通过,记得给分哦
      

  6.   

    用参数不行么?a.exe /logon admin 1234
      

  7.   

    to comerliang:
    不行啊
    好像要把窗口搞到最前面才可以还是什么的