c#

位置:IT落伍者 >> c# >> 浏览文章

微软.Net程序设计FAQ


发布日期:2022年12月26日
 
微软.Net程序设计FAQ
如何在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

               

上一篇:对.NET Framework 反射的反思[4]

下一篇:基于C#的接口基础教程之七