我创建了一个将键盘输入发送到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
的类名称。
当cmd
作为管理员运行时,如何将输入发送到cmd
?
当CMD作为管理员运行时,我如何使用此代码在CMD中键入?
你不能。这种行为是设计的。CMD流程的完整性水平高于您的流程。克服这一点的唯一方法是安排假装输入也作为管理员运行的过程。
最终发现,如果我们以admin运行基本应用程序,然后尝试将输入发送到cmd
,则可以正常工作。