【发布时间】:2020-12-04 08:56:50
【问题描述】:
我目前正在使用此代码来恢复最小化的窗口,当我尝试恢复在我自己的用户帐户下运行的窗口时,它可以完美运行。
ShowWindow(wHandle, SW_RESTORE);
当我尝试恢复在 SYSTEM 帐户下运行的窗口时出现问题。我发现ShowWindow() 总是向我返回一个错误值。此外,在我的清单中,我尝试将其设置为“需要管理员”和“作为调用者”,但它仍然产生相同的结果。
是否有另一个功能类似于ShowWindow() 并且能够恢复在 SYSTEM 帐户下运行的窗口?
【问题讨论】:
-
您可能需要ChangeWindowMessageFilterEx,尽管在随机用户的桌面上以本地 SYSTEM 帐户运行 GUI 应用程序可能是您需要解决的真正问题。似乎没有令人信服的理由这样做。这是为了解决什么问题?
-
我实际上正在编写一个程序来帮助我调用外部应用程序,如果该应用程序已经在运行,我想恢复窗口并将其向前推进。但我面临的问题是外部应用程序倾向于在 SYSTEM 而不是我自己的用户名上运行。
-
在系统帐户下运行您的应用程序,它会工作。大概设计这样一个解决方案的方法是编写一个在系统帐户下运行的Windows服务,并编写一个前端GUI应用程序向该服务发送命令。
-
@IInspectable 只有创建目标窗口的进程才能为自己调用
ChangeWindowMessageFilter/Ex()。您不能将其称为其他人的窗口。 “在随机用户的桌面上以本地 SYSTEM 帐户运行 GUI 应用程序可能是您需要解决的真正问题” - 同意。 -
出于安全原因,低权限进程被阻止与高权限进程进行各种交互。
标签: delphi winapi showwindow