草庐IT

句柄泄露

全部标签

windows - 难道不能从线程 ID 获取句柄吗?

在经典著作《Win32中的多线程应用程序》第31页,有如下说法:Toenforcesecurity,itisnotpossibletoobtainahandlefromathreadID.但是,我知道有一个众所周知的API,即OpenThread,可以完成这项工作。这是本书的错误吗? 最佳答案 有问题的书MultithreadingApplicationsinWin32发表于1996年,早于OpenThread()所在的操作系统功能可用。所以,这本书已经过时了。上面的MSDN链接说OpenThread()需要WindowsXP/20

c++ - 如何在C/C++中创建一个新进程并在WinXp中获取这个新进程句柄?

我需要知道如何在C/C++代码中获取新创建进程的句柄。我对所有这些Microsoft库了解不多,我刚刚阅读了有关创建流程的两种方法。第一个是通过ShellExcecute调用,第二个是通过CreateProcess,但这些都没有重新生成句柄。我需要知道进程的句柄,因为我希望主线程在继续之前等待进程完成。最重要的是,我希望有人帮我编写一个如下所示的函数:HANDLEcreate_process(/*parameterssameasforShellExecute*/){...}请帮忙。 最佳答案 CreateProcess()返回包含进

c++ - 是否可以复制 GDI 句柄?

或者在我的特定情况下是Windows区域(HRGN)?更新:问题如下:我有一个对象集合,其中每个对象都可以包含一个HRGN。这些区域一旦获得就会在对象被销毁时释放。由于其中一些对象存储在std::vector中,因此我必须定义一个赋值运算符。到目前为止,我只是分配了那些HRGN,但这是一个错误。如果我复制这样的对象,每个对象都会尝试删除相同的区域,而其中一个将使用不存在的区域。 最佳答案 您不能复制HRGN句柄,但您可以使用CombineRgn获得拷贝功能。 关于c++-是否可以复制GD

windows - 为什么有些控件没有窗口句柄?

我想获得一些控件的窗口句柄来用它做一些事情(需要一个句柄)。控件位于不同的应用程序中。奇怪的是;我发现许多控件没有窗口句柄,例如Windows资源管理器中工具栏(?)中的按钮。只需尝试获取文件夹/搜索/(等)按钮的句柄。它只给了我0。所以..第一个问题:为什么有些控件没有窗口句柄?在他们心里,不都是控制着window吗?(只是谈论标准控件,就像我在Windows资源管理器中期望的那样,没有在Pane等上自定义绘制。)这引出了我的第二个问题:如果您无法获取它们的句柄,如何使用它们(例如使用EnableWindow)?非常感谢您的任何意见!编辑(附加信息):Windows资源管理器只是一个

c++ - 获取光标所在窗口的窗口句柄

我想知道在C++中是否可以获取光标当前位置下方窗口的窗口句柄。我正在开发一个可以截取部分屏幕截图的屏幕截图程序,我认为当您的光标位于该窗口上时,您可以通过按热键来截取该窗口的屏幕截图的功能将是有用的功能。有什么想法吗? 最佳答案 以下作品:POINTP;HWNDHandle;GetCursorPos(&P);Handle=WindowFromPoint(P); 关于c++-获取光标所在窗口的窗口句柄,我们在StackOverflow上找到一个类似的问题: ht

windows - 如何使用 JScript 获取进程的主窗口句柄?

JScript中有没有通过提供进程名称来获取进程主窗口句柄的方法?Process.MainWindowHandle属性仅适用于JScript.NET。经典JScript中有类似的东西吗? 最佳答案 我不确定这是否有效,只是尝试循环window.parent直到它未定义。有点像-varmainWindow=window;while(mainWindow.parent){mainWindow=mainWindow.parent;}你也有类似window.top的东西,它总是返回最顶层的窗口。但不确定是否所有浏览器都支持。

c# - 从 Win64 位的外部进程文件句柄获取文件名 - C#

谁能帮帮我我想获取与外部进程的文件句柄对应的文件名。目前,我只能在Win32位而非Win64位上做到这一点。在Windows64位中是否需要代码签名才能做到这一点?谢谢! 最佳答案 您必须将您的应用程序编译为AnyCPU(而非x86),因为在x64操作系统上只有x64进程可以访问其他x64进程。 关于c#-从Win64位的外部进程文件句柄获取文件名-C#,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

c - 如何在不知道其名称的情况下获取 JobObject 的句柄?

我的应用程序正在作业中运行。我想使用OpenJobObject获取此Jobobject的句柄,以便稍后使用此句柄。问题是,我不知道作业名称,将NULL传递给作业名称会返回错误87(参数不正确)。我是这样尝试的:HANDLEhandle=OpenJobObject(JOB_OBJECT_QUERY,FALSE,NULL);if(!handle)printf("\nError%d",GetLastError());elseprintf("\nOK");我也在MSDN上找到了这个:应用程序无法获得运行它的作业对象的句柄,除非它具有作业对象的名称。但是,应用程序可以使用NULL调用QueryI

c++ - 在 Windows 中执行 SetMonitorBrightness 函数时出现无效的监视器句柄错误 - C++

我正在Windows中编写程序,我想获得计算机显示器的亮度。我正在使用WindowsGetMonitorBrightness函数,但遇到了一些问题。到目前为止,这是我的代码:DWORDdw;HMONITORhMonitor=NULL;DWORDcPhysicalMonitors;LPPHYSICAL_MONITORpPhysicalMonitors=NULL;LPDWORDpdwMinimumBrightness=NULL;LPDWORDpdwCurrentBrightness=NULL;LPDWORDpdwMaximumBrightness=NULL;HWNDhwnd=FindWin

python - 我可以通过 socket.fromshare 重用套接字文件句柄吗?

我正在编写一个文件缓存服务器来为网络服务器保存静态文件的副本。每当Web服务器中的线程需要静态文件时,它都会打开一个到缓存服务器的套接字连接,并将socket.share()的结果+它想要的文件名发送给它。缓存服务器使用socket.share的结果通过socket.fromshare访问http客户端并发送静态文件的内容。然后它关闭它的http客户端套接字副本,以及线程与它的连接。我想知道使用socket.detach而不是socket.close是否会自动提高性能?socket.detach的文档是这样说的:Putthesocketobjectintoclosedstatewith