我有一个Windows服务,它在启动时监视文件系统。现在我需要一个类似的控制台应用程序,它应该在后台运行。我已将代码移植到控制台应用程序,但我需要从任何外部程序手动控制此应用程序。
MyExternalProgram
{
Start(Myconsole)
// Do some operations.
Exit(MyConsole)
}
与上述类似。有什么输入吗?
答案 0 :(得分:1)
如果您只关闭控制台应用程序就可以了,最简单的方法是使用Process.CloseMainWindow
通过向主窗口发送关闭消息来关闭具有用户界面的进程。
请使用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向你的控制台应用程序发送一个退出信号,但我认为这对你的情况来说太过分了。
答案 1 :(得分:0)
您可以在VB中使用SHELL功能启动应用程序。您可以使用参数
设置为最小化Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus
然而,这只会启动您的应用实例。如果某个其他程序在自己或命令行的shell中向应用程序发送了参数,那么在大多数情况下,这将是一个单独的实例(和PID)。