一切随风

......---谁还记得那曾经的胡同
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DZNET常用方法解析

Posted on 2005-01-11 09:39  随风  阅读(474)  评论(0)    收藏  举报

1、如何在.net的应用程序运行其它的EXE文件?
主要应用System.Diagnostics名字空间中的Process类

[C#]
Process proc = new Process();
proc.StartInfo.FileName = @"D:\aa.exe"; //可以用绝对路径
proc.StartInfo.Arguments = "";
proc.Start();


2、如何获取正在运行程序的路径?
调用Application类中的ExecutablePath静态成员获取路径
[C#]
textBox1.Text = Application.ExecutablePath;

3、如何用System.Windows.Forms.Application.CompanyName设置公司名称?
在Assembly中设置,VS.Net的开发环境中是在 AssemblyInfo.cs(vb)的文件中设置的,打看文件可以公司信息和版本等信息
[assembly: AssemblyCompany("haha公司")]

4、如何确保在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;
}


5、如何把所有的系统中正在运行的所有进程显示出来呢?
用System.Diagnostics名字空间中的Process.GetProcess()静态成员

[C#]
Using System.Diagnostics;
...
foreach ( Process p in Process.GetProcesses() ) 
    Console.WriteLine( p );


6、如何列出所有正在运行的应用程序呢?
可有用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 );     }
}