草庐IT

windows - 如何使用设备实例句柄获取 USB 设备句柄?

我正在使用CM_Locate_DevNode()、CM_Get_Child()和CM_Get_DevNode_Registry_Property()API枚举设备管理器树。我能够获取设备实例句柄。使用该句柄,我试图获取设备句柄以查询设备的字符串描述符。设备实例句柄和设备句柄是否相同,或者有什么方法可以从设备实例句柄中获取设备句柄? 最佳答案 Arebothdeviceinstancehandleanddevicehandlesameoristhereanywaytogetthedevicehandlefromdeviceinstan

c++ - 如何使用 C++ 检查窗口句柄是否在 Win32 中以管理模式运行?

这个问题在这里已经有了答案:Howtocheckifaprocesshastheadministrativerights(2个答案)关闭8年前。我有应用程序的窗口句柄。如何确定应用程序是否在管理员模式下运行?

c++ - 内核态和用户态共享内存。如何共享句柄?

我正在尝试在用户进程和内核之间使用共享内存。选项一-让内核创建部分并让用户模式应用程序按名称“Global\my_mem”打开内存。它仅在只读模式下工作。当我尝试使用FILE_MAP_WRITE打开部分时,它拒绝访问(5)。不确定如何授予访问权限或修改DACL。选项二-通过IOCTL传回句柄。这是有问题的,因为在KERNEL中打开的部分句柄是0xFFFFFFFF80001234。我的理解是,设置了任何高位的句柄不能在用户模式下使用。特别是如果应用程序是32位的:)最初我预计该部分句柄会有点类似于内核文件句柄,我将能够使用它。在内核态和用户态之间建立共享内存channel的正确方法是什么

c++ - 检查文件是否被进程文件句柄锁定

鉴于我有所有进程的所有文件句柄的列表,我如何找出这些句柄中的哪些实际上锁定了文件?据我所知,我可以简单地尝试打开文件并尝试获取所有权限,如果出现问题,我会知道它已被锁定。但这听起来效率极低。我的意思是我已经有了句柄没有办法检查句柄有哪些权限吗?我希望看到一个适用于WindowsXP及更高版本的解决方案。我已经搜索过GetFileInformationByHandleEx功能,但我找不到任何关于访问权限的信息。:/编辑:我不需要关于文件锁的实时信息。我计划处理的文件要么被锁定,直到某些应用程序关闭,要么根本不被锁定。 最佳答案 此问题

c# - 给定 x,y 点,如何获取前景窗口中不存在的控件的窗口句柄?

我知道如果控件驻留在可见窗口中,WindowFromPoint可用于获取控件的句柄。我的要求是获取控件详细信息,即使应用程序的窗口不在前台(它没有最小化,只是它可以在另一个窗口后面)。是否有可用的WINAPI函数可以为我执行此操作?如果没有,有人可以建议我如何去做这件事,但不符合:1.枚举特定背景窗口中的所有控件,2.然后得到他们的界限,3.然后比较这些边界是否包含x,y坐标? 最佳答案 您正在寻找GetWindow可用于枚举所有窗口的API函数,然后是GetWindowRect功能。

windows - WM_GETICON 有时不返回图标句柄

我正在尝试显示所有窗口标题,包括相应的图标,就像Windows任务管理器所做的那样。这仅在一定程度上有效-虽然我能够获得窗口的标题栏文本,但该图标并不总是可用。为了获取图标,我将WM_GETICON消息传递给SendMessage(source):PublicConstWM_GETICONAsUInteger=&H7FPublicFunctionGetWindowIcon(ByValWindowHandleAsIntPtr)AsIconDimIconHandleAsIntPtr=SendMessage(WindowHandle,WM_GETICON,0,0)IfNotIconHandl

c++ - 从另一个应用程序窗口获取焦点控件的句柄

我有一个应用程序有一些控件(按钮、编辑等)的窗口。我需要模拟用户事件(如Tab单击和输入文本)。我正在使用keybd_event在制表符排序控件(编辑框)之间移动焦点并向它们输入文本。但我需要知道当前焦点控件的句柄(例如从中获取文本或更改其样式)。我该如何解决?附言我现在正在编写Delphi,但这并不重要(Win-API无处不在)。 最佳答案 请参阅GetFocus中的备注部分'用于解释以下示例的文档。functionGetFocus:HWND;varWnd:HWND;TId,PId:DWORD;beginResult:=windo

windows - 如何获取弹出窗口的句柄(WebdriverIO)

我对自动化测试非常陌生,目前我完全被以下问题所困扰:我打开了一个网页(第一个窗口)在同一测试中,我调用.newWindow(secondwindow)并在该窗口中执行一些操作。最后一个Action打开新的弹出窗口(popupwindow)。我需要的是将焦点设置在弹出窗口上。根据WebdriverIOAPI,我可以使用.switchTabhttp://webdriver.io/api/window/switchTab.html但是为了能够切换到弹出窗口,我必须指示句柄,但我不明白如何获取弹出窗口的句柄:(那是我的代码://thisisthepartwhereIhavealreadysec

c++ - Windows 句柄的 Getter

所以我已经学习C++几个月了,我在使用IDE时遇到了一件奇怪的事情。(JetbrainsCLionFTW!)我的IDE可以为成员生成getter,自动确定类型、const与否以及其他关键字。显然这一代并不完美,所以我发现自己通常不会使用这个功能。所以目前我专注于WindowsAPI,它需要使用句柄。因此,当我为句柄(HINSTANCE、HWND、HDC等)生成setter/getter时,会发生一些非常奇怪的事情。假设我有一个定义如下的成员:HDCm_hDeviceContext;然后当我的IDE生成一个getter时,它看起来像这样:constHDC__*getDeviceConte

windows - 句柄分配在哪里?

我想知道是否可以使用WinDbg来了解导致分配句柄的调用堆栈。例如:#include#include#includeusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){cout构建此示例并在WinDbg中启动它后,是否有可能获得分配句柄的调用堆栈,在该行上方的示例中:HANDLEh=CreateEvent(NULL,FALSE,FALSE,NULL);我正在研究!handle命令,但到目前为止没有任何进展。这与处理泄漏分析有关。我知道!htrace-enable和!htrace-diff但这是不同的使用场景(除非有某种组合方式或其他使用