草庐IT

c++ - CreateFile 和长设备名

我正在使用CreateFile打开设备。一切正常,直到设备名称太长。在文档中说:IntheANSIversionofthisfunction,thenameislimitedtoMAX_PATHcharacters.Toextendthislimitto32,767widecharacters,calltheUnicodeversionofthefunctionandprepend"\\?\"tothepath.Formoreinformation,seeNamingFiles,Paths,andNamespaces.我正在尝试使用CreateFileW并将“\\?\”添加到路径中,但

c++ - SetDllDirectory 因某些 unicode 符号而失败

我正在使用SetDllDirectory(实际上是SetDllDirectoryW)从特定目录加载一些延迟加载的库。就像if(SetDllDirectory(directory.c_str())==0){ERROR_MSG("Failedtosetthecurrentdlldirectory[%d]\n",GetLastError());}所以一切正常,大多数时候,"f:/source/trunk11"正常等等但是当使用"f:/source/trunkGesthießes!№;%()_@#$^&"调用时,我从GetLastError得到了ERROR_INVALID_PARAMETER。

c++ - 检查给定设备 ID 是否存在 Windows 驱动程序

我正在使用C++编写Windows库。该库应该能够检查系统上是否安装了特定设备的设备驱动程序。所以我正在寻找一种方法来检查是否为已知的DeviceID安装了驱动程序。.到目前为止,我找到了这些信息:SetupDiBuildDriverInfoList列出给定设备的可用驱动程序。但是,我必须提供的不仅仅是设备ID。SetupDiGetClassDevs似乎返回了我调用SetupDiBuildDriverInfoList所需的内容,但它仍然没有将设备ID作为输入。它可能需要设备设置/接口(interface)类的GUID,但如果我理解正确的话,特定于供应商的驱动程序没有这样的GUID。它还

c++ - 子进程窃取焦点。如何在不打扰用户的情况下取回它?

我从控制台应用程序创建了子进程CreateProcess(NULL,command,NULL,NULL,TRUE,0,NULL,NULL,&in,&out);在哪里command是我运行pvw32img.jpg的应用程序的命令行(pictView显示一些图像)。in是一个STARTUPINFO结构(我尝试了STARTF_USESHOWWINDOW标志,但运气不好,pictView窃取了它的一些进程的焦点)我试着给pictView一些时间,然后请将焦点收回Sleep(1000);SwitchToThisWindow(hwnd,TRUE);我获得了焦点(光标在我的控制台中再次闪烁),但是任

c++ - 在 WinAPI 中使用资源名称

在WinAPI中,您可以通过FindResource访问资源和LoadResource.根据thedocumentationforFindResource,您可以指定资源的名称:lpName[in]Type:LPCTSTRThenameoftheresource.Alternately,ratherthanapointer,thisparametercanbeMAKEINTRESOURCE(ID),whereIDistheintegeridentifieroftheresource.Formoreinformation,seetheRemarkssectionbelow.我有两个问题:

c++ - 如何使用 SetWinEventHook() 函数获取事件窗口更改消息

我一直在做一个需要检测当前事件窗口并连续获取事件窗口标题的项目。谁能解释一下如何使用SetWinEventHook()函数获取ActiveWindowchanged消息。[我使用带有计时器的GetForegroundWindow()函数来获取事件窗口。由于计时器的原因,该方法不是很准确。所以我需要将它与SetWinEventHook()函数一起使用。有人可以解释我该怎么做吗?]hEvent=SetWinEventHook(EVENT_SYSTEM_FOREGROUND,EVENT_SYSTEM_FOREGROUND,NULL,WinEventProcCallback,0,0,WINEV

c++ - 屏幕捕获无法使用 C++ 和 GDI 捕获整个屏幕

我通过网络进行了一些研究,找到了一些有用的代码。我稍微改变了它,试图捕获整个屏幕并生成一个缓冲区,我可以通过udp数据包发送它:#include#include#includevoidCapruteScreenAndSaveToFile(){uint16_tBitsPerPixel=24;uint32_tWidth=GetSystemMetrics(SM_CXSCREEN);uint32_tHeight=GetSystemMetrics(SM_CYSCREEN);//CreateHeaderBITMAPFILEHEADERHeader;memset(&Header,0,sizeof(H

c++ - 如何将 win32 窗口渲染为 opengl 纹理?

我希望能够在OpenGL纹理中渲染win32控件。为了能够对其进行3d转换。具体来说,我想嵌入InternetExplorer以在3D转换窗口中显示网页和视频。如何以足够快的方式将win32窗口渲染到纹理(我需要保持60fps)? 最佳答案 您可以通过多种方式来解决这个问题。在所有情况下,您都需要从目标窗口(GetDC、GetDCEx)获取设备上下文(DC)。然后,您可以直接读取像素(GetPixel);或将内容blit到您自己的DC(BitBlt),然后访问它(例如GetDIBits)。既然您想“嵌入”InternetExplor

c# - 从 C# 访问 Win32 C/C++ 结构成员

我正在使用某种Hook拦截本地dll或exe从C#执行的Win32API调用。在这种特殊情况下,我对user32.dll中的DrawText()感兴趣。它在Win32API中是这样声明的:INTWINAPIDrawTextW(HDChdc,LPCWSTRstr,INTcount,LPRECTrect,UINTflags)LPRECT结构具有以下签名(也在Win32API中):typedefstructtagRECT{LONGleft;LONGtop;LONGright;LONGbottom;}RECTLPRECT;LONG是32位系统上32位整数的typedef(不知道64位系统,此时

c++ - DuplicateHandle(),在第一个或第二个过程中使用?

WindowsAPIDuplicateHandle()http://msdn.microsoft.com/en-us/library/ms724251(VS.85).aspx需要复制对象句柄以及原始进程和要在其中使用重复句柄的其他进程的句柄。我假设如果我有两个不相关的进程,我可以在任何一个中调用DuplicateHandle(),只要我有可用的所需句柄吗?我的问题是关于使用管道在两个进程之间进行通信以通过事件实现这一点。在第一个过程中,我创建了CreateEvent()。现在我想在第二个进程中使用WaitForSingleObject()。如果我尝试在第一个进程中复制句柄,我需要先通过