Articles of winapi

C ++中的Pause(),Sleep()和Wait()之间有什么区别?

我一直在研究斯坦福大学的CS106B课程,在完成Boggle任务时,我注意到Windows上的Sleep()函数与Pause()函数有所不同。 出于testing目的,我只是简单地设置了电路板,并使用提供的gboggle.h文件突出显示了Boggle多维数据集,然后删除突出显示。 以下是相关的代码: for(int row = 0; row < board.numRows(); row++) { for(int col = 0; col < board.numCols(); col++) { HighlightCube(row, col, true); } } Pause(0.5); for(int row = 0; row < board.numRows(); row++) { for(int col = 0; col < board.numCols(); col++) { HighlightCube(row, col, false); } } 如果我使用Pause(),立方体突出显示,然后恢复正常。 如果我使用Sleep()或Wait(),则多维数据集永远不会突出显示,并且程序中的延迟发生在板被绘制之前,而不是在for循环之间。 相关的Wait()函数: void wait […]

在全屏幕中显示窗口

如何在不退出电影播放器​​的全屏模式的情况下全屏播放电影时显示窗口? 我只想把窗户放在电影的顶端。 我知道这是可行的,因为雅虎messeger每次都会显示你已经login或注销了一个皮尔森,而且我确定还有其他程序也这样做,但现在我不记得了。 它可以在C / C ++ mfc,win api,c#,wpf它不是。

Windows API相当于“WMIC QFE Get”

我是C ++新手,目前正在C ++ DLL中获取Windows Hotfix / Patch信息。 我已经评估了以下方面: 通过在C ++代码中执行subprocess并运行wmic qfe get并读取所有数据。 通过使用C ++ API来初始化COM,连接到Wbem并select * from win32_quickfixengineering查询中执行select * from win32_quickfixengineering 。 除上述两种方法外, 有没有直接的Windows API,为我做所有的工作,并给出目前安装在机器上的KB信息列表?

为什么CreateSymbolicLink()成功,但生成的链接是无效的

#include <windows.h> int main() { CreateSymbolicLink(L"d:\\symbolic_link_to_notepad.exe", L"c:\\windows\\notepad.exe", 0); // Success! } 但是,当我双击d:\ symbolic_link_to_notepad.exe来启动记事本时,popup一个错误消息框,并说没有findpath。 根源是什么?

CreateProcess可以启动一个进程,但QProcess不能…为什么?

我正在写一个Windows QT应用程序,需要启动其他应用程序。 如果我使用下面的窗口调用一切工作正常: QString qsExePath = "C:\\Program Files (x86)\\Some Company\\SomeApp.exe"; QString qsCommandLine = ""; DWORD dwLastError = 0; STARTUPINFO startupInfo; ZeroMemory(&startupInfo, sizeof(startupInfo)); startupInfo.cb = sizeof(startupInfo); startupInfo.dwFlags = STARTF_USESHOWWINDOW; startupInfo.wShowWindow = (WORD)1; PROCESS_INFORMATION processInfo; ZeroMemory(&processInfo, sizeof(processInfo)); if (CreateProcess((TCHAR*)(qsExePath.utf16()), (TCHAR*)(qsCommandLine.utf16()), NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo)) { CloseHandle(processInfo.hProcess); CloseHandle(processInfo.hThread); } else { dwLastError = GetLastError(); […]

如何使用C ++获取ActiveDirectory中的maxpwdAge属性值?

我正在与AD服务器,我想获得maxpwdAge属性值… 我已经尝试了ADSi,但它提供了一个问题。 VARIANT var; bsNamingContext=L"maxpwdAge"; hr = ADsGetObject(pszADsPath, IID_IADsUser, (void**) &pUser); if(SUCCEEDED(hr)) { VariantInit(&var); hr = pUser->Get(bsNamingContext, &var); } 但是,它给-2147463155(8000500d)错误… 但我使用bsNamingContext=L"cn"; 它正确地给出CN值… 任何人都可以解决它?

有什么办法来检测Windows中的监视器状态(开或关)?

有没有人知道是否有一个API来获取Windows(XP / Vista / 2000/2003)当前的监视器状态(打开或closures)? 我所有的search似乎都表明,没有真正的做法。 此线程尝试使用根据Microsoft的文档GetDevicePowerState不适用于显示设备。 在Vista中,我可以收听GUID_MONITOR_POWER_ON,但是当手动closures显示器时,我似乎没有收到任何事件。 在XP中,我可以挂钩到WM_SYSCOMMAND SC_MONITORPOWER ,寻找状态2.这只适用于系统触发电源closures的情况。 WMI Win32_DesktopMonitor类似乎也没有帮助。 编辑 :这是一个关于comp.os.ms-windows.programmer.win32 的讨论 ,指出没有可靠的方法来做到这一点。 任何人有任何其他的想法?

存储这个指针在WndProc中使用的最佳方法

我有兴趣知道存储this指针在WndProc使用的最佳/常用的方法。 我知道几种方法,但据我了解,每种方法都有自己的缺点。 我的问题是: 生成这种代码有什么不同的方法: CWindow::WndProc(UINT msg, WPARAM wParam, LPARAM) { this->DoSomething(); } 我可以想到Thunks,HashMaps,线程本地存储和窗口用户数据结构。 每种方法有哪些优点/缺点? 为代码示例和build议授予的积分。 这纯粹是出于好奇的缘故。 使用MFC后,我只是想知道如何工作,然后想到ATL等。 编辑:我可以有效地使用窗口过程中的HWND最早的地方是什么? 它被logging为WM_NCCREATE – 但如果你真的试验,这不是第一个消息发送到窗口。 编辑: ATL使用thunk来访问这个指针。 MFC使用HWND的散列表查找。

如何以面向未来的方式确定Windows版本

我注意到GetVersionEx()被宣布不推荐使用。 更糟糕的是,对于Windows 8.1(以及可能的未来版本),版本号受应用程序清单的限制。 我的目标是收集用户正在运行的操作系统的分析,所以我可以适当地指定支持。 我想要一个面向未来的解决scheme来收集这些数据。 更新清单将不起作用,因为我只能更新已经发布的Windows版本的清单,而不是将来的版本。 build议的replaceAPI, 版本帮助函数是没用的。 我如何收集实际的Windows版本号? 澄清:通过“未来打样”,我的意思是我希望有一些机会能够在下一个版本的Windows上工作。 没有什么是确定的,但文档确实说GetVersionEx()将无法正常工作。

Image.frombuffer与16位图像数据

如果我的窗口是32位颜色深度模式,那么下面的代码从窗口中获得一个不错的PIL图像: def image_grab_native(window): hwnd = win32gui.GetDesktopWindow() left, top, right, bot = get_rect(window) w = right – left h = bot – top hwndDC = win32gui.GetWindowDC(hwnd) mfcDC = win32ui.CreateDCFromHandle(hwndDC) saveDC = mfcDC.CreateCompatibleDC() saveBitMap = win32ui.CreateBitmap() saveBitMap.CreateCompatibleBitmap(mfcDC, w, h) saveDC.SelectObject(saveBitMap) saveDC.BitBlt((0, 0), (w, h), mfcDC, (left, top), win32con.SRCCOPY) bmpinfo = saveBitMap.GetInfo() bmpstr = saveBitMap.GetBitmapBits(True) im = Image.frombuffer( […]