草庐IT

c++ - Win32 鼠标和键盘组合

我需要在Win32中组合鼠标和键盘事件,例如Click+Shift或Click+Alt+Shift。例如(伪代码):caseWM_LBUTTONDOWN:if(Shift)//click+Shiftif(Shift&&Ctrl)//click+Shift+Ctrlif(Shift&&Alt)//click+Shift+Altbreak;我知道here和here的所有必要参数。但我不知道如何正确组合它们。 最佳答案 假设这是在您的winproc中:if(wParam&MK_SHIFT){if(wParam&MK_CONTROL&&wP

c++ - 在所有者绘制的列表框中禁用滚动条

我有一个所有者绘制的列表框,我向其中添加了很多项目(这需要时间),添加项目时,垂直滚动条不断变小,我想在开始添加时禁用滚动条然后重新启用它..我试过--LONGold_style=GetWindowLong(hPlayList,GWL_STYLE);LONGnew_style=old_style&~WS_VSCROLL;SetWindowLong(hPlayList,GWL_STYLE,new_style);SetWindowPos(hPlayList,HWND_TOP,lstRc.left,lstRc.right,lstRc.right-lstRc.top,lstRc.bottom-

c++ - InitializeSecurityContext (Schannel) 的 TLS 握手过程

我必须使用SSPI接口(interface)实现TLS握手过程。我的应用程序实现了客户端,正如我从here中看到的那样一般流程是:InitializeSecurityContext-第一次调用返回指向SecBufferDesc结构的指针。使用输出缓冲区调用发送(=WinSockAPI)函数。调用recv函数使用缓冲区再次调用InitializeSecurityContext。MSDN关于这些缓冲区的解释:"Oncallstothisfunctionaftertheinitialcall,theremustbetwobuffers.ThefirsthastypeSECBUFFER_TOK

c++ - 将嵌入资源保存到文件系统

我使用这段代码来加载嵌入式资源(位图图像​​)HRSRChResInfo=::FindResource(hInstance,MAKEINTRESOURCE(resourceId),RT_BITMAP);HGLOBALhRes=::LoadResource(hInstance,hResInfo);LPVOIDmemRes=::LockResource(hRes);DWORDsizeRes=::SizeofResource(hInstance,hResInfo);它工作正常。如何将它保存到文件C:\image.bmp?此代码仅创建空文件:HANDLEhFile=::CreateFile(L

C++ 加速键不起作用

我无法让加速器工作。我正在使用C++。在我的窗口设置并显示之后。MENUITEMINFOWmAbout;mAbout.cbSize=sizeof(MENUITEMINFO);mAbout.fMask=MIIM_TYPE|MIIM_ID;mAbout.wID=(UINT)ID_ABOUT;mAbout.fType=MFT_STRING;mAbout.dwTypeData=(LPWSTR)L"&About";InsertMenuItemW(HelpMenu,0,TRUE,&mAbout);我的菜单工作正常,调用我的“关于”框,没问题。现在,在消息循环之前,我加载加速器://Loadacce

c++ - 如何使用 Windows API 正确检查对文件的有效读/写访问?

我已尝试使用GetEffectiveRightsFromAcl执行此操作,但它不会为因我所属的组而被拒绝的文件返回正确的访问掩码。例如,我有一个文件,unreadable.txt。如果我拒绝当前用户对unreadable.txt的写入权限,访问掩码会正确显示我没有写入权限。但是,如果我改为拒绝“经过身份验证的用户”组的写访问权限,则访问掩码意味着我拥有完全访问权限(我没有)。我的替代方法是手动迭代Ace列表并将我的SID与每个条目进行比较,但我无法找到一种干净或简单的方法来检查Ace是否适用于某个组,以及当前用户是否属于那个小组。作为扩展,文件可能不存在(即它是一个新文件,即将被写入)

c++ - 这个 "CRT not initialized"错误是怎么回事?

我在VisualStudio2012Express(当然是桌面版)中创建了一个空的C++项目,并添加了一些随机的基本代码:#include#includetypedefstructexamplestruct{unsignedcharnum1;unsignedshortnum2;unsignedlongnum3;unsignedlonglongnum4;}EXAMPLESTRUCT;voidexamplefunction(unsignedlong*num,intnum2){*num+=num2;return;}intmain(intnArgs,char**pszArgs){EXAMPLE

c++ - 用于跟踪 CreateFile 调用的 Pin 工具

我制作了一个pin工具来转储CreatFilewin32调用(在我的例子中是CreateFileW)及其返回值。它看起来像这样:/*...*/VOIDImage(IMGimg,VOID*v){RTNcfwRtn=RTN_FindByName(img,"CreateFileW");if(RTN_Valid(cfwRtn)){RTN_Open(cfwRtn);RTN_InsertCall(cfwRtn,IPOINT_BEFORE,(AFUNPTR)CreateFileWArg,IARG_ADDRINT,"CreateFileW",IARG_FUNCARG_ENTRYPOINT_VALUE,

C++ 简单键盘记录器

我正在尝试使用WinAPI在C++中编写一个简单的键盘记录器。有没有办法让用户在哪个应用程序中输入捕获的击键?到目前为止,这是我的代码:#include#include#includeusingnamespacestd;intmain(){HWNDStealth;AllocConsole();Stealth=FindWindowA("ConsoleWindowClass",NULL);ShowWindow(Stealth,0);chari;while(1){for(i=8;i(i);fprintf(OUTPUT_FILE,"%s",&c);fclose(OUTPUT_FILE);}}}

c++ - EnumMonitors WinAPI 上的段错误

我正在编写代码来检查我的虚拟打印机是否已安装,为此我正在使用EnumMonitorswinapi,代码可以编译,但是当我尝试运行我的程序时,它崩溃了。调试我的程序时,我在这一行遇到了段错误:EnumMonitors(NULL,0,(LPBYTE)buffer,sizeof(buffer),&capacity,&returned);在.pro文件中,我添加了LIBS+="C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Lib\WinSpool.Lib"我可以做些什么来使EnumMonitorsWinAPI正常工作?我的代码:#include#incl