`
zhangsk
  • 浏览: 31417 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

控制另一个程序

阅读更多
实现思路分析:
1、找到目标程序的句柄,可以通过窗口的caption属性获取,使用
FindWindow(nil, 'app caption');

2、找到你要控制的组件,如Button,使用
FindWindowEx(ParentHandle, 0, nil, 'btn caption');
3、发送Windows消息控制目标程序
SendMessage( HEdt, BM_CLICK, 00 );
下面是实现该功能的Delphi代码:
unit Unit1;

Interface usesinterface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 
= Class (class(TForm)
    btn1: TButton;
    mmo1: TMemo;
    edt1: TEdit;
    edt2: TEdit;
    btn3: TButton;
    lbl1: TLabel;
    lbl2: TLabel;
    btn4: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
  
private
    { 
Private declarations }
  
public
    { 
Public declarations }
  
end;

var
  Form1: TForm1;

implementation

uses
  ShellAPI;

{$R 
*.dfm}
var
  HApp,
  HEdt : THandle;

procedure TForm1.btn1Click(Sender: TObject);
begin
  HApp :
= FindWindow(nil, PAnsiChar(edt1.text));
  mmo1.Lines.Add(IntToStr(HApp));

  HEdt :
= FindWindowEx(HApp, 0, nil, PAnsiChar(edt2.text));
  mmo1.Lines.Add(IntToStr(HEdt));
  SendMessage( HEdt, BM_CLICK, 
00 );
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
  ShellExecute(handle, 
'open', 'otherapp.exe',nil,nil, SW_SHOWNORMAL{SW_SHOWMAXIMIZED});
end;

procedure TForm1.btn4Click(Sender: TObject);
begin
  SendMessage( HApp, WM_CLOSE, 
00 );
end;

end.
分享到:
评论

相关推荐

    在自己程序中控制其他程序启动

    当启动一个程序时,实际上是创建了一个或多个进程。 2. **操作系统接口**:无论是Windows、Linux还是Mac OS等操作系统,都提供了API接口供开发者调用,用于启动、控制或结束其他程序。例如,Windows下的`...

    用自己的程序控制别的程序

    控制另一个程序还需要注意权限问题,比如防止未经授权的访问,以及处理可能出现的安全风险。同时,正确处理异步操作和错误处理是确保程序稳定性和可靠性的关键。 总的来说,"用自己的程序控制别的程序"是一个广泛的...

    一个控制鼠标的小程序

    本文将深入探讨如何编写一个控制鼠标的程序,以实现标题中提到的"一个控制鼠标的小程序",并参考提供的文件列表进行解析。 首先,我们需要了解基本的编程环境。从提供的文件名列表来看,这似乎是一个使用Visual C++...

    一个程序调用另一个程序

    标题中的“一个程序调用另一个程序”是指在运行中的应用程序能够启动、控制或与另一个程序交互。这可能包括打开文档、执行系统命令、运行外部工具或进行进程间通信。这种能力在各种软件中都很常见,例如,文件管理器...

    c# 控制外部程序方法总结

    控制外部程序是指 C#/.NET 程序控制另外一个独立的程序,包括 Win32 程序和 .NET 程序。Win32 平台是消息驱动模式,而 .NET 框架是事件驱动模式。在讨论控制外部程序之前,需要了解这两种模式的差异。 Win32 平台是...

    在C#中启动另一个程序的实现方法

    在C#编程中,启动另一个程序是常见的任务,这通常涉及到进程管理和操作系统的交互。下面将详细介绍如何在C#中实现这一功能,并提供相关的知识点。 首先,我们需要了解C#中的Process类,它是System.Diagnostics命名...

    控制MFC程序只能运行一次

    如果获取失败,说明已经有另一个实例在运行。这时,我们可以选择提示用户或直接退出当前实例。 ```cpp BOOL CMyApp::InitInstance() { // ... if (!m_myMutex.Lock(5000)) // 尝试锁定,超时5秒 { ...

    PIC16F72电动车控制器源程序

    转速环控制是电动车控制系统的另一个重要部分。本程序使用了比例-积分-微分(PID)控制算法来控制电机的转速。该程序还使用了双闭环控制方式,包括电流环和转速环,以实现电机的稳定运行。 知识点6: 中断服务 中断...

    windows服务启动另外一个应用程序

    标题“Windows服务启动另外一个应用程序”指的是如何在Windows服务中启动一个具有GUI界面的程序,这是一个相对复杂的操作,因为服务通常运行在不同的会话(Session 0)中,而用户应用程序则运行在用户的会话中...

    步进电机控制程序设计流程图

    电机转步函数流程图是步进电机控制程序设计的另一个核心部分。该流程图负责实现步进电机的转动和停止,如step_index=n转动第N步等。 三、步进电机控制程序设计流程图的知识点 1. flag_stop 和 flag_mode 的应用 ...

    课本智能控制(刘金琨)-各章节仿真程序_刘金智能控制_智能控制各章节仿真程序_刘金琨_

    智能控制是信息技术领域的一个重要分支,它涉及到自动化、人工智能、机器学习等多个子领域的交叉应用。在刘金琨教授的《智能控制》一书中,他详细阐述了这一领域的理论基础和实际应用。本压缩包文件提供了与该书配套...

    堆垛机西门子PLC程序+输送线程序+触摸屏程序 物流仓储 涵盖通信,算法,运动控制,屏幕程序,可电脑仿真测试 实际项目

    屏幕程序则提供了一个用户界面,使操作人员可以直观地监控和控制物流仓储系统。电脑仿真测试则可以在实际操作之前对系统进行模拟和验证,以确保其正常运行。西门子S7-1200 PLC是一种常用的工业自动化控制器,G120...

    经典智能控制Matlab程序_matlab_智能_自适应控制_智能控制_

    滑模控制器设计的目标是使系统状态在有限时间内达到一个预设的“滑动表面”,并在该表面上保持不变,即使面临系统参数变化或外界干扰。MATLAB提供了`slidingmodecontroller`函数,便于用户创建和分析滑模控制器。 ...

    高程控制网平差程序设计1

    在程序设计中,首先定义了一个矩阵类`Matrix`,它包含了初始化矩阵、读取矩阵数据的功能。`blank_in`方法用于用户交互式输入矩阵数据,将其转化为二维列表存储。接下来,实现矩阵求逆的算法,这是矩阵运算中的重要...

    51单片机控制多个舵机程序

    舵机的控制信号通常遵循特定的协议:一个固定长度的初始化脉冲(如1ms),接着是可变宽度的脉冲(0.5ms到2.5ms),然后是另一个固定长度的停止脉冲。根据这个协议,我们可以计算出每个舵机所需的目标脉宽,并将其...

    STM32的FOC控制程序

    在基于STM32的FOC控制程序中,2.0电机库是一个关键部分。虽然STM32的库已经发展到了4.0版本,但2.0版本因其简洁和易于理解的结构,成为初学者入门的理想选择。这个库通常包含了一系列的函数和数据结构,用于处理电机...

    智能控制第4版-仿真程序

    书中的源码文件可能包含了各个智能控制策略的详细实现,例如,可能有一个文件用于定义模糊系统的输入输出变量和模糊规则,另一个文件则包含神经网络的学习算法。同时,可能会有专门的脚本文件用于设置仿真参数、初始...

    c#嵌入一个外部exe程序到程序窗体

    在C#编程中,将一个外部的.exe程序嵌入到另一个程序的窗体中,主要涉及到Windows Forms控件和进程管理技术。这个过程通常被称为"嵌入式应用程序"或者"托管应用程序",允许用户在一个主应用程序中直接操作另一个程序...

    ABB机器人将程序模块单个或批量导入控制器的具体方法和步骤.docx

    首先,我们需要在RobotStudio中创建一个离线工作站项目,并在此项目中建立所需的程序模块和例行程序。在进行任何导入操作前,确保对当前的机器人系统进行备份,以防意外情况导致数据丢失。备份的文件名不应包含中文...

Global site tag (gtag.js) - Google Analytics