3

我创建了一个将键盘输入发送到cmd.exe. 这在cmd以普通用户身份运行时有效,但在cmd以管理员身份运行时失败。

这是我的代码:

Var
   Wnd:hwnd;
begin
   wnd:=FindWindow('ConsoleWindowClass',0);
   if wnd <> 0 then
    begin
      setforegroundWindow(wnd);
      keybd_event(Ord('A'),0,0,0);
    end;
end;

请注意,这ConsoleWindowClass是 的类名cmd

如何将输入发送到cmdcmd管理员身份运行的时间?

4

2 回答 2

3

当 cmd 以管理员身份运行时,如何在 cmd 中输入此代码?

你不能。此行为是设计使然。cmd 进程以比您的进程更高的完整性级别运行。克服这个问题的唯一方法是安排伪造输入的进程也以管理员身份运行。

于 2016-12-16T14:28:25.787 回答
0

最后发现,如果我们以管理员身份运行基础应用程序,然后尝试向其发送输入,cmd则可以正常工作。

于 2016-12-17T18:09:41.643 回答