AutoItX3Lib.pas 单元的调用示例,涵盖主要方法及常见使用场景:

示例 1:启动记事本并输入文本

pascal
复制
uses
  AutoItX3Lib, SysUtils;

var
  hWnd: HWND;
begin
  // 初始化 AutoIt
  AU3_Init();

  // 启动记事本
  AU3_Run('notepad.exe', '', SW_SHOWNORMAL);

  // 等待记事本窗口激活(最多等待 5 秒)
  AU3_WinWaitActive('无标题 - 记事本', '', 5);

  // 发送文本(模拟键盘输入)
  AU3_Send('Hello, AutoIt!', 0);

  // 保存文件(Ctrl+S)
  AU3_Send('^s', 0); // ^ 表示 Ctrl 键

  // 等待保存对话框
  AU3_WinWaitActive('另存为', '', 2);
  
  // 输入文件名并保存
  AU3_Send('test.txt{ENTER}', 0);

  // 关闭记事本
  hWnd := AU3_WinGetHandle('test.txt - 记事本', '');
  AU3_WinCloseByHandle(hWnd);
end;

示例 2:操作窗口和控件

pascal
复制
var
  hWnd: HWND;
  rect: TRECT;
  buffer: array[0..255] of WideChar;
begin
  // 获取计算器窗口句柄
  hWnd := AU3_WinGetHandle('计算器', '');

  if hWnd <> 0 then begin
    // 激活窗口
    AU3_WinActivateByHandle(hWnd);

    // 获取窗口位置
    AU3_WinGetPosByHandle(hWnd, @rect);
    Writeln(Format('窗口位置: (%d, %d)', [rect.Left, rect.Top]));

    // 点击按钮 "5"
    AU3_ControlClickByHandle(hWnd, 0, '5', 'LEFT', 1);

    // 获取按钮文本(假设控件 ID 为 135)
    AU3_ControlGetTextByHandle(hWnd, 135, buffer, 256);
    Writeln('控件文本: ' + buffer);
  end else
    Writeln('计算器未找到!');
end;

示例 3:鼠标和剪贴板操作

pascal
复制
var
  pos: TPoint;
  clipText: array[0..255] of WideChar;
begin
  // 获取鼠标位置
  AU3_MouseGetPos(@pos);
  Writeln(Format('当前鼠标位置: (%d, %d)', [pos.X, pos.Y]));

  // 移动到 (100, 100) 并左键单击
  AU3_MouseMove(100, 100, 10); // 移动速度较慢(10ms)
  AU3_MouseClick('LEFT', 100, 100, 1, 10);

  // 操作剪贴板
  AU3_ClipPut('这是剪贴板内容');
  AU3_ClipGet(clipText, 256);
  Writeln('剪贴板内容: ' + clipText);
end;

示例 4:进程管理

pascal
复制
var
  pid: DWORD;
begin
  // 检查记事本是否运行
  pid := AU3_ProcessExists('notepad.exe');
  if pid <> 0 then begin
    Writeln('记事本进程 ID: ' + IntToStr(pid));
    // 关闭进程
    AU3_ProcessClose('notepad.exe');
  end else
    Writeln('记事本未运行');
end;

示例 5:设置 AutoIt 选项

pascal
复制
begin
  // 设置按键延迟为 50ms
  AU3_AutoItSetOption('SendKeyDelay', 50);
  
  // 设置窗口标题匹配模式为部分匹配
  AU3_AutoItSetOption('WinTitleMatchMode', 2);
end;

常见注意事项:

  1. 宽字符处理:所有字符串参数需使用 PWideChar,可用 WideString 或 array of WideChar 转换。

  2. 默认值:参数如 AU3_INTDEFAULT 表示使用默认值,例如 AU3_MouseClick 中不指定坐标。

  3. 错误处理:检查函数返回值(如返回 0 表示失败),或调用 AU3_error 获取错误码。

  4. 缓冲区分配:对于返回文本的函数(如 AU3_ClipGet),需预先分配足够大的缓冲区。

posted @ 2025-04-12 08:03  RulesOS  阅读(40)  评论(0)    收藏  举报