有没有办法在Go中的Windows上找到进程ID?

贾斯汀

在OS程序包中,有一个FindProcess(),您可以传入该进程的ID以获取一个进程。然后,您可以在进程上调用kill,但是有没有办法根据名称查找进程?(在Windows中)

例如,我希望能够做这样的事情。

p, perr := os.FindProcessByName("Itunes")
if perr != nil {
    fmt.Println(perr)
}
p.Kill()

我只需要在Windows上工作即可。

卡列布

它不是很漂亮,但是您可以使用w32绑定:(github.com/AllenDang/w32)

package main

import (
    "fmt"
    "github.com/AllenDang/w32"
    "unsafe"
)

func GetProcessName(id uint32) string {
    snapshot := w32.CreateToolhelp32Snapshot(w32.TH32CS_SNAPMODULE, id)
    if snapshot == w32.ERROR_INVALID_HANDLE {
        return "<UNKNOWN>"
    }
    defer w32.CloseHandle(snapshot)

    var me w32.MODULEENTRY32
    me.Size = uint32(unsafe.Sizeof(me))
    if w32.Module32First(snapshot, &me) {
        return w32.UTF16PtrToString(&me.SzModule[0])
    }

    return "<UNKNOWN>"
}

func ListProcesses() []uint32 {
    sz := uint32(1000)
    procs := make([]uint32, sz)
    var bytesReturned uint32
    if w32.EnumProcesses(procs, sz, &bytesReturned) {
        return procs[:int(bytesReturned)/4]
    }
    return []uint32{}
}

func FindProcessByName(name string) (uint32, error) {
    for _, pid := range ListProcesses() {
        if GetProcessName(pid) == name {
            return pid, nil
        }
    }
    return 0, fmt.Errorf("unknown process")
}

func main() {
    fmt.Println(FindProcessByName("chrome.exe"))
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法在 Windows 操作系统中快速找到隐藏的进程?

来自分类Dev

有没有办法在64位Windows 7上找到rootkit

来自分类Dev

有没有办法不断显示Cygwin中的Windows进程

来自分类Dev

有没有办法在Windows上运行LibreSSL?

来自分类Dev

有没有办法在Windows上运行LibreSSL?

来自分类Dev

有没有办法在Windows上的ttk.OptionMenu中更改特定选项的颜色?

来自分类Dev

有没有办法在Windows上的Apache procrun中设置本地JAVA_HOME?

来自分类Dev

Windows中的不朽进程;没有办法杀死它

来自分类Dev

有没有办法附加到远程进程?

来自分类Dev

有没有办法在我的系统上找到所有隐藏的TrueCrypt容器?

来自分类Dev

有没有办法让py.test忽略在子进程上引发的SystemExit?

来自分类Dev

有没有办法在矩阵中找到连接?

来自分类Dev

有没有办法在PyCollada几何图形上找到纹理的文件路径?

来自分类Dev

有没有办法在 Python 上使用“openpyxl”找到迭代的当前行?

来自分类Dev

有没有办法在Android中获取当前进程名称

来自分类Dev

有没有办法捕获进程中的堆栈溢出?C ++ Linux

来自分类Dev

有没有办法在Unix / Linux中拦截进程间通信?

来自分类Dev

有没有办法挂起属于外壳A并在外壳B中前台的进程?

来自分类Dev

有没有办法挂起属于外壳A并在外壳B中前台的进程?

来自分类Dev

有没有办法在子进程中运行节点任务?

来自分类Dev

有没有办法在linux中获得进程的描述?

来自分类Dev

有没有办法使用css在html中隐藏没有id或class的元素?

来自分类Dev

有没有办法找到从文件中读取的当前行的行号?

来自分类Dev

有没有办法在JavaScript中找到变量在对象中的位置

来自分类Dev

有没有办法找到嵌套列表中的项目是否存在?

来自分类Dev

有没有办法在Windows 10上对Windows的组织进行编程?

来自分类Dev

有没有办法在没有事件的情况下找到鼠标在屏幕上的当前位置?

来自分类Dev

有没有办法在coffeescript上运行柏拉图

来自分类Dev

有没有办法关闭TDBRadioGroup上的字幕

Related 相关文章

  1. 1

    有没有办法在 Windows 操作系统中快速找到隐藏的进程?

  2. 2

    有没有办法在64位Windows 7上找到rootkit

  3. 3

    有没有办法不断显示Cygwin中的Windows进程

  4. 4

    有没有办法在Windows上运行LibreSSL?

  5. 5

    有没有办法在Windows上运行LibreSSL?

  6. 6

    有没有办法在Windows上的ttk.OptionMenu中更改特定选项的颜色?

  7. 7

    有没有办法在Windows上的Apache procrun中设置本地JAVA_HOME?

  8. 8

    Windows中的不朽进程;没有办法杀死它

  9. 9

    有没有办法附加到远程进程?

  10. 10

    有没有办法在我的系统上找到所有隐藏的TrueCrypt容器?

  11. 11

    有没有办法让py.test忽略在子进程上引发的SystemExit?

  12. 12

    有没有办法在矩阵中找到连接?

  13. 13

    有没有办法在PyCollada几何图形上找到纹理的文件路径?

  14. 14

    有没有办法在 Python 上使用“openpyxl”找到迭代的当前行?

  15. 15

    有没有办法在Android中获取当前进程名称

  16. 16

    有没有办法捕获进程中的堆栈溢出?C ++ Linux

  17. 17

    有没有办法在Unix / Linux中拦截进程间通信?

  18. 18

    有没有办法挂起属于外壳A并在外壳B中前台的进程?

  19. 19

    有没有办法挂起属于外壳A并在外壳B中前台的进程?

  20. 20

    有没有办法在子进程中运行节点任务?

  21. 21

    有没有办法在linux中获得进程的描述?

  22. 22

    有没有办法使用css在html中隐藏没有id或class的元素?

  23. 23

    有没有办法找到从文件中读取的当前行的行号?

  24. 24

    有没有办法在JavaScript中找到变量在对象中的位置

  25. 25

    有没有办法找到嵌套列表中的项目是否存在?

  26. 26

    有没有办法在Windows 10上对Windows的组织进行编程?

  27. 27

    有没有办法在没有事件的情况下找到鼠标在屏幕上的当前位置?

  28. 28

    有没有办法在coffeescript上运行柏拉图

  29. 29

    有没有办法关闭TDBRadioGroup上的字幕

热门标签

归档