有没有办法检测c# xamarin控制台库是正在运行还是通过终端运行?
console.read();
如果用户直接运行该程序,则他们可以看到该程序的输出
nnsrf1az1#
这样的事情应该会让你走上正确的方向:(https://msdn.microsoft.com/en-us/library/z3w4xdc9(v=vs.110).aspx)(英文)
var processes = Process.GetProcessesByName("Name"); if(processes.Count > 0) { //do something here }
xa9qqrwz2#
使用命令
Environment.CommandLine
允许打开程序的命令。如果程序在命令行中运行,则环境。命令行将显示
ProgramName -parameter
但是,如果通过资源管理器或调试程序调用它,它将作为
"PathToFile/ProgramName.exe"
这允许进程通过一些if语句查看它是通过资源管理器调用的还是通过CMD调用的
hmmo2u0o3#
如果你从命令行运行,那么MainWindowTitle将是空的。所以让我们先检查一下我们是否在运行UserInteractive,然后检查标题是否是空的。
MainWindowTitle
UserInteractive
private bool GUIMode() { return Environment.UserInteractive && !string.IsNullOrEmpty(Process.GetCurrentProcess().MainWindowTitle); }
或VB
Private Function GUIMode() As Boolean Return Environment.UserInteractive AndAlso Not String.IsNullOrEmpty(Process.GetCurrentProcess().MainWindowTitle) End Function
3条答案
按热度按时间nnsrf1az1#
这样的事情应该会让你走上正确的方向:(https://msdn.microsoft.com/en-us/library/z3w4xdc9(v=vs.110).aspx)(英文)
xa9qqrwz2#
使用命令
允许打开程序的命令。如果程序在命令行中运行,则环境。命令行将显示
但是,如果通过资源管理器或调试程序调用它,它将作为
这允许进程通过一些if语句查看它是通过资源管理器调用的还是通过CMD调用的
hmmo2u0o3#
如果你从命令行运行,那么
MainWindowTitle
将是空的。所以让我们先检查一下我们是否在运行UserInteractive
,然后检查标题是否是空的。或VB