【发布时间】:2010-04-22 12:55:28
【问题描述】:
我有简单的 win 应用程序(使用 .net C# 编写),需要从 cmd.exe 启动,然后写入该控制台,但问题是我需要该 cmd.exe 进程的进程 ID。我可以得到所有正在运行的进程,
Process[] procList = Process.GetProcessesByName("cmd");
但是如何找到我的? :)
也许是读取输入,并检查里面是否写了“ApplicationName.exe”,或者获取当前处于活动状态的 cmd.exe 窗口?但是有什么功能呢?
【问题讨论】:
-
为什么 Windows 应用程序需要写回某个控制台窗口?为什么不让 Windows 应用程序弹出一个非模态表单并将输出放在那里?你怎么能保证 Windows 应用程序甚至是从 cmd.exe 窗口启动的?
-
阅读我的第二个答案。我的程序是命令行,但问题是使用“-off”参数我需要隐藏 cmd,然后应用程序在没有命令行窗口的情况下运行。但问题是当我使用 PInvoke ShowWindow 隐藏 cmd 时,窗口会闪烁,我讨厌这样:)。如果我将 cmd 编译为 Windows 应用程序,那么我可以在需要时分配新的 cmd。但问题是即使我从 cmd.exe 运行我的应用程序,它也会分配新的 cmd...
-
Tnx 你 RaphaelSP,我在这里找到了例子codeproject.com/KB/cs/ParentProcWindow.aspx。