草庐IT

windows - SW_MAXIMIZED 和无法最大化的应用

我正在使用ShellExecuteEx从我自己的应用程序启动应用程序。我的应用程序的一个功能是允许它启动的应用程序在打开时最大化......这在99%的时间里工作正常,因为我可以将SW_SHOWMAXIMIZED标志添加到SHELLEXECUTEINFO结构。现在,有些应用程序不允许自己最大化(标题栏区域的最大化按钮是灰色的)。在这组应用程序中,有些应用程序(如calc.exe)将忽略SW_MAXIMIZE标志并以默认大小启动。不幸的是,其他应用程序——比如charmap.exe——设法以最大化方式打开(因此看起来很奇怪)。我正在尝试确定是否(1)这是我必须忍受的那些特定应用程序中的错

c - 在 Windows 中发出枚举监视器

我的任务是计算连接到运行我的用户模式代码的计算机的当前监视器(屏幕)的数量:intnCnt=0;if(!EnumDisplayMonitors(NULL,NULL,countMonitorsProc,(LPARAM)&nCnt)){//Error}BOOLcountMonitorsProc(HMONITORhMonitor,HDChdcMonitor,LPRECTlprcMonitor,LPARAMdwData){int*pCnt=(int*)dwData;(*pCnt)++;returnTRUE;}它在大多数情况下都有效,但在某些系统上EnumDisplayMonitors返回FAL

c++ - 有什么方法可以使用 win32 API 调用获取 MachineGuid(不是从注册表中手动读取)?

有没有什么方法可以使用win32API调用获取MachineGuid(而不是从注册表中手动读取)? 最佳答案 您应该能够获得GUID使用WMIWin32_ComputerSystemProduct类。 关于c++-有什么方法可以使用win32API调用获取MachineGuid(不是从注册表中手动读取)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22013541/

c++ - keybd_event 表现出奇怪的行为

我正在尝试使用以下代码模拟回车键:keybd_event(VK_RETURN,0,0,0);keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);它在我的32位WindowsXP操作系统中运行良好,但是当我在Windows8x64机器上尝试时,模拟的是空格键而不是回车键。我应该怎么做才能得到正确的结果?我也尝试使用如下所示的SendInput,但我遇到了同样的问题。voidtypeKey(shortvirtualKey){INPUTip;ip.type=INPUT_KEYBOARD;ip.ki.wScan=0;ip.ki.time=0;ip.ki.dwE

c++ - DeviceIoControl 返回意外的物理扇区大小

我使用DeviceIoControl返回物理磁盘扇区的大小。它总是返回512个字节,直到最近它开始返回4096个字节。检查生成的STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR我发现逻辑和物理字节大小已经调换了位置-磁盘扇区的逻辑字节大小不应该总是大于或等于物理扇区大小吗?#include#include#include#pragmacomment(lib,"Kernel32.lib")intmain(){HANDLEhDevice;charcDisk='c';//GetmetadataabouttheC:\disk//Buildthelogicaldrivepa

windows - 以编程方式或从 Windows 中的命令行显示文件属性对话框

资源管理器,右键单击单个文件,属性...显示文件属性对话框。我希望有一种从命令行直接执行此操作的方法,这解释了我完全没有研究如何使用winapi执行此操作:) 最佳答案 回答我自己的问题。我从提供的链接中整理了这个脚本。可能有一种更直接的方法——它有一种科学怪人般的光环,但它确实有效。缺点是有一个hack可以保持对话框打开(sleep脚本),可以更改为两种不同的方法。该脚本将执行任何动词,并列出动词。用法:将脚本保存为shareGUI.js,用cscriptshareGUI.js调用例子:cscriptshareGUI.jsC:\p

c++ - 哪个 DLL 有 PathCchAppend?

我正在尝试有条件地使用(如果可用)函数PathCchAppend.我从headerpathcch.h中获得了函数签名。但是,当我尝试从SHLWAPI.DLL获取函数地址时,它失败了:autopca=GetProcAddress(GetModuleHandle(L"shlwapi.dll"),"PathCchAppend");使用Depends,我看到这个函数在这个DLL中不存在(我在Windows10上)。不存在任何pathcch.dll,因此也无法加载它。这个函数放在哪个DLL中?编辑:感谢答案。在这里,我找到了以下答案中提到的DLL名称:https://learn.microsof

c++ - 在 Windows 中渲染背景桌面的实时预览

我一直在看DXGIDesktopDuplicationSample在msdn上,它看起来非常好,但不清楚它是否适用于我想做的事情。我想做的是使用Win32Desktopapi's创建一个新桌面(CreateDesktop),然后切换到该桌面(SwitchDesktop),然后在该新桌面中,我想创建一个窗口并呈现原始桌面的实时预览。尽管名称如此,但在Win32意义上,DXGIapi似乎更与“屏幕”而非桌面相关。在我投入大量时间尝试实现此方法却发现它不起作用之前,我希望对这些API有更多了解的人可以插话并引导我朝着正确的方向前进。之前尝试使用其他常见的屏幕捕获方法执行此操作都失败了,因为图

c++ - 如何允许 SYNCHRONIZE 对所有进程的访问权限

我有一个Windows服务,我希望其他进程(不同用户的进程,一些具有低权限)等待它的句柄。意思是,Windows服务进程HANDLE上的其他进程WaitForSingleObject()。为了让其他进程能够等待服务进程,他们需要OpenProcess()和SYNCHRONIZE访问权限,但是我如何确保其他具有较低权限的进程可以获得SYNCHRONIZE访问权限???我可以强制我的进程(windows服务)允许对所有人进行SYNCHRONIZE吗? 最佳答案 我是这样解决的。使用SetSecurityInfo无效,因为用户本身没有访问

c++ - 鼠标锁定水平/垂直移动

我希望鼠标光标分别锁定在X或Y轴上的指定点上。我设法用低级鼠标proc和键盘proc实现了这一点(需要键盘proc作为用户希望鼠标跟随的移动的输入-垂直或水平)。但是,我的问题是-在锁定移动时,比如用F7水平-当我按下鼠标按钮或使用鼠标滚轮时,锁定移动会因为一些我无法理解的奇怪原因而被释放,我显然不想除非用户这么说(即按F6),否则它将被释放。这是代码,您可以检查它并查看我正在谈论的问题:#define_WIN32_WINNT0x0501#include#includeusingnamespacestd;boolblock=false;POINTp;HHOOKhHook,hHook2;