如何获取IRunningTask(Task Scheduler 2.0库)的PID
我使用 IRegisteredTask.Run()
启动了一个任务并获得了 IRunningTask
对象。
我的目标是使用 SetForegroundWindow
函数将启动任务的主窗口聚焦。
首先我想知道正在运行的任务的PID(进程ID)。
有 IRunningTask.EnginePID
属性,但它给了我一些 taskeng.exe
进程(任务计划程序引擎)的 PID,这不是我的任务...
如何获取IRunningTask 的 PID?
I started a task using IRegisteredTask.Run()
and got IRunningTask
object.
My Goal is to focus the main window of started task with SetForegroundWindow
function.
First i want to know the PID (Process ID) of the running task.
There is IRunningTask.EnginePID
property, but it gives me the PID of some taskeng.exe
process (Task Scheduler Engine), this is not my task...
How to get the PID of IRunningTask?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你是对的。 IRegisteredTask 接口不公开 PID 属性。
如果您确实需要 PID,则可能需要使用 IRegisteredTask 的 .Path 和 .Name 属性并枚举当前正在运行的进程以查找匹配项。当您找到与 IRegisteredTask 具有相同路径和名称的当前正在运行的进程时,您可以检索 PID。它不漂亮,但应该可以解决问题。
You are correct. The IRegisteredTask interface does not expose a PID property.
If you really need the PID, you might need to use the .Path and .Name properties of the IRegisteredTask and enumerate the currently running processes looking for a match. When you locate the currently running process that has the same path and name as your IRegisteredTask, you can then retrieve the PID. It's not pretty, but it should do the trick.
不能使用 IRunningTask.InstanceGuid 获取它(然后通过 TaskScheduler.IRegisteredTaskCollection)吗?
--为了完整性而进行了编辑--
由于您的最终目标是获取任务本身,因此您可以通过使用引擎任务集合中的唯一 GUID 来实现这一目标。
Can't you get it using IRunningTask.InstanceGuid (and then go through TaskScheduler.IRegisteredTaskCollection)?
--edited for completeness--
Since your final goal is to get the task itself, you can do that by using the unique GUID inside the engine's task collection.