C#实现动态桌面背景图片切换(续)

问题描述:昨天搞了一个自动切换桌面的小程序,用着不太方便。因为我每次添加新图片都是手动修改XML文件和重启服务,于是我搞了一个配置程序如下:

  上面展示的功能,基本上实现了程序所需要的功能。其中涉及的知识点有三个:

  (1):执行命令行语句,并且返回结果,这是我以前不知道的,以前我知道执行命令行命令,但是不知道如果返回结果,代码如下:

代码
         #region  执行DOS命令,返回DOS命令的输出
        
///   <summary>
        
///  执行DOS命令,返回DOS命令的输出
        
///   </summary>
        
///   <param name="dosCommand"> dos命令 </param>
        
///   <param name="milliseconds"> 等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待 </param>
        
///   <returns> 返回输出,如果发生异常,返回空字符串 </returns>
         public   static   string  Execute( string  dosCommand,  int  milliseconds)
        {
            
string  output  =   "" ;
            
if  (dosCommand  !=   null   &&  dosCommand  !=   "" )
            {
                Process process 
=   new  Process();
                ProcessStartInfo startInfo 
=   new  ProcessStartInfo();
                startInfo.FileName 
=   " cmd.exe " ;
                startInfo.Arguments 
=   " /C  "   +  dosCommand;
                startInfo.UseShellExecute 
=   false ;
                startInfo.RedirectStandardInput 
=   false ;
                startInfo.RedirectStandardOutput 
=   true ;
                startInfo.CreateNoWindow 
=   true ;
                process.StartInfo 
=  startInfo;
                
try
                {
                    
if  (process.Start()) 
                    {
                        
if  (milliseconds  ==   0 )
                            process.WaitForExit();
                        
else
                            process.WaitForExit(milliseconds); 
                        output 
=  process.StandardOutput.ReadToEnd();
                    }
                }
                
catch
                {

                }
                
finally
                {
                    
if  (process  !=   null )
                        process.Close();
                }
            }
            
return  output;
        }
        
#endregion

   (2):XML写入和读取,以前搞过,好久不用,生疏了需要。现在代码记录如下,方便以后查找:

代码
         #region  btnSave_Click
        
private   void  btnSave_Click( object  sender, EventArgs e)
        {
            
if  ( this .lstFilePath.Items.Count  >   0 )
            {
                XmlDocument xmlDoc 
=   new  XmlDocument();
                xmlDoc.Load(XML_PATH);
                xmlDoc.SelectSingleNode(
" paths " ).RemoveAll();
                XmlNode root 
=  xmlDoc.SelectSingleNode( " paths " );
                XmlElement xmlEle 
=  (XmlElement)xmlDoc.SelectSingleNode( " paths " );
                xmlEle.SetAttribute(
" time " this .txtTime.Text);
                
for  ( int  i  =   0 ; i  <   this .lstFilePath.Items.Count; i ++ )
                {
                    XmlElement xmle 
=  xmlDoc.CreateElement( " path " );
                    xmle.InnerText 
=   this .lstFilePath.Items[i].ToString();
                    root.AppendChild(xmle);
                }
                xmlDoc.Save(XML_PATH);
                MessageBox.Show(
" 保存成功!请重新启动服务(先关闭,在启动)才能生效 " );
            }
        }
        
#endregion

 

  (3):安装服务,并且如何判断服务时候安装成功。如下:

 

代码
         #region  btnInstall_Click
        
private   void  btnInstall_Click( object  sender, EventArgs e)
        {
            Directory.CreateDirectory(App_Path 
+   " DynamicDesktop " );
            File.Copy(Environment.CurrentDirectory.ToString() 
+   " /DynamicDesktop/BackGround.exe " , App_Path  +   " DynamicDesktop\\BackGround.exe " true );
            File.Copy(Environment.CurrentDirectory.ToString() 
+   " /DynamicDesktop/BackGround.exe.manifest " , App_Path  +   " DynamicDesktop\\BackGround.exe.manifest " true );
            File.Copy(Environment.CurrentDirectory.ToString() 
+   " /DynamicDesktop/蝴蝶.bmp " , App_Path  +   " DynamicDesktop\\蝴蝶.bmp " true );
            File.Copy(Environment.CurrentDirectory.ToString() 
+   " /DynamicDesktop/desktop.xml " , Environment.GetFolderPath(Environment.SpecialFolder.System)  +   " \\desktop.xml " true );

            
if  ( ! File.Exists(txtSDK.Text.Trim()  +   " \\installutil.exe " ))
            {
                MessageBox.Show(
" 请选择正确 v2.0 SDK 路径! " );
                
return ;
            }
            
string  result  =   string .Empty;
            result 
=  Execute(txtSDK.Text  +   " \\installutil.exe  "   +  App_Path  +   " DynamicDesktop\\BackGround.exe " , 0 );
            
if  (result.Contains( " 已完成事务处理安装 " ))
            {
                MessageBox.Show(
" 安装成功! " );
                InitShowDesktop();
            }
            
else
            {
                MessageBox.Show(result);
            }
        }
        
#endregion

 

 

你可能感兴趣的:(C#)