gpt4 book ai didi

winapi - MingW 与旧的 winbase.h 文件

转载 作者:行者123 更新时间:2023-12-04 05:05:27 25 4
gpt4 key购买 nike

我想在使用最新 MingW 版本的 Qt 4.8.1 应用程序中使用 winbase.h 中的函数 QueryFullProcessImageName(我最近下载了它)。问题是这个功能很新:它是在 Windows Vista 中引入的,我猜它会在这样一个新版本的 MingW 中可用,但事实并非如此。 Microsoft MSDN 很遗憾我需要放置适当的定义以使此函数可用,但这不仅没有解决我的问题,而且我也无法通过 Ctrl+F 在 winbase.h 中找到该函数的声明。

好吧,我该如何解决这个问题?我非常需要那个功能:X

对我的问题的另一个见解:http://www.qtcentre.org/threads/53769-Mingw-included-in-Qt-installator-including-old-h-files

还有一件非常有趣的事情:http://sourceforge.net/apps/trac/mingw-w64/browser/trunk/mingw-w64-headers/include/winbase.h?rev=5487 (看起来 MingW 确实有最新的 winbase.h 文件,虽然它没有随安装程序一起提供)

我的电脑是 64 位的 Windows 7,而我的 Qt 和 Qt Creator 是 32 位的。

谢谢,

莫默吉尔

最佳答案

如果您不想(或不能)移动到具有 QyeryFullProcessImageName() 的 MinGW 版本在其 SDK header 中,然后您可以在 winbase.h 的末尾附近添加以下内容(确保它在 extern "C" 块的右大括号之前):

#if (_WIN32_WINNT >= 0x0600)

#define PROCESS_NAME_NATIVE 0x00000001

WINBASEAPI BOOL WINAPI QueryFullProcessImageNameA(
HANDLE hProcess,
DWORD dwFlags,
LPSTR lpExeName,
PDWORD lpdwSize
);

WINBASEAPI BOOL WINAPI QueryFullProcessImageNameW(
HANDLE hProcess,
DWORD dwFlags,
LPWSTR lpExeName,
PDWORD lpdwSize
);

#ifdef UNICODE
#define QueryFullProcessImageName QueryFullProcessImageNameW
#else
#define QueryFullProcessImageName QueryFullProcessImageNameA
#endif

#endif

如果 API 在 libkernel32.a 导入库中,那应该就是您所需要的。 API 在我安装的 MinGW 4.7.x 版本的库中,但它不在 winbase.h 中。 header ,因此很有可能您只需要上面的几行代码即可。

关于winapi - MingW 与旧的 winbase.h 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15554380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com