先来讲两句废话html
本人C#也没有系统学过,但愿之后有机会补充上,本身只是在工做中使用到了这项技术,逐渐摸索和同事的指导,还算能够正常工做,浏览器
在编写C#前台的代码的时候,常常会碰到要读取本地的配置文件的时候,经过配置文件来调用其余程序,ide
为何要读取ini配置文件?因为程序上线以后会进行打包封装,程序内部便不方便修改,那么即可以经过修改ini配置文件函数
那么下面就仔细讲一下如何操做的。post
首先第一步:先写一个公共的类,以备其余人使用。学习
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Runtime.InteropServices; 7 8 namespace Zebone.His 9 { 10 public class OperateIniFile 11 { 12 #region API函数声明 13 14 [DllImport("kernel32")]//返回0表示失败,非0为成功 15 private static extern long WritePrivateProfileString(string section,string key, 16 string val,string filePath); 17 18 [DllImport("kernel32")]//返回取得字符串缓冲区的长度 19 private static extern long GetPrivateProfileString(string section,string key, 20 string def,StringBuilder retVal,int size,string filePath); 21 22 23 #endregion 24 /// <summary> 25 /// 读Ini文件 26 /// </summary> 27 /// <param name="Section">[]内的段落名</param> 28 /// <param name="Key">key</param> 29 /// <param name="NoText"></param> 30 /// NoText对应API函数的def参数,它的值由用户指定,是当在配置文件中没有找到具体的Value时,就用NoText的值来代替。能够为空 31 /// <param name="iniFilePath">ini配置文件的路径加ini文件名</param> 32 /// <returns></returns> 33 #region 读Ini文件 34 35 public static string ReadIniData(string Section,string Key,string NoText,string iniFilePath) 36 { 37 if(File.Exists(iniFilePath)) 38 { 39 StringBuilder temp = new StringBuilder(1024); 40 GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath); 41 return temp.ToString(); 42 } 43 else 44 { 45 return String.Empty; 46 } 47 } 48 49 #endregion 50 51 #region 写Ini文件 52 53 public static bool WriteIniData(string Section,string Key,string Value,string iniFilePath) 54 { 55 if(File.Exists(iniFilePath)) 56 { 57 long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath); 58 if(OpStation == 0) 59 { 60 return false; 61 } 62 else 63 { 64 return true; 65 } 66 } 67 else 68 { 69 return false; 70 } 71 } 72 73 #endregion 74 } 75 }
我只在读ini文件中写了注释,写和读相似测试
而后我是封装了一个静态方法,在另外一个公共类中,来调用OperateIniFile方法,ui
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Diagnostics; 10 11 ... 12 13 /// <summary> 14 /// 经过读取ini配置文件,调用exe文件 15 /// Pvcode 住院号 16 /// </summary> 17 public static void IniInvokingExe(string sta,string Pvcode) 18 { 19 string LisPath = OperateIniFile.ReadIniData("ext_exe", "lis_path", null, "C:\\Windows\\trisun_cis.ini"); 20 string PacsPath = OperateIniFile.ReadIniData("ext_exe", "pacs_path", null, "C:\\Windows\\trisun_cis.ini"); 21 string Lis = OperateIniFile.ReadIniData("ext_exe", "lis", null, "C:\\Windows\\trisun_cis.ini"); 22 string Pacs = OperateIniFile.ReadIniData("ext_exe", "pacs", null, "C:\\Windows\\trisun_cis.ini"); 23 string ygConnectPath = OperateIniFile.ReadIniData("ext_exe", "yg_connect_path", null, "C:\\Windows\\trisun_cis.ini"); 24 string ygConnect = OperateIniFile.ReadIniData("ext_exe", "yg_connect", null, "C:\\Windows\\trisun_cis.ini"); 25 if (Lis == "" || Lis == null) 26 { 27 MessageBoxUtils.Hint("该程序未安装!"); 28 return; 29 } 30 if(Pacs == "" || Pacs == null){ 31 MessageBoxUtils.Hint("该程序未安装!"); 32 return; 33 } 34 if(ygConnect == "" || ygConnect == null){ 35 MessageBoxUtils.Hint("该程序未安装!"); 36 return; 37 } 38 if (sta == "lis") 39 { 40 Process.Start(LisPath + "\\" + Lis,Pvcode); 41 return; 42 } 43 else if (sta == "pacs") 44 { 45 Process.Start(PacsPath + "\\" + Pacs,Pvcode); 46 return; 47 } 48 else 49 { 50 Process.Start(ygConnectPath + "\\" + ygConnect,Pvcode); 51 return; 52 } 53 }
本人是读取ini配置文件来读取其中的路径,来调用该路径下的exe文件,url
其中,要注意的是,不要忘了引入公共的类,using ...;spa
而后到设计上找到你要调用的位置,点击进入以后,调用IniInvokingExe方法便可,
若是想要使用的话,只须要把IniInvokingExe方法中的参数去掉,便可读取ini文件,
1 string aa = OperateIniFile.ReadIniData("ext_exe", "lis_path", null, "D:\\aa\\trisun_cis.ini"); 2 string bb = OperateIniFile.ReadIniData("ext_exe", "yg_connect_path", null, "D:\\aa\\trisun_cis.ini"); 3 string cc = OperateIniFile.ReadIniData("ext_exe", "lis", null, "D:\\aa\\trisun_cis.ini"); 4 //MessageBox.Show(aa+"\\"+cc); 5 //Process.Start("YoukuDesktop.exe"); 6 string dd = "F:\\YouKuAndIqyi\\YouKu\\YoukuClient"; 7 string ee = "YoukuDesktop.exe"; 8 MessageBox.Show(dd); 9 Process.Start(dd + "\\" + ee); 10 //Process.Start("F:\\YouKuAndIqyi\\YouKu\\YoukuClient\\YoukuDesktop.exe"); 11 //Process.Start(aa + "\\" + cc);
这是方法体,其中的MessageBox.Show();能够查看读取的配置文件路径是否正确,
须要注意的是路径的写法,须要“\”的转义符!
是否是很简单!
附赠讲解如何调用exe程序
在C#中调用exe程序,在按钮的点击事件里写入
Process.Start("F:\\YouKuAndIqyi\\YouKu\\YoukuClient\\YoukuDesktop.exe");
这是本人拿本身的优酷视频作的例子,若是是c盘本地程序,或者是Windows系统的程序,(非外部程序)
可直接调用,
例如:Process.Start("IExplore.exe", "http://www.baidu.com");
这是调用的ie浏览器,后面的url是网址,点击以后,能够直接进入百度页面。
注意引入using System.Diagnostics;
测试截图就不发了,本人于这项技术也是现学现卖,只是本身搞出来以后,想记录在此,但愿方便之后的学习。
但愿能够帮助到你!
(原创)