我正在用C#编写一个屏幕保护程序,它应该启动一个应用程序,然后在用户按下“A”键时终止。
当您双击.scr文件或等到它启动时,这在Windows 7上确实会发生。在Windows XP上,只有双击.scr文件时,外部应用程序才会正常启动。当操作系统启动屏幕保护程序时,按“A”会终止屏幕保护程序,但外部应用程序会暂时启动然后关闭。任务管理器显示外部应用程序在Screensaverso之前关闭了一秒钟我想象这也会因某种原因终止外部应用程序。这是您设置外部应用程序的行为。
当从操作系统启动屏幕保护程序而不是用户双击时,是否会发生内部事务?
我正在使用System.Diagnostics.Process.Start()
来运行外部应用程序,但使用Process
和ProcessStartInfo
具有相同的效果。
我正在使用.NET Framework 3.5
此致 弗兰克
答案 0 :(得分:1)
是的,屏幕保护程序在自己的桌面上运行。有三种常见的登录桌面,您现在正在查看的桌面和屏幕保护程序桌面。进程通过传递给CreateProcess的STARTUPINFO.lpDesktop成员与桌面关联。当为NULL时,它在当前桌面中运行。
在关闭桌面上运行的所有进程之前,无法关闭桌面。这是你看到的自动完成的事情。不知道你为什么要这样做,但你正在寻找pinvoking CreateProcess以避免此过程被杀死。我确实怀疑Windows允许这样,屏幕保护程序是恶意软件的臭名昭着的载体。