草庐IT

c++ - 在 C++ 中获取所有打开窗口的列表并存储它们

我目前正在尝试获取所有打开的窗口的列表并将它们存储在一个vector中。我一直在查看代码,以至于解决方案可能非常简单,但如果没有全局变量(我想避免),我似乎无法完成它。代码如下:#include"stdafx.h"#include"json.h"#includeusingnamespacestd;vectorvec;BOOLCALLBACKspeichereFenster(HWNDhwnd,LPARAMsubstring){constDWORDTITLE_SIZE=1024;TCHARwindowTitle[TITLE_SIZE];GetWindowText(hwnd,windowTi

c++ - CopyMemory 复制比 VirtualAlloc 分配更多的字节怎么办

请看这段代码,在我的机器上,它不会引发错误,但我不明白为什么我可以复制比VirtualAlloc分配的更多的字节,这个操作安全吗?PBYTEpNewBuffer=(PBYTE)VirtualAlloc(NULL,3,MEM_COMMIT,PAGE_READWRITE);BYTEFlagThree[]={'a','b','c','d','e','f','g'};CopyMemory(pNewBuffer,FlagThree,sizeof(FlagThree));我分配了3个字节,但复制到内存7个字节。 最佳答案 这不是未定义的行为。事

windows - 函数 Hook 实际上是如何工作的? WinAPI, C++

我正在将我的DLL注入(inject)到一个进程中,然后像这样Hook一个函数:(recv)BOOLHookFunction(LPCWSTRmoduleName,LPCSTRfuncName,LPVOIDfuncProxy,unsignedchar*lpBackup){BYTEjmp[6]={0xe9,0x00,0x00,0x00,0x00,0xc3};DWORDfuncAddr=(DWORD)GetProcAddress(GetModuleHandle(moduleName),funcName);DWORDprev;VirtualProtect((LPVOID)funcAddr,6,

python - CTRL+ALT+DEL 在 win32api 和 python 中不起作用

我正在使用python来虚拟运行键盘,但使用以下代码执行Ctrl+Alt+Del不起作用,Ctrl+Shift+Tab或其他组合键以这种方式工作。我所指的十六进制代码列表来自hereimportwin32apiimportwin32conimporttimewin32api.keybd_event(0xA2,0,0,0)time.sleep(.01)win32api.keybd_event(0xA4,0,0,0)time.sleep(.01)win32api.keybd_event(0x2E,0,0,0)time.sleep(.04)win32api.keybd_event(0xA2,

c++ - 将文件移动到不同的目录

我在尝试将多个目录中的文件复制到一个目录中时遇到了噩梦。基本上,我收到了一个数据集,其中包含各个文件夹中的各个png文件。我想要的是包含所有png文件的一个文件夹。我想用代码来做这个的原因是数据集有大约。6000个文件夹,所以手动操作不切实际。这可以用WinApi完成,因为我不需要制作这个跨平台。我只想合并该死的文件夹。到目前为止,我已经设法将png文件的路径全部保存到一个.txt文件中,并保存在每一行中。示例:C:/Users/rudwi/Documents/Visual_Studio_2017/Projects/ExtractPhotos/ExtractPhotos/lfw-dee

python - 在 Windows 10 上安装 gtk3 + glade

我是python的新手,我一直在尝试安装gtk3以与glade一起使用以使用Python2.7构建GUI。我已经成功安装了Glade,但是我在查找和运行gtk3forwindows时遇到了一些主要问题。我访问了gtkwebsite并按照MSYS2安装程序的说明进行操作,但是当我尝试使用anaconda提示符或导入gtk进行conda安装时,我收到错误消息,指出没有名为gtk的模块。我还从tarnyko下载了gtk3的win64zip。并尝试将解压缩的文件放入Lib>site-packagesad然后尝试conda安装和导入,但仍然没有成功。我在64位Windows10操作系统上运行。有

c++ - Qt Widget应用程序 "Library not registered"错误

我最近刚开始使用Qt并创建了一个简单的QtWidgets应用程序。当我构建并运行应用程序时(即使我创建了一个没有新代码的新项目),我收到以下错误消息:mincore\com\oleaut32\dispatch\ups.cpp(2128)\OLEAUT32.dll!74445072:(caller:7444FE4F)ReturnHr(1)tid(188)8002801DLibrarynotregistered.mincore\com\oleaut32\dispatch\ups.cpp(2128)\OLEAUT32.dll!74445072:(caller:7444FE4F)ReturnH

c++ - 当同名文件夹已存在时,如何使用 boost 创建新文件夹?

我正在使用boost::filesystem创建一个空文件夹(在Windows中)。假设我要创建的文件夹的名称是新建文件夹。当我运行以下程序时,会按预期创建一个具有所需名称的新文件夹。当第二次运行程序时,我想创建新文件夹(2)。虽然这是一个不合理的期望,但这就是我想要实现的目标。有人可以指导我吗?#includeintmain(){boost::filesystem::pathdstFolder="NewFolder";boost::filesystem::create_directory(dstFolder);return0;}预期输出: 最佳答案

c++ - 为什么我们从 MultiByte 转换为 WideChar?

我习惯于处理ASCII字符串,但现在使用UNICODE我对某些术语感到非常困惑:什么是多字节字符,什么是widechar有什么不同?多字节是指内存中包含多于一个字节的字符吗和widechar只是一种数据类型来表示吗?为什么我们从MultiByteToWideChar转换和WideCharToMultiByte?如果我声明如下:wchar_t*wcMsg=L"مرحبا";MessageBoxW(0,wcMsg,0,0);如果我定义了UNICODE,它会正确打印消息但是为什么我没有从WideCharToMultiByte在这里转换??我的项目中的字符集有什么区别:_MBCS和UNICOD

c++ - DLL的普通只读存储器

我有两个控制台应用程序A1.exeA2.exe和一个DLL。两者都以Debug模式运行,优化关闭。有一个全局constchar*变量,我从这个dll导出并在A1和A2中导入://dll.hextern"C"{DLLEXPORTexternconstchar*str;}//dll.cppconstchar*str="qwerty123";我希望在DLL的只读部分中创建“qwerty123”,并且我希望Windows的内存管理器会将带有此字符串的实际内存映射到A1.exe的某个虚拟内存地址和A2.exe的不同虚拟地址并且不要创建真实的数据拷贝。我希望该dll中的所有函数定义也会发生这种情况