1 //通过assembly 2 //得到exe文件完整路径 3 string appPath2 = System.Reflection.Assembly.GetExecutingAssembly().Location; 4 //得到exe文件所在目录 5 string appPath1 = System.AppDomain.CurrentDomain.BaseDirectory;进程方式访问
1 //可取到主窗体标题 2 var mainwindowTitle = Process.GetCurrentProcess().MainWindowTitle; 3 //注意,,这种方式取不到exe文件路径 4 var appPath5 = Process.GetCurrentProcess().StartInfo.FileName; 5 //这种方式可获取当前进程的 exe文件完整路径 6 var appPath6 = Process.GetCurrentProcess().MainModule.FileName;概念梳理
//堆代码 duidaima.com string appPath2 = System.Reflection.Assembly.GetExecutingAssembly().Location; var appPath6 = Process.GetCurrentProcess().MainModule.FileName;
本意概念都是“主运行模块”的文件的路径,因为代码有可能不是直接从你这运行的有可能从其他地方加载的。Assembly从意义上强调被调用的那一坨exe或者dll其内部的功能和方法元数据定义。Process 本质是 当前的if else 判断 改变量 这堆状态机代码 在 哪个进程执行。从意义上强调被操作系统调度的应用程序进程及收操作系统管控的那块内存区域。
1 int CMFCh11App::ExitInstance() 2 { 3 //TODO: 处理可能已添加的附加资源 4 AfxOleTerm(FALSE); 5 6 return CWinApp::ExitInstance(); 7 }这些东西自己称自己为 为"application"于是乎我们在Winform里可以找到有Winform的application。
1 //得到exe文件完整路径 2 string appPath3 = System.Windows.Forms.Application.ExecutablePath; 3 //得到exe文件所在目录 4 string appPath4 = System.Windows.Forms.Application.StartupPath;在wpf里可以找到有wpf的application,注意wpf的application取不到所运行的exe所在目录。
string appstr = Application.Current.MainWindow.ToString();回归本质概念
1 DirectoryInfo dir = new DirectoryInfo("./"); 2 //输出d:\xxx\ 3 Console.WriteLine(dir.FullName); 4 //输出d:\xxx 5 Console.WriteLine(Directory.GetCurrentDirectory());注意这个结尾,多一个斜杠在Path.Combine( ) 的时候会出幺蛾子。
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Console.WriteLine("aaa"); 6 //到此处应用程序就结束了 7 } 8 }好,你非要钻牛角非要说中途退出,你中途return不就得了,或者可以
Environment.Exit(0);所以说dos程序根本没有“不知道自己何时退出”这个概念哈,只有图形化界面才“不知道自己何时退出”因为窗体自己本身在一个死循环周期里通过Windows消息机制在维持。
System.Windows.Forms.Application.Exit();wpf退出
System.Windows.Application.Current.Shutdown(0);由于最开始的时候只有winform支持后来又添加了wpf,可以在命名空间上看得出来在整个.NetFramework实际功能和概念上有很多重叠的地方。