EnumWindows、EnumChildWindows 2 控制其他进程上的控件

C#调用其他程序,比如控制别的程序上的按钮


//步骤1:
{-------------------------------------------------------------------------------
  过程名:    EnumChildWndProc
  过程描述:  通过EnumChildWindows枚举窗体JSBYKP1中的所有控件
             获取控件名称和类名称
  作者:      LYK
  日期:      2018.10.29
  参数:      wnd: HWND; alparam: LPARAM
  返回值:    Boolean
-------------------------------------------------------------------------------}
function EnumChildWndProc(wnd: HWND; alparam: LPARAM): Boolean; stdcall;
var
  aCaption: array [1..256] of Char;
  aClass: array [1..256] of Char;
begin
  GetClassName(wnd, @aClass, 256);
  GetWindowText(wnd, @aCaption, 256);
  Form1.mmo1.Lines.Add(StrPas(@aClass));
  Form1.mmo1.Lines.Add(StrPas(@aCaption));
  Form1.mmo1.Lines.Add('');
  Result:= True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  hdl:= FindWindow(nil, JSBYKP1);
  EnumChildWindows(hdl, @EnumChildWndProc, 0);
end;

//步骤2:
{-------------------------------------------------------------------------------
  过程名:    TForm1.Button2Click
  过程描述:  根据获取到的控件的名称,用FindWindowEx获取控件句柄
              最后,用SendMessage发送控制消息
  作者:      LYK
  日期:      2018.10.29
  参数:      Sender: TObject
  返回值:    无
-------------------------------------------------------------------------------}
procedure TForm1.Button2Click(Sender: TObject);
var
  hdl, hdlc: THandle;
begin
  hdl:= FindWindow(nil, JSBYKP1);
  begin
//    hdlc:= FindWindowEx(hdl, 0, nil, '       Start           (Space Key)');  
//    hdlc:= FindWindowEx(hdl, 0, nil, 'Scan USB'#13#10'(F5)');
    hdlc:= FindWindowEx(hdl, 0, nil, 'Debug');
    if hdlc<>0 then
    begin
      SetForegroundWindow(hdl);

      Sleep(1000);
      SendMessage(hdlc, BM_CLICK, 0, 0);
    end;
  end;
end;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值