我正在开发一个 Windows 屏幕保护程序,在开发它时,我想通过从某种模拟 Windows“屏幕保护程序设置”对话框完成的启动的小测试程序启动它来测试它。这样我就可以避免一次又一次地将我的屏幕保护程序和各种支持 DLL 复制到 Windows\System32。
特别是,它是使用“/p”选项和窗口句柄作为文本字符串的启动,我希望看到一个示例。最好用 C# 编写,但另一种语言的测试启动程序也很有趣。
我正在开发一个 Windows 屏幕保护程序,在开发它时,我想通过从某种模拟 Windows“屏幕保护程序设置”对话框完成的启动的小测试程序启动它来测试它。这样我就可以避免一次又一次地将我的屏幕保护程序和各种支持 DLL 复制到 Windows\System32。
特别是,它是使用“/p”选项和窗口句柄作为文本字符串的启动,我希望看到一个示例。最好用 C# 编写,但另一种语言的测试启动程序也很有趣。
Vimal Raj 在此线程上的回答中的信息是一个主要帮助: 如何在一个 Windows 窗体面板中的一个 Csharp 面板中使用多个表单?
这是我的整个屏幕保护程序测试程序,忽略了 Visual Studio 设计器的东西:
public partial class FormTest : Form
{
private readonly Form _formTinyView;
// Constructor
public FormTest()
{
InitializeComponent();
// Create a tiny preview form and place it inside the Panel control
_formTinyView = new Form();
_formTinyView.FormBorderStyle = FormBorderStyle.None;
_formTinyView.TopLevel = false;
_formTinyView.Size = panelTinyView.Size;
panelTinyView.Controls.Add(_formTinyView);
_formTinyView.Visible = true;
}
// Display settings dialog
private void Settings_Click(object sender, EventArgs e)
{
LaunchScreensaver("/c");
}
// Preview in tiny window
private void TinyView_Click(object sender, EventArgs e)
{
LaunchScreensaver("/p " + _formTinyView.Handle);
}
// Standard preview
private void Preview_Click(object sender, EventArgs e)
{
LaunchScreensaver("/s");
}
// Launch screensaver as a new process
private static void LaunchScreensaver(string argumentString)
{
Process.Start(@"..\..\OutBackScreensaver\bin\Merlinia.OutBackScreensaver.exe",
argumentString);
}
}