熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

微軟.Net程序設計FAQ

2013-11-13 12:22:26  來源: .NET編程 
 如何在net的應用程序運行其它的EXE文件?

  解答:主要應用SystemDiagnostics名字空間中的Process類

  主要代碼:

[C#]
Process proc = new Process();
procStartInfoFileName = @D:\Program Files\Foxmail\Foxmailexe; //可以用絕對路徑
procStartInfoArguments = ;
procStart();

[VBNET]
Dim proc As New Process()
procStartInfoFileName = D:\Program Files\Foxmail\Foxmailexe
procStartInfoArguments =
procStart();

  如何檢測當前操作系統?

  解答:應用System名字空間中的Environment類

  主要代碼:

[C#]
string versionText = EnvironmentOSVersionVersionToString();

[VBNET]
Dim versionText As String = EnvironmentOSVersionVersionToString();

  如何獲取正在運行程序的路徑?

  解答:調用Application類中的ExecutablePath靜態成員獲取路徑

  主要代碼:

[C#]
textBoxText = ApplicationExecutablePath;
[VBNET]
TextBoxText = ApplicationExecutablePath

  如何查看電腦中已經安裝的所有程序集?

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

  如何用SystemWindowsFormsApplicationCompanyName設置公司名稱?

  解答:在Assembly中設置VSNet的開發環境中是在 AssemblyInfocs(vb)的文件中設置的打看文件可以
公司信息和版本等信息

  主要代碼:

[assembly: AssemblyCompany(天極網蠶蛹版權所有)]

  如果用戶的電腦沒有安裝NET運行框架是否可以運行NET的程序?

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

  可在下面地址下載
http://msdnmicrosoftcom/library/defaultasp?url=/downloads/list/netdevframeworkasp

  如何獲取本地的IP地址?

  解答:在名字空間SystemNet中定義了一個類Dns其中有一個方法GetHostByName()用來返回IPHostEntry 對象此對象有一個屬性是AddressList此屬性是一個IPAddress類型的數組包含了計算機此時的所有的IP地址信息包含了撥號上網得到的臨時分配的IP地址和局域網固定的IP地址

  主要代碼:


[C#]
string s=;
SystemNetIPAddress[] addressList = DnsGetHostByName(DnsGetHostName())AddressList;
for (int i = ; i < addressListLength; i ++)
{
s += addressList[i]ToString();
}
[VBNET]
Dim s As String =
Dim addressList As SystemNetIPAddress() = DnsGetHostByName(DnsGetHostName())AddressList
Dim i As Integer
For i = To addressListLength
s += addressList(i)ToString() + ControlCharsLf
Next i

  如何確保在C#中只有一個程序(實例)運行?

  解答:主要應用SystemDiagnostics名字空間中的Process類來實現思路我們在運行程序前查找進程中是否有同名的進程同時運行位置也相同程如是沒有運行該程序如果有就將同名的同位置的程序窗口置前
主要代碼:


[C#]
public static Process RunningInstance()
{
Process current = ProcessGetCurrentProcess();
Process[] processes = ProcessGetProcessesByName (currentProcessName);
//查找相同名稱的進程
foreach (Process process in processes)
{
//忽略當前進程
if (processId != currentId)
{
//確認相同進程的程序運行位置是否一樣
if (AssemblyGetExecutingAssembly()LocationReplace(/ \\) == currentMainModuleFileName)
{
//Return the other process instance
return process;
}
}
}
//No other instance was found return null
return null;
}
[VBNET]

Public Shared Function RunningInstance() As Process
Dim current As Process = ProcessGetCurrentProcess()
Dim processes As Process() = ProcessGetProcessesByName(currentProcessName)
查找相同名的進程
Dim process As Process
For Each process In processes
忽略當前進程
If processId <> currentId Then
確認相同名的進程運行位置是否相同
If [Assembly]GetExecutingAssembly()LocationReplace(/ \) = currentMainModuleFileName Then
返回其它的運行實例
Return process
End If
End If
Next process
沒有其它實例返加空值
Return Nothing
End Function RunningInstance

  如何把所有的系統中正在運行的所有進程顯示出來呢?

  解答:用SystemDiagnostics名字空間中的ProcessGetProcess()靜態成員

  主要代碼:


[C#]
Using SystemDiagnostics;

foreach ( Process p in ProcessGetProcesses() )
ConsoleWriteLine( p ); // string s = pToString();

[VBNET]
Imports SystemDiagnostics

Dim p As Process
For Each p In ProcessGetProcesses()
ConsoleWriteLine(p) string s = pToString()
Next p

  如何列出所有正在運行的應用程序呢?

  解答:可有用EnumWindows 函數將枚舉計算機上的所有現有窗口但我們用SystemDiagnostics名字空間的靜態函數ProcessGetProcesses()可以避免EnumWindows的互操作性問題

  主要代碼:


[C#]
Using SystemDiagnostics;

foreach ( Process p in ProcessGetProcesses(SystemEnvironmentMachineName) )
{
if( pMainWindowHandle != IntPtrZero)
{
//顯示用戶程序名
ConsoleWriteLine( p ); // string s = pToString();
}
}
[VBNET]
Imports SystemDiagnostics

Dim p As Process
For Each p In ProcessGetProcesses(SystemEnvironmentMachineName)
If pMainWindowHandle <> IntPtrZero Then
顯示應用程序名
ConsoleWriteLine(p) string s = pToString();
End If
Next p


From:http://tw.wingwit.com/Article/program/net/201311/15770.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.