0

我正在用 C# 编写一个屏幕保护程序,它应该启动一个应用程序,然后在用户按下“A”键时终止。

当前,当您双击 .scr 文件或等到它启动时,这确实会在 Windows 7 上发生。在 Windows XP 上,外部应用程序只有在您双击 .scr 文件时才能正常启动。当操作系统启动屏幕保护程序时,按“A”确实会终止屏幕保护程序,但外部应用程序会立即启动然后关闭。任务管理器显示外部应用程序在屏幕保护程序之前关闭了一秒钟,所以我想这也会出于某种原因终止外部应用程序。这是您将外部应用程序设置为的任何行为。

当从操作系统启动屏幕保护程序而不是用户双击时,是否会发生内部情况?

System.Diagnostics.Process.Start()用来运行外部应用程序,但使用ProcessProcessStartInfo具有相同的效果。

我正在使用 .NET Framework 3.5

问候, 弗兰克

4

1 回答 1

1

是的,屏幕保护程序在其自己的桌面上运行。常见的有3个,登录桌面,你现在看的那个和屏保桌面。进程通过传递给 CreateProcess 的 STARTUPINFO.lpDesktop 成员与桌面关联。当为 NULL 时,它在当前桌面运行。

桌面上运行的所有进程都关闭后才能关闭。这就是你看到的自动完成的事情。不知道你为什么要这样做,但你正在寻找 pinvoking CreateProcess 以避免让这个进程被杀死。我相当怀疑 Windows 是否允许这样做,屏幕保护程序是恶意软件的臭名昭著的载体。

于 2010-10-23T13:41:47.927 回答