2010-10-23 97 views
0

启动外部程序我正在写在C#中的屏幕保护程序应该启动一个应用程序,然后当用户按下“A”键终止。屏幕保护程序无法在Windows XP

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

有什么内部,当屏幕保护程序从操作系统启动而不是双用户点击出现这种情况?

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

我使用的.NET Framework 3.5

问候, 弗兰克

回答

1

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

桌面无法关闭,直到在其上运行的所有进程都关闭。这是你看到自动完成的事情。不知道你为什么要这样做,但你正在寻找禁止CreateProcess来避免这个进程死亡。我确实怀疑Windows允许这样做,屏幕保护程序是恶意软件的恶名。

+0

只是对MSDN看看它说:“每当一个安全的屏幕保护程序启动时,系统自动切换至屏保桌面,保护的过程,从未经授权的用户在默认桌面上。不安全的屏幕保护程序上Winsta0 \默认运行”。当您选择“开启简历,密码保护?”时,屏幕保护程序是否安全?无论哪种方式,外部应用程序关闭。 – Michali 2010-10-23 16:51:42

+0

在桌面上发送消息确实是不可能的。 – Michali 2010-10-24 22:19:27

相关问题