Windows API的不同返回状态
在Windows编程中,我们经常接触到的Windows API返回值类型有: BOOL HRESULT LSTATUS
在Windows编程中,我们经常接触到的Windows API返回值类型有: BOOL HRESULT LSTATUS
SetParent是Windows提供的设置窗口父窗体的API,函数原型比较简单: 1234HWND SetParent( [in] HWND hWndChild, [in, optional] HWND hWndNewParent);
在Windows系统中,在按下Win+D快捷键等操作执行“显示桌面”时,会将桌面上的所有窗口都最小化到任务栏,再次按下还原窗口。在显示桌面时,有些窗口仍然保持显示状态,不被最小话,即称之为逃脱显示桌面指令。 实现逃脱显示桌面的方式有三种,每种方式有不同的应用场景。
在Windows API中经常会出现关于顶级窗口的描述,如 EnumWindows函数的说明: Enumerates all top-level windows on the screen by passing the handle to each ...
HANDLE类型返回值的不确定性指的是Windows API函数的返回值为HANDLE类型时,有两种表示失败的方式: HANDLE == NULL,如CreateEvent等 HANDLE == INVALID_HANDLE_VALUE,如CreateFile等 其中,NULL的值始终为0,而INVALID_HANDLE_VALUE的值为-1,其在32位和64位程序中分别等于0xFFFFFFFF和0xFFFFFFFFFFFFFFFF。 具体哪些函数失败时返回NULL,哪些返回INVALID_HANDLE_VALUE了?这个需要查阅MSDN文档来确定。
在开发中遇到了如下问题: 通过鼠标钩子获取某窗口的消息,发现可以接收到WM_LBUTTONDOWN消息,但始终无法接收到WM_LBUTTONDBLCLK消息。 经过一番排查,发现Windows窗口只有在拥有CS_DBLCLKS类样式时才能接收到鼠标双...
同一个DLL文件可以被多个进程加载。当不同的进程将DLL映射到自己的内存空间时,系统会为DLL中的全局和静态变量创建不同的实例,而不会共享同一个变量实例。 那我们如何实现在进程间共享DLL全局变量呢?我们可以在DLL中使用如下语句来创建一个段,用来存...
本文使用的工具都是 Windows SDK 自带的,可以采用单独安装 Windows SDK的方式,也可以通过安装 Visual Studio 来附带安装 Windows SDK。 123456# 在弹出界面设置密码123456makecert.ex...
所谓音频环回录制就是录制扬声器播放的声音。播放到扬声器的声音已经过混合,Windows 提供了 WASAPI 来获取这种混合的音频信号。 本文将录制到原始音频样本数据写入到文件,可以使用Audacity导入原始数据试听。
本文介绍如何根据进程 ID 获取进程命令行参数,使用 Windows NTDLL 提供的未公开 API 实现。 由于需要使用到Windows应用层未公开的 API,而且这些 API 在 Windows 头文件中未提供函数定义,因此我们需要使用GetProcessAddress动态地从 ntdll.dll 中获取函数地址。 动态获取函数地址本不是一件困难的事情,但是当涉及调用函数比较多时,这个操作就显得比较繁琐了,我们可以直接使用下面的库来简化上述操作。https://github.com/winsoft666/ndk
本文介绍在 Windows 系统上实现使某个文件无法被用户或其他程序删除。
转储文件也就是我们常说的 dump 文件,可以把转储文件看成软件的某个时刻的一个快照,我们一般在软件出现问题时手动生成或者程序自动生成转储文件。