标签: winapi

为什么编译器会抛出此警告:"缺少初始化程序"?结构是否初始化?

我正在为程序创建某种前端.要启动程序,我正在使用调用CreateProcess(),其中包括一个指向STARTUPINFO结构的指针.要初始化我以前做的结构:

STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
Run Code Online (Sandbox Code Playgroud)

当用GCC编译程序启用这些警告时,-Wall -Wextra它会给我一个警告,说明缺少初始化程序指向第一行.

warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
Run Code Online (Sandbox Code Playgroud)

所以我最终做了:

STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
Run Code Online (Sandbox Code Playgroud)

这样编译器就不会发出任何警告.问题是,这些初始化结构的方式有什么区别?使用第一种方法,是不是初始化了结构?你会推荐哪一个?

c winapi gcc

69
推荐指数
4
解决办法
5万
查看次数

如何决定是否将ATL,MFC,Win32或CLR用于新的C++项目?

我刚刚开始我的第一个C++项目.我正在使用Visual Studio 2008.它是一个单一窗体的Windows应用程序,可以访问几个数据库并启动WebSphere MQ事务.我基本上理解ATL,MFC,Win32(实际上我对它有点模糊)和CLR之间的差异,但我对如何选择感到茫然.

这些中的一个或多个是为了向后兼容吗?

CLR 是个坏主意吗?

任何建议赞赏.

编辑: 我为这个项目选择了C++,原因是我没有在帖子中介绍,这些并不完全是技术性的.所以,假设 C++是唯一/最佳选择,我应该选择哪个?

c++ clr winapi mfc atl

68
推荐指数
4
解决办法
5万
查看次数

如何以编程方式获取DLL或EXE文件的版本?

我需要使用C或C++中的Win32本机API获取DLL或EXE文件的产品版本和文件版本.我不是在寻找Windows版本,而是通过右键单击DLL文件,选择"属性",然后查看"详细信息"选项卡看到的版本号.这通常是由四部分组成的点缀版本号xxxx

c++ dll winapi exe version

68
推荐指数
5
解决办法
8万
查看次数

我们如何使用Win32程序检查文件是否存在?

我们如何使用Win32程序检查文件是否存在?我正在为Windows Mobile App工作.

windows winapi file

67
推荐指数
5
解决办法
7万
查看次数

C# - 检测上次用户与OS交互的时间

我正在编写一个小托盘应用程序,需要检测用户上次与其计算机进行交互以确定它们是否处于空闲状态.

有没有办法检索用户上次移动鼠标,按键或以任何方式与他们的机器进行交互的时间?

我认为Windows显然跟踪这个以确定何时显示屏幕保护程序或断电等,所以我假设有一个Windows API用于自己检索这个?

c# windows winapi system-tray idle-processing

63
推荐指数
2
解决办法
3万
查看次数

如何在C中检查Windows上是否存在目录?

在Windows C应用程序中,我想验证传递给函数的参数,以确保指定的路径存在.*

如何在C中检查Windows上是否存在目录?

*我知道你可以进入竞争条件,在你检查存在的时间和使用它不再存在的路径的时间之间,但我可以处理.

附加背景

当权限发挥作用时,明确知道目录是否存在可能会变得棘手.在尝试确定目录是否存在时,该进程可能无权访问目录或父目录.这可以满足我的需求.如果目录不存在或者我无法访问它,则在我的应用程序中都将两者视为无效路径故障,因此我不需要区分.如果您的解决方案提供此区别,则(虚拟)奖励积分.

C语言,C运行时库或Win32 API中的任何解决方案都很好,但理想情况下我想坚持常用的库(例如kernel32,user32等)并避免涉及加载非标准库的解决方案(如Shlwapi.dll中的PathFileExists).如果您的解决方案是跨平台的,那么(虚拟)奖励积分.

有关

我们如何使用Win32程序检查文件是否存在?

c windows winapi

63
推荐指数
4
解决办法
6万
查看次数

Windows上是否可以重命名原子文件(带覆盖)?

在POSIX系统上,rename(2)提供原子重命名操作,包括覆盖目标文件(如果存在)以及权限是否允许.

有没有办法在Windows上获得相同的语义?我知道Vista和Server 2008上的MoveFileTransacted(),但我需要它来支持Win2k及更高版本.

这里的关键词是原子 ......解决方案不能以任何方式使操作失败,使操作处于不一致状态.

我见过很多人说在win32上这是不可能的,但我问你,是不是真的?

如果可能,请提供可靠的引用.

windows winapi posix

62
推荐指数
6
解决办法
2万
查看次数

我可以在没有Visual Studio的情况下下载Visual C++命令行编译器吗?

根据标题.我不想下载整个Visual C++安装程序,只需要下载"cl.exe"以及在Windows上编译和链接C++程序所需的其他程序.

c++ winapi visual-c++

61
推荐指数
5
解决办法
6万
查看次数

有没有办法找到一个DLL暴露的所有功能

我一直在寻找一种方法来获取映射到dll中函数名称的所有字符串.

我的意思是你可以调用GetProcAddress的所有字符串.如果你做一个dll的十六进制转储,符号(字符串)就在那里,但我认为必须有一个系统调用来获取这些名称.

c c++ dll winapi

60
推荐指数
8
解决办法
7万
查看次数

多线程可以在单处理器系统上实现吗?

我一直遵循多线程只能在多个处理器系统上实现的概念,在这个系统中,每个线程都有多个处理器,并且每个线程可以同时执行.在这种情况下没有调度,因为每个线程都有专用于它的独立资源.但我在某个地方读到它,我也可以在单处理器系统上进行多线程处理.这是对的吗?如果是,那么单处理器和多处理器系统之间有什么区别?

c windows winapi multithreading

59
推荐指数
5
解决办法
4万
查看次数

标签 统计

winapi ×10

windows ×5

c ×4

c++ ×4

dll ×2

atl ×1

c# ×1

clr ×1

exe ×1

file ×1

gcc ×1

idle-processing ×1

mfc ×1

multithreading ×1

posix ×1

system-tray ×1

version ×1

visual-c++ ×1