明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

微軟.Net程序設(shè)計(jì)FAQ

[摘要]蠶蛹··yesky   1、如何在.net的應(yīng)用程序運(yùn)行其它的EXE文件?   解答:主要應(yīng)用System.Diagnostics名字空間中的Process類   主要代碼: [C#] Process proc = new Process(); proc.StartIn...
蠶蛹··yesky
  
  1、如何在.net的應(yīng)用程序運(yùn)行其它的EXE文件?

  解答:主要應(yīng)用System.Diagnostics名字空間中的Process類

  主要代碼:


[C#]  
Process proc = new Process();  
proc.StartInfo.FileName = @"D:\Program Files\Foxmail\Foxmail.exe"; //可以用絕對(duì)路徑
proc.StartInfo.Arguments = "";  
proc.Start();  

[VB.NET]  
Dim proc As New Process()  
proc.StartInfo.FileName = "D:\Program Files\Foxmail\Foxmail.exe"  
proc.StartInfo.Arguments = ""  
proc.Start();  
  

  示例程序點(diǎn)擊下載(C#)

  2、如何檢測當(dāng)前操作系統(tǒng)?

  解答:應(yīng)用System名字空間中的Environment類

  主要代碼:


[C#]  
string versionText = Environment.OSVersion.Version.ToString();  

[VB.NET]  
Dim versionText As String = Environment.OSVersion.Version.ToString();  
  

  示例程序點(diǎn)擊下載(C#)

  3、如何獲取正在運(yùn)行程序的路徑?

  解答:調(diào)用Application類中的ExecutablePath靜態(tài)成員獲取路徑

  主要代碼:


[C#]  
textBox1.Text = Application.ExecutablePath;  
[VB.NET]  
TextBox1.Text = Application.ExecutablePath  

  示例程序點(diǎn)擊下載(C#)  

  4、如何查看電腦中已經(jīng)安裝的所有程序集?

  解答:.Net Framework把所有的程序集安裝在 系統(tǒng)安裝盤\winnt\Assembly(隱含)目錄下,查看屬性可以看到該程序集的所有詳細(xì)資料。  

  5、如何用System.Windows.Forms.Application.CompanyName設(shè)置公司名稱?

  解答:在Assembly中設(shè)置,VS.Net的開發(fā)環(huán)境中是在 AssemblyInfo.cs(vb)的文件中設(shè)置的,打看文件可以
公司信息和版本等信息

  主要代碼:


[assembly: AssemblyCompany("天極網(wǎng)蠶蛹-版權(quán)所有")]  

  6、如果用戶的電腦沒有安裝.NET運(yùn)行框架,是否可以運(yùn)行.NET的程序?

  解答:不可以,必需安裝.NET Framework  

  可在下面地址下載
http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp

  7、如何獲取本地的IP地址?

  解答:在名字空間System.Net中定義了一個(gè)類Dns,其中有一個(gè)方法GetHostByName(),用來返回IPHostEntry 對(duì)象,此對(duì)象有一個(gè)屬性是AddressList,此屬性是一個(gè)IPAddress類型的數(shù)組,包含了計(jì)算機(jī)此時(shí)的所有的IP地址信息,包含了撥號(hào)上網(wǎng)得到的臨時(shí)分配的IP地址和局域網(wǎng)固定的IP地址

  主要代碼:


[C#]
string s="";
System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;  
for (int i = 0; i < addressList.Length; i ++)
{
s += addressList[i].ToString();
}
[VB.NET]
Dim s As String = ""
Dim addressList As System.Net.IPAddress() = Dns.GetHostByName(Dns.GetHostName()).AddressList
Dim i As Integer
For i = 0 To addressList.Length - 1
s += addressList(i).ToString() + ControlChars.Lf
Next i

  示例程序點(diǎn)擊下載(c#)

  8、如何確保在C#中只有一個(gè)程序(實(shí)例)運(yùn)行?

  解答:主要應(yīng)用System.Diagnostics名字空間中的Process類來實(shí)現(xiàn),思路,我們?cè)谶\(yùn)行程序前,查找進(jìn)程中是否有同名的進(jìn)程,同時(shí)運(yùn)行位置也相同程,如是沒有運(yùn)行該程序,如果有,就將同名的同位置的程序窗口置前.
主要代碼:


[C#]
public static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName (current.ProcessName);
//查找相同名稱的進(jìn)程
foreach (Process process in processes)
{
//忽略當(dāng)前進(jìn)程
if (process.Id != current.Id)
{
//確認(rèn)相同進(jìn)程的程序運(yùn)行位置是否一樣.
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
{
//Return the other process instance.
return process;
}
}
}
//No other instance was found, return null.
return null;
}
[VB.NET]

Public Shared Function RunningInstance() As Process
Dim current As Process = Process.GetCurrentProcess()
Dim processes As Process() = Process.GetProcessesByName(current.ProcessName)
'查找相同名的進(jìn)程
Dim process As Process
For Each process In processes
'忽略當(dāng)前進(jìn)程
If process.Id <> current.Id Then  
'確認(rèn)相同名的進(jìn)程運(yùn)行位置是否相同
If [Assembly].GetExecutingAssembly().Location.Replace("/", "\") = current.MainModule.FileName Then  
'返回其它的運(yùn)行實(shí)例
Return process  
End If  
End If  
Next process  
'沒有其它實(shí)例,返加空值
Return Nothing  
End Function 'RunningInstance   

  示例程序點(diǎn)擊下載(C#)

  9、如何把所有的系統(tǒng)中正在運(yùn)行的所有進(jìn)程顯示出來呢?

  解答:用System.Diagnostics名字空間中的Process.GetProcess()靜態(tài)成員

  主要代碼:


[C#]  
Using System.Diagnostics;  
...  
foreach ( Process p in Process.GetProcesses() )  
Console.WriteLine( p ); // string s = p.ToString();  

[VB.NET]  
Imports System.Diagnostics  
...  
Dim p As Process  
For Each p In Process.GetProcesses()  
Console.WriteLine(p) ' string s = p.ToString()  
Next p  
  

  示例程序點(diǎn)擊下載(C#)

  10、如何列出所有正在運(yùn)行的應(yīng)用程序呢?

  解答:可有用EnumWindows 函數(shù)將枚舉計(jì)算機(jī)上的所有現(xiàn)有窗口,但我們用System.Diagnostics名字空間的靜態(tài)函數(shù)Process.GetProcesses()可以避免EnumWindows的互操作性問題。

  主要代碼:


[C#]  
Using System.Diagnostics;  
...  
foreach ( Process p in Process.GetProcesses(System.Environment.MachineName) )  
{  
if( p.MainWindowHandle != IntPtr.Zero)  
{  
//顯示用戶程序名
Console.WriteLine( p ); // string s = p.ToString();  
}  
}  
[VB.NET]  
Imports System.Diagnostics  
...  
Dim p As Process  
For Each p In Process.GetProcesses(System.Environment.MachineName)  
If p.MainWindowHandle <> IntPtr.Zero Then  
'顯示應(yīng)用程序名
Console.WriteLine(p) ' string s = p.ToString();  
End If  
Next p