草庐IT

c++ - 验证 Win32 窗口句柄

给定一个HWND类型的句柄是否可以确认句柄代表一个真实的窗口? 最佳答案 有一个函数IsWindow可以完全满足您的要求。BOOLisRealHandle=IsWindow(unknwodnHandle);看thislink获取更多信息。 关于c++-验证Win32窗口句柄,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9667/

.net - .NET 中的窗口句柄可以更改它的值吗?

在.NET进程的生命周期中,System.Windows.Forms.Form的句柄,假设是Application.Run(form)中使用的主窗体code>实际上改变了它的值,即如果在不同的进程中使用句柄的值,例如IntPtrhandle=User32.FindWindow(null,"Name"),是否存在.NET运行时可能使该句柄无效的情况?编辑我需要知道句柄,因为我想为IPC使用SendMessage和WM_COPYDATA等。 最佳答案 只要窗口存在,窗口句柄就保证有效并且不会被重复使用。它本质上是索引,全局有效并且通常表

windows - 什么会导致节句柄泄漏?

这是mypreviousquestion.的后续问题如thisanswertomypreviousquestion中的建议,我使用ProcessExplorer分析了我的应用程序用来查找句柄泄漏的句柄列表。泄漏的句柄属于Section类型。节句柄到底是什么,它用在什么地方,什么会导致节句柄泄漏?我没有在我的代码中使用内存映射文件。 最佳答案 引用MarkRussinovich的InsideWindows2000(现在称为WindowsInternals),Thesectionobject,whichtheWin32subsystem

c# - Directory.Exists 保留目录句柄几秒钟

所以我正在尝试对负责共享目录的代码进行单元测试/集成测试。所以我创建了共享驱动器,然后检查目录是否存在。首先在本地,然后通过它的共享名称。Assert.IsTrue(Directory.Exists(testSharePath));Assert.IsTrue(Directory.Exists(String.Format(@"\\{0}\{0}",System.Environment:MachineName,testShareName));在此之后,我当然想通过删除我刚刚创建的目录来清理自己。然而,这不起作用,因为“......它被另一个进程使用。”经过一些试验,我发现如果我删除第二个断

ShgetFileInfo不返回正确的句柄到图标

我在用着SHGetFileInfo获取文件夹和不同文件类型的图标的功能。根据MSDN该函数的呼叫应从背景线程和呼叫组件对象模型(COM)之前完成,必须使用共序化或烯烃来初始化。我的代码看起来像这样:publicvoidSetHlinkImage(stringpath){Shell32.OleInitialize(IntPtr.Zero);Tasktask=Task.Factory.StartNew(()=>{LoadIcons(path);});}privatevoidLoadIcons(stringpath){image=GetHlinkImage(path);if(OwnerControl

.net - 句柄和线程有什么区别?

我在Windows任务管理器->系统block下的性能选项卡中看到,我看到进程、线程和处理统计信息。有人能告诉我什么是句柄吗(包括开发观点在内的技术信息)? 最佳答案 线程是进程的一部分,在自己的执行空间内运行,一个进程中可以有多个线程。在它的帮助下,操作系统可以并行执行多个任务(取决于机器的处理器数量。句柄是一个通用的操作系统术语,可以是操作系统对象的票证。每个句柄都是唯一的并标识每个对象。线程是一个OS对象,您创建的每个线程都会为它取回一个句柄。在Windows下,线程句柄与线程ID不同,就像文件句柄与文件名不同一样。线程句柄是

windows - "too many"是多少个正在使用的 Windows 句柄?

我知道这个问题的答案可能取决于注册表设置和Windows版本,如果没有足够的内存,可能还取决于RAM的数量。对于这个问题,假设服务器有足够的RAM(3+GiB)。如果一个应用程序(在本例中为第3方应用程序)每小时泄漏几百个句柄,那么在其他应用程序遇到麻烦之前,该应用程序总共可以泄漏多少个句柄?我所说的“问题”是指,例如,无法启动线程、无法打开文件等等。我已经看到一些服务器(轻负载)在一个进程(通常是数据库进程)使用几万个句柄的情况下运行得很好,所以旧的10000个句柄限制显然不是这里的问题。(无论如何,这是每个进程的限制,所以不会影响我的应用程序,因为它远低于该点。)有人可以回答这个问

windows - 文件句柄上的 WaitForSingleObject?

当您在使用CreateFile()或_get_osfhandle()创建的句柄上调用WaitForSingleObject()时会发生什么?出于不值得解释的原因,我想使用WaitForSingleObject()来等待我用_get_osfhandle(fd)创建的HANDLE,其中fd来自对_open()的常规调用。这可能吗?我在实践中尝试过,在某些机器上它按预期工作(HANDLE始终处于信号状态,因为您可以从中读取更多数据),而在某些机器上WaitForSingleObject()如果你愿意,将无限期地阻止。WaitForSingleObject()的MSDN页面说它处理的唯一受支持

windows - EnumWindows 返回句柄的顺序有意义吗?

从几个初步测试看来EnumWindows总是以相反的实例化顺序返回窗口,即最近实例化的窗口最先。这是一个有效的观察吗?如果是这样,是否适用于所有版本的Windows?这是一个可靠的假设吗,即该行为是否记录在某处?上下文:我正在处理这样一种情况,我正在触发第三方应用程序打开几个非模态窗口,我需要在这些窗口打开后向它们发送一些窗口消息,但我没有可靠的方法来识别它们,因为它们的窗口类和标题都不会不同,而且我也不知道它们的预期坐标。但是,如果我可以依赖EnumWindows的上述行为,我可以简单地使用EnumWindows返回的第一个句柄,其类和标题符合我的期望。这仍然留下了一些假设的循环漏洞

解决SQL Server安装失败并报错“等待数据库引擎恢复句柄失败”

在安装SQLServer时遇到各种问题是很常见的。其中之一是在安装过程中出现错误消息:“等待数据库引擎恢复句柄失败”。这个错误通常表示在连接到数据库引擎时发生了问题。在本文中,我们将探讨如何解决这个问题并成功安装SQLServer。在解决这个问题之前,我们首先需要了解一些基本信息。SQLServer是一种关系型数据库管理系统,用于存储和检索数据。它使用数据库引擎来处理数据库操作。当我们安装SQLServer时,系统会尝试连接到数据库引擎,如果连接失败,则会出现上述错误消息。以下是一些可能导致此错误的常见原因和相应的解决方法:确保系统满足要求:在安装SQLServer之前,请确保您的系统满足SQ