问题标签 [winapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
6281 浏览

delphi - 在 Delphi 中进行异步套接字编程的惯用方法是什么?

人们在 Delphi 中编写网络代码使用 Windows 风格的重叠异步套接字 I/O 的正常方式是什么?

这是我之前对这个问题的研究:

Indy组件似乎完全同步。另一方面,虽然 ScktComp 单元确实使用 WSAAsyncSelect,但它基本上只异步 BSD 风格的多路复用套接字应用程序。您在单个事件回调中被转储,就好像您刚刚从 select() 循环中返回一样,并且必须自己完成所有状态机导航。

.NET 的情况要好得多,使用 Socket.BeginRead / Socket.EndRead,其中的延续直接传递给 Socket.BeginRead,这就是您选择备份的地方。编码为闭包的延续显然具有您需要的所有上下文,甚至更多。

0 投票
5 回答
494 浏览

winapi - 如何从隐藏的窗口应用程序中显示对话框?

我开发了一个 COM 组件 (dll),它实现了一个显示 WTL 模式对话框的 Edit() 方法。

该 COM 组件的完整接口对应于化学过程工业中使用的软件标准 (CAPE-OPEN),因此该 COM 组件应该可供我无法控制的一系列第 3 方可执行文件使用。

我的组件在许多这些 EXE 中都按预期工作,但特别是其中一个 Edit() 方法只是挂起而没有出现对话框。

::MessageBox()但是,如果我在对话框显示之前立即调用,DoModal()并且在首次显示 MessageBox 后行为正确。

我怀疑这个问题可能与这个作为“隐藏窗口应用程序”运行的特定 EXE 有关。

我曾尝试同时使用 NULL 和::GetConsoleWindow()作为对话框父级的返回值,但都没有奏效。

对话框本身是一个 ATL/WTL CPropertySheetImpl。

有问题的父应用程序(EXE)是我无法控制的,因为它是由(轻度敌对的)第 3 方开发的。

我确实知道我可以::MessageBox()从我的 COM 组件成功调用或显示标准 Windows 文件对话框,并且在这样做之后我就可以显示我的自定义对话框。如果不先显示“标准”对话框,我将无法显示我的自定义对话框。

谁能建议我如何在不首先显示不必要的 MessageBox 的情况下让它显示对话框?我知道这是可能的,因为我已经看到这个 EXE 显示来自与同一接口对应的其他 COM 组件的对话框。

0 投票
4 回答
12361 浏览

.net - 如何使用 .Net 直接读取磁盘?

是否可以直接使用.Net 读取磁盘?直接我的意思是通过绕过文件系统的设备。我想我会通过以某种方式打开设备“\Device\Ide\IdeDeviceP2T0L0-1”来解决这个问题。

如果我无法使用 .NET api 打开设备,知道使用哪个 Win32 API 会很有帮助。

0 投票
3 回答
135185 浏览

c++ - 32 位和 64 位代码的 DWORD 有多大?

在 Visual C++ 中,DWORD 只是一个无符号长整数,它依赖于机器、平台和 SDK。但是,由于 DWORD 是双字(即 2 * 16),在 64 位架构上 DWORD 仍然是 32 位吗?

0 投票
2 回答
585 浏览

winapi - 远程计算机上程序文件的路径

如何确定远程计算机上“程序文件”目录的(本地)路径?似乎没有任何版本的 SHGetFolderPath(或相关函数)将远程计算机的名称作为参数。

我想我可以尝试使用远程注册表查询 HKLM\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir,但我希望有“记录”的方式来做这件事。

0 投票
3 回答
913 浏览

winapi - 如何检测系统中是否存在默认录音设备?

如何检测系统是否安装了默认录音设备?我敢打赌这可以通过对 Win32 API 的一些调用来完成,有人有这方面的经验吗?

我说的是通过代码执行此操作,而不是通过打开控制面板并查看声音选项。

0 投票
9 回答
176342 浏览

c++ - 如何在 C++ 中调用 ::CreateProcess 来启动 Windows 可执行文件?

寻找一个例子:

  1. 启动一个 EXE
  2. 等待 EXE 完成。
  3. 可执行文件完成后正确关闭所有句柄。
0 投票
7 回答
12561 浏览

winapi - How Can I Monitor Which Window Currently Has Keyboard Focus

Is there a way to track which window currently has keyboard focus. I could handle WM_SETFOCUS for every window but I'm wondering if there's an alternative, simpler method (i.e. a single message handler somewhere).

I could use OnIdle() in MFC and call GetFocus() but that seems a little hacky.

0 投票
3 回答
1802 浏览

c - 如何更改命令提示符窗口的标题

每次我用c语言双击执行基于dos的程序时,如何更改命令提示符窗口的标题。我应该使用 Windows API 吗?

0 投票
4 回答
2611 浏览

c++ - 更改列表视图和树视图颜色的最简单方法

我试图找到一种简单的方法来更改 WTL 或纯 Win32 代码中的文本和背景listview以及treeview控件的颜色。

我真的不想为这些控件实现完整的所有者绘图,只需更改使用的颜色。

我想确保图像仍然以适当的透明度绘制。

有什么建议么?