我正在寻找一种控制Windows环境中程序的方法。
我希望它有点类似于Linux软件“screen
”。
我搜索的原因是我需要使用标识符启动一个程序(在Windows上),所以我以后可以关闭该特定程序,而不关闭任何其他程序 - 即使实际程序(.exe文件) )正在运行多次。那么无论如何我可以“命名”它吗?
我现在在Linux上使用以下内容:
$ screen <params> <id> ./softwareprogram
然后我知道我总能找到它的ID:)
这是一个关闭或启动第三方程序的外部程序。
我的程序是用C ++编写的,如果这有什么不同的话。
编辑:我不能以任何方式自己选择身份证吗?喜欢以特定名称启动程序?另外如何通过提供名称来终止进程?
答案 0 :(得分:3)
目前,我不相信屏幕有本机等价物。 Cygwin包含一个屏幕实现,但它带有cygwin的开销。问题是基于Windows和Posix的操作系统以非常不同的方式实现控制台。 Windows不支持许多属于POSIX环境的tty功能。话虽这么说,可以使用API调用在屏幕实用程序中编写功能的最小实现:AttachConsole和FreeConsole。不过,我不得不对这个问题进行更多的研究。
答案 1 :(得分:1)
启动程序时,即使在Windows上也可以获取其进程ID。 您可以稍后使用该进程ID再次终止该程序。
如果您需要提供自己的ID,那么您可以使用例如注册表,用于存储您的id到进程ID的映射。如果收到启动命令,请将标识符作为键存储在注册表中,将已启动进程的pid存储为值。如果收到停止命令,请从注册表中检索pid并终止该pid并从注册表中删除该密钥。
当然,您也可以使用数据库或文件夹来代替注册表,其中密钥(您的标识符)是文件名,而pid在每个文件中
答案 2 :(得分:-1)
虽然我不知道linux screen
命令的作用,但为什么不使用从CreateProcess
获得的进程句柄?
您也获得了进程ID,但只有在该进程有打开的句柄时它才有效。
lpProcessInformation
参数将包含process-id和process-handle。