【问题标题】:Get windows process start time获取windows进程开始时间
【发布时间】:2021-05-20 05:17:17
【问题描述】:

我知道有像go-ps这样的包可以让我们在Windows中主动运行进程,但是这个包没有进程启动时间和进程的其他信息。

而且我知道在 Windows power shell 中使用此命令可以获取进程启动时间。

Get-Process | select name, starttime

我不想执行命令并得到解析它的结果,实际上主要的想法是如何使用像os 这样的主要 Go 包来获取处理时间。

【问题讨论】:

标签: windows go process operating-system


【解决方案1】:

您可以为此使用w32 包。我维护此存储库,您可以通过创建问题或自己执行并打开拉取请求来要求包含新的 WinAPI 函数。

以下是如何获取当前进程的运行时间的示例。我们等一秒,询问时间,输出略高于一秒。

package main

import (
    "fmt"
    "time"

    "github.com/gonutz/w32/v2"
)

func main() {
    time.Sleep(time.Second)
    creation, _, _, _, ok := w32.GetProcessTimes(w32.GetCurrentProcess())
    if !ok {
        panic("GetProcessTimes failed")
    }
    fmt.Println("creation", creation.Time())
    fmt.Println("run time", time.Now().Sub(creation.Time()))
}

【讨论】:

  • 谢谢你的回答,但是没有GetCurrentProcess函数
  • 当然,这是我在回答这个问题之前添加的最后一件事,以表明这不是一个死回购,我们可以根据需要对其进行更新。只需执行go get -u github.com/gonutz/w32 即可获取最新更改。另请注意,此示例没有执行您在问题中所做的操作,您可能需要 EnumProcesses ,但它应该与库一起使用。如果您错过任何其他功能,只需发出它。
  • @ttrasn 嘿,你试过了吗?我刚刚更新了 w32 库以使用模块(就像我的许多其他 repos 一样,其余的很快就会跟进)。立即查看更新后的代码示例,上面写着import "github.com/gonutz/w32/v2"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多