0

我有一个 Windows 服务,它在启动文件系统时对其进行监控。现在我需要一个类似的控制台应用程序,它应该在后台运行。我已将代码移植到控制台应用程序,但我需要从任何外部程序手动控制此应用程序。

MyExternalProgram
{
    Start(Myconsole)
    // Do some operations.
    Exit(MyConsole)
}

与上述类似。有输入吗?

4

2 回答 2

1

如果您只需关闭控制台应用程序就可以了,最简单的方法是使用Process.CloseMainWindow

通过向其主窗口发送关闭消息来关闭具有用户界面的进程。

因此,使用 a 调用您的控制台应用程序,Process然后将其关闭:

Dim p = new Process()
p.StartInfo.FileName = "c:\your\path\to\application.exe"
p.Start()
' p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden ' hide window
'
' do your stuff
'
p.CloseMainWindow()
' p.Kill() ' If window is hidden, you have to use Kill()

如果您不想显示此应用程序的窗口,请使用p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden,但您必须使用 停止它Process.Kill,这将立即停止该进程。

另一种方法是使用某种IPC向您的控制台应用程序发送退出信号,但我认为这对您的情况来说是多余的。

于 2013-08-23T07:32:25.997 回答
0

您可以在 VB 中使用 SHELL 函数启动应用程序。您可以使用参数设置为最小化:

Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus

但是,这只会启动您的应用程序的一个实例。如果其他程序在自己的外壳或命令行中向应用程序发送参数,在大多数情况下,这将是一个单独的实例(和 PID)。

于 2013-08-23T05:58:02.570 回答