Articles of winapi

从新桌面获取DC&RC

我使用CreateDesktop创build新的桌面,并希望获得它的DC和RC。 RECT deskRC; HDC deskDC; HDESK hNewDesktop = CreateDesktop(…); GetWindowRect(hNewDesktop, &deskRC); deskDC = GetDC(hNewDesktop); 这只返回0。 有什么问题? 或者,也许还有另一种获得这些价值的方法。 PS:桌面正常创build。 还有一个问题: 谢谢。 我遇到了另一个问题,这次是DC。 HDESK hNewDesktop = CreateDesktop("text_here", NULL, NULL, 0, GENERIC_ALL, NULL); SetThreadDesktop(hNewDesktop); SwitchDesktop(hNewDesktop); HWND deskHW = GetDesktopWindow(); GetWindowRect(deskHW, &deskRC); deskDC = GetWindowDC(deskHW); deskDC是不正确的:((用原来的testing,这是好的,我用它来绘制的东西) 不知道这次有什么错。

Windows Kernel Debugger API?…访问string

你如何阅读调用kdPrint或debugPrint函数生成的Windows内核debugging器string? 特别是在用户模式下阅读,但在内核模式下也是好的! 这与DebugView是一样的,但是我想过滤并且只能使用给debugging器的特定消息(string)。

共享一些信息,将所有DLL拉入进程

我们有一个有很多进程的企业系统(EXE,服务,DCOM服务器,COM +应用程序,ISAPI,MMCpipe理单元),所有这些都使用了许多COM组件。 我们最近在某些客户部署中看到了失败,但却发现很难排除原因。 为了追踪这个问题,我们用错误发生的日志语句来扩充整个源代码。 为了确定哪些日志来自哪些进程,C ++日志logging代码(编译到所有组件)使用EXE名称来命名日志。 这对于某些情况非常有用,但不是所有的 – COM +应用程序,ISAPI和MMCpipe理单元都具有系统EXE名称,并且日志以交错方式结束。 我看到这篇关于共享数据部分的post可能有帮助,但我不明白的是谁决定共享部分中的内容。 有什么方法可以保证在别人读取之前,一段特定的代码写入共享部分? 还是有更好的解决这个问题?

如何在所有者绘制菜单中绘制自己的子菜单箭头(并防止窗口在我的顶部绘制箭头)

Windows在WM_DRAWITEM中完成我的绘画之后似乎绘制子菜单箭头,如何停止绘制箭头的窗口?

在64位进程(特别是Flash)中托pipe32位OCX

我们正在构build我们的软件的64位版本,但我们使用Flash播放器的OCX控件在我们的窗口中托pipeFlash。 这个OCX文件是一个32位版本,你知道是否有可能在我们的64位应用程序中托pipe这个32位版本的Flash?

设置窗口在windows7上始终保持在桌面上

我试图把我的窗口设置为桌面的孩子,我这样做是这样的: HWND ProgmanHwnd = ::FindWindowEx( ::FindWindowEx( ::FindWindow(L"Progman", L"Program Manager"), NULL, L"SHELLDLL_DefView", L""), NULL, L"SysListView32", L"FolderView"); SetParent(m_hWnd, ProgmanHwnd); 这在WindowsXP中工作正常,我的窗口是在所有的窗口下,当我按“显示桌面”选项窗口显示和所有其他“正常”窗口隐藏。 但在Win7的时候,我做了上面的代码不显示相同的窗口,在间谍+我可以看到我的窗口是SysListView32的子窗口,但它不显示(它具有WM_VISIBLE风格)? 我错过了什么? 还是从winXP改为win7? 我怎么能做到这一点在win7上工作? 更新:这与航空主题有关,因为如果我将桌面主题更改为基本,则显示窗口,但是如果我切换回航空主题之一,则会再次隐藏。 谢谢

一个DLL在进程的地址空间中使用的页面

有一种可靠的方法来了解一个内存页面或一系列页面是否属于进程地址空间内的特定DLL?

FASM使用自定义资源文件

我如何包括我的自定义资源文件,并能够访问它们与Windows API?

Windows的声音pipe理器类

我需要一些类来播放短wav声音,这个类会在创build实例时将这个wav文件加载到内存中,当需要的时候在后台播放声音,当一个实例处理时释放这个wav文件。 我怎样才能做到这一点在C#窗口(.Net 2.0)? (Win API的sndPlaySound,OpenAL或可能是任何包装)理想情况下,我很想find一个简单的解决scheme,并能够解决我的任务。 你知道这个问题的任何解决scheme吗?

没有在CWnd上画一个粗框

我有一个应用程序窗口,我添加了WS_THICKFRAME样式,并且删除了WS_CAPTION样式。 当窗口最大化时,我想隐藏WS_THICKFRAME,但保留Aero-Snapfunction,所以我已经改变了WS_NCCALCSIZE的处理程序,以返回与窗口边框大小相关的充气矩形。 也就是说,WS_NCCLIENTSIZE处理程序代码的重要部分如下所示: … CRect rc( lpncsp->rgrc[0] ); if (IsZoomed()) { int borderSize = GetSystemMetrics(SM_CYSIZEFRAME); rc.InflateRect(borderSize,topOff+borderSize,borderSize,borderSize); } else rc.InflateRect(0,topOff+0,0,0); lpncsp->rgrc[0] = rc; … 该代码有效地隐藏了WS_THICKFRAME。 唯一的问题是,当窗口失去焦点或重新获得焦点(虽然最大化)WS_THICKFRAME被绘制在边界内。 是否有一个消息,我可以返回膨胀rect或至less重新调整窗口大小隐藏WS_THICKFRAME当窗口焦点设置/取消设置?