- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一项服务,仅当该用户登录(信息亭用户)时,该服务才会在特定用户的桌面上显示某种启动屏幕。
一旦输入有效的代码,该启动屏幕就会将该信息告知服务,并且服务将进入休眠状态 x 时间(取决于代码)。
启动画面直接退出。现在,当服务唤醒时,它会发现启动画面不再存在,因此启动它。
这一切都正常,唯一的问题是启动的应用程序没有焦点,即如果我在记事本中工作并且时间到了,则启动屏幕会显示在记事本后面(尽管是全屏)。
我只需要担心 Windows Vista,我使用 win32 扩展在 Python 中进行编码,但我相信当从 LocalSystem 帐户调用时,这个问题存在于 CreateProcessAsUser 中。
<小时/>这个“问题”实际上是一个故意的限制,以防止像我这样的“烦人”应用程序窃取焦点。
您可以通过设置更改行为:win32gui.SystemParametersInfo(win32con.SPI_SETFOOREGROUNDLOCKTIMEOUT, 0, 0)这相当于临时设置注册表值:HKEY_CURRENT_USER\控制面板\桌面\ForegroundLockTimeout这必须以用户本身的身份完成,因此要么在您要启动的应用程序中构建它,要么为您要启动的应用程序构建一个启动帮助程序。
但是,应用程序可能希望通过使用一些我现在不记得的 API 调用来防止其焦点被窃取。
一个可能好的解决方案是找到该用户当前的所有窗口句柄,然后使用每个句柄来使用 win32gui.ShowWindow(handle, command) 将其最小化。
尽管对于这个特定问题,设置锁定超时设置就足够了。
如果有人想知道我如何设法从服务启动应用程序到桌面,这里有 link to the code .
最佳答案
您是否尝试过从服务中启动您自己的进程以外的其他进程来查看它是否获得焦点?就像记事本一样,看看它是否会窃取浏览器的焦点?如果是这样,也许它的程序可以在启动时收回焦点。
否则我相信 lpStartupInfo 指向的 STARTUPINFO 结构中的 wShowWindow 属性应该控制它。您还需要 dwFlags 中的 STARTF_USESHOWWINDOW 才能使用 nShowWindow。我认为这些值应该是 SW_SHOW,如果您想尝试其他值,它们会为 ShowWindow 函数列出。
关于python - 从 LocalSystem 服务(通过 CreateProcessAsUser)生成的 GUI 应用程序没有焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860428/
我有一个启动我的应用程序的 Windows 服务。此服务是一个调度程序,用于执行最终用户定义的一些自定义操作。 它作为 LocalSystem 帐户运行,并将启动我的应用程序(有窗口)。 为此,我使用
我正在尝试使用以下代码从另一个用户帐户下的另一个 Windows 应用程序调用执行应用程序: procedure TForm1.Button3Click(Sender: TObject); var
我正在尝试使用我的服务启动 GUI 应用程序。我在 VS2012 上开发了该服务并在 Windows 7 上运行。但是 CreateProcessAsUser 函数即使成功返回也不会启动应用程序。以下
我的服务在本地系统权限下运行,需要在用户 session 中启动具有管理员权限的应用程序。 我得到的是: WTSGetActiveConsoleSessionID() WTSQueryUserToke
我在 MSDN 上读到 UAC 的实现: http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspx 偶然发现这条有趣的线: Althou
我知道!我不应该从 Windows 服务运行 GUI 应用程序,但这是我应该完成的要求。将来自网络的不同代码放在一起,我有以下过程。由于 CreateProcessAsUser,我在日志中看到访问冲突
我需要 ShellExecute作为另一个用户,目前我使用 CreateProcessAsUser 启动一个辅助进程调用 ShellExecute ,但这似乎太过分了(错误的父进程等)。有没有更好的方
我试过混合代码 here和 here从通过 QtService 初始化的服务运行 GUI exe,但每当我运行下面的代码时,我都会从 CreateProcessAsUser 收到错误 5。 另外,我看
我有服务,我需要使用此服务的当前用户权限运行 gui 应用程序。这是我的代码,它总是返回带有 1305 CreateProcessAsUser 函数的 GetLastError。我该如何修复它或者我的
我编写 Windows 服务来启动具有指定路径的应用程序,并发送一个文件名作为其参数。 => 我在 C# 代码上使用 CreateProcessAsUser: 如果文件名来自a,b,c...z字符=>
我有一个在“SYSTEM”帐户下运行的 Windows 服务,它检查每个登录用户是否正在运行特定的应用程序。如果应用程序未运行,服务将启动它(在相应的用户名下)。 我正在尝试使用 CreateProc
我正在尝试使用 CreateProcessAsUser 启动 UI,但该窗口并未作为前台窗口出现。 如果它是一个普通窗口我不介意,但是这个窗口触发了 UAC 提示并且它也没有显示在前台。 最佳答案 根
我正在使用 CreateProcessAsUser 在用户指定的凭据下创建一个进程。 我希望发布的是代码的相关部分。如果您想查看更多内容,请告诉我。 获取 token 的第一个 LogonUser:
我已经阅读了 Stack Overflow 上关于 CreateProcessAsUser 的所有帖子,但很少有已解决的问题,所以我不会在这个问题上屏住呼吸。但似乎我肯定遗漏了一些东西,所以这可能很容
我正在运行一个具有 SYSTEM 权限的程序。我从 LogonUser(szUserName, NULL, szPassword, LOGON32_LOGON_NETWORK, LOGON32_PRO
我有一个系统服务,它使用 CreateProcessAsUser 方法启动应用程序。 此服务使用模拟在事件 session 中启动应用程序。该应用程序正在按预期启动,我设法通过使用使窗口出现在前面:
我的应用程序中有两个进程。1. "myService.exe"这是一个 Windows 服务。2. “myApp.exe”与“myService.exe”位于同一目录。 此进程由“myService.
我在 C# 中使用 CreateProcessAsUser 通过服务启动进程我的服务需要等待进程退出,但我不知道该怎么做,我不想使用检查进程列表中的进程存在 最佳答案 PROCESS_INFORMAT
我们有一个作为 LocalSystem 运行的服务。我们使用 CreateProcessAsUser 和 LoadUserProfile 以特定用户身份启动工作应用程序。效果很好。但是,如果我们尝试使
我有一个在系统帐户中运行的服务,它应该在用户模式下启动一个应用程序。在 C++ 中没问题,但在 .NET 中我遇到了很多问题。 最后,我复制当前用户 session 的用户 token (explor
我是一名优秀的程序员,十分优秀!