You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Delphi中TEdit控件的命令复制粘贴至已打开的PowerShell窗口?

将Delphi Edit控件内容发送到已打开的PowerShell窗口

可以实现,以下是两种直接可用的实现方案,绑定到按钮点击事件即可触发操作:

方法1:直接向PowerShell窗口发送文本

通过Windows API定位PowerShell窗口,激活后逐个发送命令字符,最后发送回车键执行命令。

uses Windows, SysUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
  hPSWindow: HWND;
  CmdText: string;
  C: Char;
begin
  CmdText := Edit1.Text;
  if Trim(CmdText) = '' then Exit;

  // 查找控制台类窗口(PowerShell属于此类)
  hPSWindow := FindWindow('ConsoleWindowClass', nil);
  if hPSWindow = 0 then
  begin
    ShowMessage('未找到打开的PowerShell窗口');
    Exit;
  end;

  if SetForegroundWindow(hPSWindow) then
  begin
    // 逐个发送命令字符
    for C in CmdText do
    begin
      SendMessage(hPSWindow, WM_CHAR, Ord(C), 0);
      Sleep(10); // 短暂延迟确保字符输入稳定
    end;
    // 发送回车键执行命令
    SendMessage(hPSWindow, WM_KEYDOWN, VK_RETURN, 0);
    SendMessage(hPSWindow, WM_KEYUP, VK_RETURN, 0);
  end
  else
    ShowMessage('无法激活PowerShell窗口');
end;

方法2:通过剪贴板粘贴命令

先将Edit控件内容复制到剪贴板,再模拟Ctrl+V操作粘贴到PowerShell窗口,最后执行命令。

uses Windows, SysUtils, Clipbrd;

procedure TForm1.Button2Click(Sender: TObject);
var
  hPSWindow: HWND;
  CmdText: string;
begin
  CmdText := Edit1.Text;
  if Trim(CmdText) = '' then Exit;

  hPSWindow := FindWindow('ConsoleWindowClass', nil);
  if hPSWindow = 0 then
  begin
    ShowMessage('未找到打开的PowerShell窗口');
    Exit;
  end;

  // 复制命令到剪贴板
  Clipboard.AsText := CmdText;

  if SetForegroundWindow(hPSWindow) then
  begin
    // 模拟Ctrl+V粘贴操作
    keybd_event(VK_CONTROL, 0, 0, 0);
    keybd_event(Ord('V'), 0, 0, 0);
    keybd_event(Ord('V'), 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    Sleep(100);
    // 发送回车键执行命令
    keybd_event(VK_RETURN, 0, 0, 0);
    keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
  end
  else
    ShowMessage('无法激活PowerShell窗口');
end;

注意事项

  • 如果系统同时打开多个控制台窗口(如CMD、PowerShell),FindWindow('ConsoleWindowClass', nil)会返回第一个匹配的窗口。如需精准定位PowerShell,可改用EnumWindows枚举所有窗口,通过窗口标题(包含"PowerShell")筛选。
  • 代码中的Sleep时长可根据系统响应速度调整,避免因处理不及时导致输入异常。
  • 确保项目引用对应单元:方法1需Windows、SysUtils;方法2额外需Clipbrd。

内容的提问来源于stack exchange,提问作者SzaBee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 16:33:31