科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件微软.Net程序设计FAQ

微软.Net程序设计FAQ

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

解答在.net程序设计中的一些疑难问题,同时提供实例代码下载

作者:蚕蛹 来源:yesky 2007年11月4日

关键字: 微软 程序设计 faq

  • 评论
  • 分享微博
  • 分享邮件
1、如何在.net的应用程序运行其它的EXE文件?

  解答:主要应用System.Diagnostics名字空间中的Process类

  主要代码:

[C#]
Process proc = new Process();
proc.StartInfo.FileName = @"D:\Program Files\Foxmail\Foxmail.exe"; //可以用绝对路径
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();

  示例程序点击下载(C#)

  2、如何检测当前操作系统?

  解答:应用System名字空间中的Environment类

  主要代码:

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

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

  示例程序点击下载(C#)

  3、如何获取正在运行程序的路径?

  解答:调用Application类中的ExecutablePath静态成员获取路径

  主要代码:

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

  示例程序点击下载(C#)

  4、如何查看电脑中已经安装的所有程序集?

  解答:.Net Framework把所有的程序集安装在 系统安装盘\winnt\Assembly(隐含)目录下,查看属性可以看到该程序集的所有详细资料。

  5、如何用System.Windows.Forms.Application.CompanyName设置公司名称?

  解答:在Assembly中设置,VS.Net的开发环境中是在 AssemblyInfo.cs(vb)的文件中设置的,打看文件可以
公司信息和版本等信息

  主要代码:

[assembly: AssemblyCompany("天极网蚕蛹-版权所有")]

  6、如果用户的电脑没有安装.NET运行框架,是否可以运行.NET的程序?

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

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

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

  解答:在名字空间System.Net中定义了一个类Dns,其中有一个方法GetHostByName(),用来返回IPHostEntry 对象,此对象有一个属性是AddressList,此属性是一个IPAddress类型的数组,包含了计算机此时的所有的IP地址信息,包含了拨号上网得到的临时分配的IP地址和局域网固定的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

  示例程序点击下载(c#)

  8、如何确保在C#中只有一个程序(实例)运行?

  解答:主要应用System.Diagnostics名字空间中的Process类来实现,思路,我们在运行程序前,查找进程中是否有同名的进程,同时运行位置也相同程,如是没有运行该程序,如果有,就将同名的同位置的程序窗口置前.
主要代码:

[C#]
public static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName (current.ProcessName);
//查找相同名称的进程
foreach (Process process in processes)
{
//忽略当前进程
if (process.Id != current.Id)
{
//确认相同进程的程序运行位置是否一样.
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)
'查找相同名的进程
Dim process As Process
For Each process In processes
'忽略当前进程
If process.Id <> current.Id Then
'确认相同名的进程运行位置是否相同
If [Assembly].GetExecutingAssembly().Location.Replace("/", "\") = current.MainModule.FileName Then
'返回其它的运行实例
Return process
End If
End If
Next process
'没有其它实例,返加空值
Return Nothing
End Function 'RunningInstance

  示例程序点击下载(C#)

  9、如何把所有的系统中正在运行的所有进程显示出来呢?

  解答:用System.Diagnostics名字空间中的Process.GetProcess()静态成员

  主要代码:

[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

  示例程序点击下载(C#)

  10、如何列出所有正在运行的应用程序呢?

  解答:可有用EnumWindows 函数将枚举计算机上的所有现有窗口,但我们用System.Diagnostics名字空间的静态函数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
'显示应用程序名
Console.WriteLine(p) ' string s = p.ToString();
End If
Next p

  

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章