Articles of winapi

DWORD_PTR,INT_PTR,LONG_PTR,UINT_PTR,ULONG_PTR何时,如何和为什么?

我发现Windows有一些新的Windows数据types DWORD_PTR, INT_PTR, LONG_PTR, UINT_PTR, ULONG_PTR 你能告诉我什么时候,如何和为什么使用它们?

如何获得在Windows上插入USB设备的供应商ID和产品ID

我在Windows平台上使用Qt。 我想获得并显示从我的本地系统插入的USB设备的供应商ID和产品ID。 以下是我的完整源代码从USB设备获取供应商ID和产品ID。 当我运行我的QT应用程序,它不会给我任何错误。 所以我把USB设备插入系统。 但是我的打印语句显示如下结果 qDebug ()<<pDetData->DevicePath; 我得到的结果为0x4 我的源代码中是否有任何实现错误? 如果是这样,请指导我我做错了什么.. 我错过了其他function吗? 是否有可能根据我的源代码从USB设备获得供应商ID和产品ID(我的代码实现)? 请在下面find我的源代码 static GUID GUID_DEVINTERFACE_USB_DEVICE = { 0xA5DCBF10L, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }; HANDLE hInfo = SetupDiGetClassDevs(&GUID_DEVINTERFACE_USB_DEVICE,NULL,NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); if ( hInfo == INVALID_HANDLE_VALUE ) { qDebug ()<<"invalid"; } else { qDebug ()<<"valid handle"; […]

Win32:如何自定义绘制编辑控件?

我需要实现EM_SETCUEBANNER的function,其中文本提示出现在编辑控件中: 问题是,我不能使用公共控件的版本6,这是获得微软提供的提示横幅所需的。 我已经看着简单地更改编辑控件的文本,并将字体格式为 Dark Gray Italic Text 但它会抛出更改事件( 由更高的组件库提供的组件包装 ),我无法find一种方法来避免。 所以我反而要自定义绘制文本,当控件没有重点和空的时候绘制提示横条文本,否则依靠默认的绘画。 编辑控件不能很好地公开自定义绘图机制, 如ListView,TreeView和其他提供 。 其他人已经看过 ,但这似乎是一个几乎不可能完成的任务: 从现在看,我将不得不处理以下消息: WM_ERASEBKGND,WM_PAINT (出于显而易见的原因) WM_SETFOCUS,WM_KILLFOCUS (防止白色条显示 – 如上所述) WM_CHAR (处理和更新控件中的文本) 而且我还需要find一种方法来在控件中显示插入符号,因为我还没有find一种方法来让Windows为我做这件事,而不用画上我提到的白色条。 这将会非常好玩。 :翻白眼: 鉴于Windows编辑控件从来没有被定制绘制:有谁知道如何自定义绘制Windows编辑控件? 注意 :我也会接受解决我的问题的答案,而不是回答我的问题。 但是任何想要自定义绘制Edit控件的人都会遇到这个问题,可能会想要一个答案。

开发版本中与OutputDebugString相关联的开销

在发布版本中调用OutputDebugString是否有相当大的开销?

从C#中SetdllDirectory中指定的path加载dll

我是新的dotnet.I有一个dotnet dll通过使用DllImport加载一个c DLL。 我想把所有的DLL放在一个不同于应用程序位置的文件夹中。 我不想修改环境variables。 所以我用setdlldirectory API并通过Assembly.Loadfrom(..)加载我的C#程序集。 我通过validationGetDllDirectory(..)的值来检查SetdllDirectory是否工作正常。 但它既不加载该C#DLL也不C DLL从该文件夹。 我能够加载C# DLL通过指定Assembly.Loadfrom中的path。 但无法加载c的DLL。 提前致谢!!

如何使用VirtualAllocEx为代码洞穴腾出空间?

如何使用VirtualAllocEx为代码洞穴腾出空间? 我目前拥有一块很less有“可用空间”的软件,我读了VirtualAllocEx来制作这个空间。

获取Windows版本?

任何人都可以帮助我检测用户可能使用的Windows版本? 我已经看到了一些例子来做到这一点,但是他们没有更新Vista / 7操作系统。 另外,检测操作系统是否在x32或x64架构上运行会很有用。 提前致谢。

Windows上networking接口准备就绪的通知

如何在Windows XP下启动并准备好networking接口时收到通知? 就绪意味着接口已经通过DHCP获得了一个networkingIP地址,并准备使用。

如何在另一个进程的内存中searchstring?

目前我正在使用这个function,通过在互联网上阅读几个松散相关的问题拼凑起来。 我遇到的问题是,我第一次运行它返回了一个错误,但不幸的是,我一直无法重现它。 现在当我运行它时,它每次只返回0。 DWORD GetAddressOfString(char *input) { unsigned char *p = NULL; MEMORY_BASIC_INFORMATION info; HANDLE process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, _processID); for (p = NULL; VirtualQueryEx(process, p, &info, sizeof(info)) == sizeof(info); p += info.RegionSize) { if (info.State == MEM_COMMIT && (info.Type == MEM_MAPPED || info.Type == MEM_PRIVATE)) { char *buffer = new char[info.RegionSize]; SIZE_T bytesRead; ReadProcessMemory(process, […]

拖放到winapi

我有一个纯粹的Winapi应用程序,需要一些新的function。 其中之一将最好作为两个列表实现,您可以在列表之间拖放(多个)元素。 新function可以限制为一个对话框。 什么是最快捷的方式来实现呢? 一些想法: 纯Winapi(它是DetectDrag) 提供这一个对话框的单独的MFC或.NET DLL embeddedMicrosoft WebBrowser控件并使用JQuery 任何应该避免的选项? 任何更好的想法? 什么是最快实施? 任何指针如何开始?