C# 如何检查鼠标或cmd打开的控制台应用程序?

C# 如何检查鼠标或cmd打开的控制台应用程序?,c#,cmd,console,C#,Cmd,Console,有没有办法知道c#控制台应用程序是通过鼠标(双击)或命令行(无参数)打开的 p/s:此代码必须在此c#控制台应用程序中实现。您可以判断是否没有传入参数,因为args()将为空 您无法说出应用程序是如何启动的。如果您为console应用程序创建一个快捷方式,并传入一个可选参数来说明应用程序是如何启动的,例如launch:shortcut,则可以解决此问题 获取cmd.exe的命令行。如果双击,则其命令行将启动cmd/cegcmd/c programname.exe。这不是万无一失的(用户可以键入)

有没有办法知道c#控制台应用程序是通过鼠标(双击)或命令行(无参数)打开的


p/s:此代码必须在此c#控制台应用程序中实现。

您可以判断是否没有传入参数,因为args()将为空


您无法说出应用程序是如何启动的。如果您为console应用程序创建一个快捷方式,并传入一个可选参数来说明应用程序是如何启动的,例如launch:shortcut,则可以解决此问题

获取cmd.exe的命令行。如果双击,则其命令行将启动
cmd/c
eg
cmd/c programname.exe
。这不是万无一失的(用户可以键入),但基本上是正确的

这是使用COM的VBScript。C#可以通过互操作进行访问(另外.NET也有自己的访问权限)


我使用了Environment.GetCommandLineArgs(),但我无法获得您所说的参数。你能告诉我怎么买吗?
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")

For Each objItem in colItems
    msgbox objItem.ProcessID & " " & objItem.CommandLine
    If objItem.name = "Calculator.exe" then objItem.terminate
Next