草庐IT

windows - 窗口属性 - 它们是如何实现的?

我很好奇这里是否有人知道Windows中窗口属性(SetProp、GetProp等)的实现细节的内部信息。SetProp@MSDNGetProp@MSDN例如,存储和查找是如何完成的? 最佳答案 警告:我很久以前看过这个,所以1)我的内存可能有误,2)它可能已经过时了,即使我没记错。当我查看时,我很确定它们是作为链接列表实现的,如果窗口有多个属性,则性能相当很差。 关于windows-窗口属性-它们是如何实现的?,我们在StackOverflow上找到一个类似的问题:

windows - 这是一个错误(Windows API)吗?

我有一个关于字符串规范化的问题,它已经得到解答,但问题是,我无法正确规范化需要3次击键的韩文字符输入“ㅁㅜㄷ”(来自击键“ane”),结果是“무ㄷ”而不是“묻”。输入“ㅌㅐㅇ”(来自击键“xod”),结果是“태ㅇ”而不是“탱”。这是Dean先生的回答,虽然它适用于我最初给出的示例......但它不适用于我上面引用的示例。如果您使用的是.NET,则可以执行以下操作:vars="ㅌㅐㅇ";s=s.Normalize(NormalizationForm.FormKC);在原生Win32中,对应的调用是NormalizeString:wchar_t*input="ㅌㅐㅇ";wchar_tout

windows - 注册表碎片整理程序

这个问题在这里已经有了答案:RewriteRegistryFileinWindows(3个答案)关闭9年前。这是出于好奇,但我见过几种(其中一些非常流行)名为注册表碎片整理程序的软件。虽然我可以看到它们提供的好处,但我很好奇您究竟是如何进行注册表碎片整理的?请注意,我不是在询问软件名称,只是对如何以编程方式完成的基本描述。我知道微软有磁盘碎片整理API。这是他们正在使用的吗?还是有“注册表碎片整理”api?

windows - 为什么我的 COM 工厂在程序生命周期内从未被释放?

我有一个nativeC++ATL进程内COM服务器。单独的测试程序调用CoInitialize(),调用CoCreateInstance(),然后在指针上调用Release(),然后调用CoUnitialize()并退出。如果我在VisualC++调试器下运行测试程序,调试CRT会报告一次内存泄漏,并且每次分配的编号都是相同的。我用了anallocationhook发现没有返回堆的对象是类工厂对象。所以基本上会发生以下情况:程序调用CoCreateInstance()COM内部调用DllGetClassObject()ATL实例化工厂并将所有权传递给调用者(COM内部)然后工厂永远不会

windows - 关于 Win32 ##Event## 同步对象的问题

先介绍一下应用场景:我有一个服务应用程序正在监视某物的状态,同时还有多个应用程序正在等待状态更改。一旦状态发生变化,每个应用程序将读取状态值(通过命名的FileMap对象)并执行相应的操作,然后等待状态再次发生变化。所以我使用了一个命名的事件对象来做同步工作。所有应用程序都在等待此事件被发出信号,并且服务应用程序将设置此事件以在该状态更改时被发出信号。我需要保证当状态改变时,每个等待的申请都会被释放并且只被释放一次!这两种方法我都试过了方法一创建手动重置事件;当状态改变时,先调用SetEvent,然后立即调用ResetEvent。方法二创建手动重置事件;当状态改变时,调用PulseEv

windows - 可以在 Win32 中创建私有(private)注册表吗?

我正在尝试开发一些东西,它需要一个分层数据库。有没有办法在Win32中创建自己的个人注册表,并使用注册表功能来填充和管理它? 最佳答案 没有,但是你可以使用真正的注册表。使用HKCU\Software\YourCompany\YourProduct。 关于windows-可以在Win32中创建私有(private)注册表吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4705

c++ - 线程模拟的多级使用

我在使用一些很久以前编写的执行线程级模拟和进程生成的类时遇到了一些问题。问题似乎是我对这些实用程序类的使用超出了其他任何人尝试使用它们的范围。第一个通过使用OpenThreadToken和DuplicateToken以及ImpersonateLoggedOnUser进行线程级模拟。第二次尝试使用CreateProcessAsUser和通过OpenThreadToken/DuplicateToken获得的token创建进程。我遇到的问题是:Thread1runninginIISwiththecorrectuserThread2thatiscreatedbyThread1-whichisi

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

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

c++ - 监视内核注册表更改

人们能否就我需要研究的主题给我一些建议(没有双关语意)以便能够做到这一点?我不是真正的Windows专家,但我能很快掌握新概念。我看到了MarkRussinovich和BryceCogswell写的进程监控程序:http://technet.microsoft.com/en-gb/sysinternals/bb896645它可以查看内核中注册表键值发生的所有事情。过去,我已经能够使用C#和用户级注册表访问来执行此类操作,但我无法使用从codeproject获得的包装器套件访问内核。人们可以帮助我了解我应该从哪里开始吗?我想我是在寻求更多有关Windows/OS方面的帮助。这样做的原因:

c - 如何将参数传递给 DLL 初始化(例如,通过 LoadLibrary 加载时)?

如何将参数传递给通过LoadLibrary加载的DLL的初始化函数?有可能吗?也就是说,无需诉诸某种导出函数或共享内存。 最佳答案 没有直接的方法。最简单的可能是通过环境变量。它们可以在使用setenv调用LoadLibray之前轻松设置,然后DLL(在同一进程中)可以使用getenv检索它们。 关于c-如何将参数传递给DLL初始化(例如,通过LoadLibrary加载时)?,我们在StackOverflow上找到一个类似的问题: https://stacko