先來講兩句廢話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;
測試截圖就不發了,本人於這項技術也是現學現賣,只是本身搞出來以後,想記錄在此,但願方便之後的學習。
但願能夠幫助到你!
(原創)