- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
有没有使用 Go 获取 Windows 系统空闲时间的示例或方法?
我一直在查看 Golang 站点上的文档,但我想我错过了如何访问(和使用)API 来获取系统信息,包括空闲时间。
最佳答案
Go 的网站经过硬编码以显示 Linux 上标准库包的文档。你需要自己获取 godoc 并运行它:
go get golang.org/x/tools/cmd/godoc
godoc --http=:6060
然后在您的网络浏览器中打开 http://127.0.0.1:6060/
。
值得注意的是 syscall
包,它提供了用于访问 DLL 中的函数的工具,包括 UTF-16 帮助程序和回调生成函数。
对 Go 树进行快速递归搜索表明它没有专门用于 GetLastInputInfo()
的 API,因此除非我遗漏了什么,否则您应该能够调用该函数直接从 DLL 获取:
user32 := syscall.MustLoadDLL("user32.dll") // or NewLazyDLL() to defer loading
getLastInputInfo := user32.MustFindProc("GetLastInputInfo") // or NewProc() if you used NewLazyDLL()
// or you can handle the errors in the above if you want to provide some alternative
r1, _, err := getLastInputInfo.Call(uintptr(arg))
// err will always be non-nil; you need to check r1 (the return value)
if r1 == 0 { // in this case
panic("error getting last input info: " + err.Error())
}
您的案例涉及结构。据我所知,您可以重新创建平面结构(保持字段顺序相同),但您必须将原始中的任何 int
字段转换为 int32
,否则为 things will break on 64-bit Windows .咨询Windows Data Types page on MSDN对于适当的类型等价物。在你的情况下,这将是
var lastInputInfo struct {
cbSize uint32
dwTime uint32
}
因为这(就像 Windows API 中的许多结构一样)有一个 cbSize
字段,要求您使用结构的大小对其进行初始化,我们也必须这样做:
lastInputInfo.cbSize = uint32(unsafe.Sizeof(lastInputInfo))
现在我们只需将指向该 lastInputInfo
变量的指针传递给函数:
r1, _, err := getLastInputInfo.Call(
uintptr(unsafe.Pointer(&lastInputInfo)))
记得导入 syscall
和 unsafe
。
DLL/LazyDLL.Call()
的所有参数都是 uintptr
,r1
返回也是如此。 _
返回从不在 Windows 上使用(它与使用的 ABI 有关)。
由于我介绍了在 Go 中使用 Windows API 所需了解的大部分内容,而这些内容是通过阅读 syscall
文档无法收集到的,我还要说(这与上面的问题)如果一个函数同时有ANSI和Unicode版本,你应该使用Unicode版本(W
后缀)和包syscall
中的UTF-16转换函数最好的结果。
我认为这就是您(或任何人)在 Go 程序中使用 Windows API 所需的所有信息。
关于winapi - 使用 Golang 获取 Windows 空闲时间(GetLastInputInfo 或类似),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949444/
我需要您在以下方面提供帮助。近一个月来,我一直在阅读有关任务和异步的内容。 我想尝试在一个简单的 wep api 项目中实现我新获得的知识。我有以下方法,并且它们都按预期工作: public Htt
我的可执行 jar 中有一个模板文件 (.xls)。不需要在运行时我需要为这个文件创建 100 多个副本(稍后将唯一地附加)。用于获取 jar 文件中的资源 (template.xls)。我正在使用
我在查看网站的模型代码时对原型(prototype)有疑问。我知道这对 Javascript 中的继承很有用。 在这个例子中... define([], function () { "use
影响我性能的前三项操作是: 获取滚动条 获取偏移高度 Ext.getStyle 为了解释我的应用程序中发生了什么:我有一个网格,其中有一列在每个单元格中呈现网格。当我几乎对网格的内容做任何事情时,它运
我正在使用以下函数来获取 URL 参数。 function gup(name, url) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/,
我最近一直在使用 sysctl 来做很多事情,现在我使用 HW_MACHINE_ARCH 变量。我正在使用以下代码。请注意,当我尝试获取其他变量 HW_MACHINE 时,此代码可以完美运行。我还认为
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么
由于使用 main-bower-files 作为使用 Gulp 的编译任务的一部分,我无法使用 node_modules 中的 webpack 来require 模块code> dir 因为我会弄乱当
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我使用 Gridlayout 在一行中放置 4 个元素。首先,我有一个 JPanel,一切正常。对于行数变大并且我必须能够向下滚动的情况,我对其进行了一些更改。现在我的 JPanel 上添加了一个 J
由于以下原因,我想将 VolumeId 的值保存在变量中: #!/usr/bin/env python import boto3 import json import argparse import
我正在将 MSAL 版本 1.x 更新为 MSAL-browser 的 Angular 。所以我正在尝试从版本 1.x 迁移到 2.X.I 能够成功替换代码并且工作正常。但是我遇到了 acquireT
我知道有很多关于此的问题,例如 Getting daily averages with pandas和 How get monthly mean in pandas using groupby但我遇到
This is the query string that I am receiving in URL. Output url: /demo/analysis/test?startDate=Sat+
我正在尝试使用 javascript 中的以下代码访问 Geoserver 层 var gkvrtWmsSource =new ol.source.ImageWMS({ u
API 需要一个包含授权代码的 header 。这就是我到目前为止所拥有的: var fullUrl = 'https://api.ecobee.com/1/thermostat?json=\{"s
如何获取文件中的最后一个字符,如果是某个字符,则删除它而不将整个文件加载到内存中? 这就是我目前所拥有的。 using (var fileStream = new FileStream("file.t
我是这个社区的新手,想出了我的第一个问题。 我正在使用 JSP,我成功地创建了 JSP-Sites,它正在使用jsp:setParameter 和 jsp:getParameter 具有单个字符串。
在回答 StoreStore reordering happens when compiling C++ for x86 @Peter Cordes 写过 For Acquire/Release se
我有一个函数,我们将其命名为 X1,它返回变量 Y。该函数在操作 .on("focusout", X1) 中使用。如何获取变量Y?执行.on后X1的结果? 最佳答案 您可以更改 Y 的范围以使其位于函
我是一名优秀的程序员,十分优秀!