Articles of winapi

EnumDisplayMonitorscallback

我正在尝试使用EnumDisplayMonitors来创build每个监视器的dynamic数组,并存储DISPLAY_DEVICE结构。 为什么下面的代码不正确? BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { MONITORINFOEX iMonitor; iMonitor.cbSize = sizeof(MONITORINFOEX); GetMonitorInfo(hMonitor, &iMonitor); if (iMonitor.dwFlags == DISPLAY_DEVICE_MIRRORING_DRIVER) { return true; } else { *reinterpret_cast<ScreenArray*>(dwData) = ScreenArray(&iMonitor); return true; }; } 调用使用 ScreenArray monitorArray[15]; int i = 0; EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, reinterpret_cast<LPARAM>(&monitorArray[i++])); 数组(monitorArray [0])中的第一个返回第二个监视器的正确信息,但monitorArray [1]是最大值。 编辑:解决我使用的方法只是实现我创build的function: MonitorArray *mA = […]

WinApi中的GetClientRect和GetWindowRect有什么区别?

我应该在InvalidateRect中使用哪些来刷新我的窗口? 为什么?

通过Win32 API从服务创buildWindows会话

我有一个Windows服务,可以在用户的​​Windows会话中创build一个可执行文件,通过调用“CreateProcessAsUser”函​​数。 这工作正常,只要有一个Windows会话已经在那里。 在没有人的情况下,我希望能够以编程方式创build一个。 这是可能的吗? 似乎无法find一个function来做到这一点。

截取使用createdesktop API创build的桌面

我正在使用createdesktop api来创build一个桌面,我想要截图或发送input鼠标/键盘不显示桌面的user.any ideeas如何实现这?

如何屏幕捕捉,除了一些窗口

情况 :我有一个通过互联网进行屏幕共享的软件,其中一个用户充当演讲者,其他用户充当观众/参与者。 除演示窗外,演讲者还有一组屏幕上出现的非共享窗口(用于开始共享/停止共享等的button栏,Skype窗口等)。 演示者可以从屏幕共享软件的设置中进行configuration,使这些非共享窗口不可见(即,它们不会出现在正在发送给与会者的屏幕共享中,但它们后面的窗口内容将显示在屏幕截图中)。 屏幕截图以大约每秒10帧或更快的速度发送。 问题 :如何以编程方式捕获屏幕,除了这些非共享-Windows窗口? 备注 : 由于较高的帧每秒值,我不能最小化/最大化/设置这些窗口的alpha,因为那么窗口将闪烁。 该应用程序是用Win32 C ++编写的。 我会使用分层的窗口,但由于Windows 7桌面组合function,这是不可用的现成的(在Windows 8中,您不能使用DwmEnableComposition暂时和编程方式禁用组成) 我可以对Windows XP / 2000/7等使用分层窗口方法,对Windows 8使用不同的方法(如果有的话),尽pipe我更喜欢一个适用于所有系统的单个进程 我还可以尝试通过捕获单个图像(桌面,需要捕获的窗口)和使用它们的z-index来创build最终图像来“撰写”屏幕截图,但是由于所需的每秒帧数,这个过程会太慢。

如何在由CreateProcess实例化的命令中使用或扩展环境variables?

以下代码利用CreateProcess运行带有环境variables的命令。 在这里,它试图运行notepad %APPDATA%\test.txt 。 如果我在notepad %APPDATA%\test.txt直接运行notepad %APPDATA%\test.txt ,%APPDATA%将被展开。 但是,由CreateProcess执行时,环境variables不能被扩展。 你能帮忙评论一下原因和解决办法吗? 任何评论将不胜感激! program TestConsole2; {$APPTYPE CONSOLE} uses Windows, SysUtils; var I: Integer; ProgramName: String; StartInfo : TStartupInfo; ProcInfo : TProcessInformation; CreateOK : Boolean; begin try FillChar(StartInfo, SizeOf(StartInfo), #0); FillChar(ProcInfo, SizeOf(ProcInfo), #0); StartInfo.cb := SizeOf(StartInfo); ProgramName := 'NOTEPAD %APPDATA%\test.txt'; CreateOK := CreateProcess( nil, PChar(ProgramName), nil, nil, True, […]

如何知道我们是在一个控制台或窗口的应用程序?

上下文:编程ac / c ++ win32-mfc库 如何知道我们是在一个控制台或窗口的应用程序?

特定networking接口IPv4可用性 – 无连接,本地,Internet

如何识别特定NetworkInterface连接状态? NetworkInterface[] nets = NetworkInterface.GetAllNetworkInterfaces(); foreach (var n in nets) { // TODO: determine connectivity status of each network interface // ( mainly interested in IPv4 connectivity ) } 这个问题不是关于一般的互联网连接 ,因此使用GetIsNetworkAvailable()不是一个解决scheme OperationalStatus.Up可以用来过滤一些不活动的networking接口,但不是全部 – OperationalStatus.Up在一些显示“无networking访问”的IPv4和IPv6接口 我也知道如何获得IPv4 UnicastAddresses ,但那么有用的是什么? 在WMI的这些部分我找不到任何相关的东西 即提取每个接口状态为互联网,本地,有限或无

在结构上溢出的整数

对于不支持64位算术的编译器,有ULARGE_INTEGER联合 。 如果最后一行的加法溢出,下面的代码会发生什么? ULARGE_INTEGER u; u.LowPart = ft->dwLowDateTime; u.HighPart = ft->dwHighDateTime; u.LowPart += 10000; //what if overflow? 相关问题: ULARGE_INTEGER工会的重点是什么?

有没有办法在编辑公共控制中添加我自己的button?

说,如果我在我的基于MFC的对话框窗口中有一个默认的编辑公共控制 : 我正在寻找一种方法来添加一个小的“X”(或删除)button里面(这是我的Photoshop渲染我需要): 有没有办法通过修改默认的编辑控件?