例如,考虑SendInput。签名看起来像这样:UINTWINAPISendInput(_In_UINTnInputs,_In_LPINPUTpInputs,_In_intcbSize);文档说:cbSize[in]Type:intThesize,inbytes,ofanINPUTstructure.IfcbSizeisnotthesizeofanINPUTstructure,thefunctionfails.既然函数已经使用了INPUT结构(并且可能对它的各个字段做了一些事情),难道它不应该事先知道结构的大小吗?我能想到的唯一原因是,这是一种奇怪的向后兼容性技巧,可以使旧库二进制文件
我尝试获取用户正在使用的文件夹的选定文件。我有以下代码已经在运行,但仅在桌面文件上运行:privatestringselectedFiles(){//getthehandleofthedesktoplistviewIntPtrvHandle=WinApiWrapper.FindWindow("Progman","ProgramManager");vHandle=WinApiWrapper.FindWindowEx(vHandle,IntPtr.Zero,"SHELLDLL_DefView",null);vHandle=WinApiWrapper.FindWindowEx(vHandle
我正在尝试使用winapi在Windows中获取当前窗口或事件窗口以及该窗口的进程名称。因此,我能够使用GetForegroundWindow()获取事件窗口,并且我正在使用OpenProcess()获取进程,问题是OpenProcess需要进程ID,所以虽然我可以使用GetProcessId(),但是这个进程接收HANDLE类型的窗口,而我有HWND类型的当前窗口。我已经尝试了一些东西,但没能成功。那么谁能告诉我如何使用HWND中的窗口获取进程ID?或者获取当前窗口的句柄??我将我的代码留在此处,以防有人看到可能对我有帮助的解决方案。我正在使用Qt和C++charwnd_title[
我有兴趣使用C#获取您计算机中的所有电源计划。我在想你也许可以使用APIPowerEnumerate以某种方式发挥作用:DWORDWINAPIPowerEnumerate(_In_opt_HKEYRootPowerKey,_In_opt_constGUID*SchemeGuid,_In_opt_constGUID*SubGroupOfPowerSettingsGuid,_In_POWER_DATA_ACCESSORAccessFlags,_In_ULONGIndex,_Out_opt_UCHAR*Buffer,_Inout_DWORD*BufferSize);但我不知道该怎么做,因为我
有一个“APIMonitor”程序,但似乎已停产。在我的系统上不起作用。有没有这样的工具,可以在Windows7x64上运行?我需要记录来自选定集合的API调用,最好是参数值。 最佳答案 我在http://www.rohitab.com/apimonitor使用API监控工具.它并没有被遗弃,作者似乎会定期发布更新,包括过去一年的一些更新。我发现它相对容易学习,并用它来发现我正在研究的Windows某些组件发出的API调用,以及其他调试任务。 关于windows-通缉:WinAPIcal
我一直在使用GetVersionEx它在运行Windows8.1的机器上失败。看了一些资料发现GetVersionEx从8.1版本开始就被弃用了。我想问一下在哪里可以找到已弃用API的完整列表,因为我不想再使用它了。编辑:我不是在问用什么代替GetVersionEx,我是在问已弃用API的完整列表。 最佳答案 Microsoft已在OperatingsystemversionchangesinWindows8.1andWindowsServer2012R2中描述了更改.在文章的左侧,您可以导航到与Windows8.1andWindo
Win32派对我来晚了,这里有一大堆函数,例如_tprintf、TEXT(),还有像strsafe.h这样的库具有StringCchCopy()、StringCchLength()等函数。基本上,Win32API在C之上引入了一堆额外的函数和类型这可能会让不常使用Win32的C程序员感到困惑。我在MSDN上找到这些类型和函数的定义没有问题。但是,我确实无法找到有关何时以及为何应使用它们的指南。我有两个问题:在使用Win32编程时,使用Microsoft在标准C之上提供的所有这些类型和特殊函数有多重要?取消所有标准C函数和类型并完全使用Microsoft包装器是否被认为是好的做法?可以将
我正在使用winapi来处理网页对话框,除了excelvba编辑器之外,我无法访问visualstudio或其他工具。另外,我对winapi没有很好的经验。我想单击此网页对话框的某个按钮并输入一些文本。使用winapi我可以找到它的句柄并尝试枚举子窗口,但收到的信息不正确。'searchforchildwindowacceptbuttonhWndAccept=FindWindowEx(hWndColo,0,vbNullString,vbNullString)Debug.PrinthWndAccept和PublicFunctionEnumChildProc(ByValhWndAsLong
因此,我使用GUI、C#编写了一些简单的图像处理程序。例如,我想更改HSV颜色模型中的图像颜色,将每个像素从RGB转换回来。我的程序根据用户选择加载一些图片,并使用其图形上下文将其显示在表单面板之一中。然后用户可以通过移动滚动条、单击按钮、选择一些图像区域等来对这张图片做一些事情。当他这样做时,我需要实时逐个像素地更改所有图片。所以,我写的是这样的:for(intx=0;x即使我在内存中(而不是在屏幕上)使用Graphics,函数GetPixel和SetPixel的工作速度也非常慢(因此,由于我的程序运行速度太慢,我分析了它,并解释说这两个函数正在减慢我的速度最多编程)。因此,当用户移
我编写了一个简短的程序来读取Windowsobj文件并找到.text部分并运行其中的代码。为此,我进行了以下WindowsAPI函数调用(Fullcode[gist.github.com],对于那些感兴趣的人):HANDLEFileHandle=CreateFile("lib.obj",GENERIC_READ|GENERIC_EXECUTE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);HANDLEMappingHandle=CreateFileMapping(FileHandle,0,PAGE_EXECUTE_RE