Articles of winapi

我如何获得桌面的窗口句柄?

Windows API提供了一个API GetDesktopWindow() ,它返回窗口句柄 但我用Spy ++进行了testing,发现桌面的窗口句柄和“Windows桌面”的窗口句柄是不一样的。 由于“Windows桌面”是一个列表视图,我需要执行以下操作 1) HANDLE hWnd = GetDesktopWindow() ; 2) FindWindow(hWnd, ….. ) with the SyslistView32 as the Window class. 一旦我得到窗口句柄,我想使用SendMessage()进行操作,如获取选定的文件名,select的文件数量等。 请给出你的意见。 我正在使用Windows SDk来做这件事

在不同的进程之间共享HDC

我正在编写某种IPCfunction,需要将某个进程的某些资源从一个进程传递到另一个进程。 这对于可以通过DuplicateHandle复制的pipe道手柄等很好。 现在我需要将HDC从一个进程传递到另一个进程。 这甚至有可能吗? 如果是,如何? 子问题:我假设从一个进程到另一个进程的窗口句柄(HWND)是安全的。 这个假设是否正确?

如何从资源加载图标而不会遭受别名?

我有一个GUI应用程序,其中包括一些用于工具栏button,菜单字形,通知图标等的图标。这些图标作为资源链接到应用程序,并有各种不同的大小可用。 通常,对于工具栏button图像,我有可用的16px,24px和32px版本。 我的图标是部分透明的32bpp。 该应用程序是高DPI的意识,并根据stream行的字体缩放调整所有视觉元素的大小。 所以,例如,在100%的字体缩放,96dpi,工具栏图标大小为16px。 在125%缩放比例120dpi下,工具栏图标大小为20px。 我需要能够加载一个大小为20px的图标,而不会有任何别名效果。 我怎样才能做到这一点? 请注意,我想支持Windows 2000及更高版本。

python:使用Windows API来使用ttf字体来呈现文本

什么是一个完整的例子,从无到有在内存中的位图结束,打开一个特定的.ttf文件,并使用该字体,使用本机Windows API呈现一些文本? 我目前正在通过Windows API,所以这是我和其他的计算器之间的比赛。

C ++ Windows十进制到UTF-8字符转换

我一直在使用下面的函数将Unicode字符的十进制表示转换为C ++中的UTF8字符本身。 我目前的function在Linux / Unix系统上运行良好,但在Windows上不断返回错误的字符。 void GetUnicodeChar(unsigned int code, char chars[5]) { if (code <= 0x7F) { chars[0] = (code & 0x7F); chars[1] = '\0'; } else if (code <= 0x7FF) { // one continuation byte chars[1] = 0x80 | (code & 0x3F); code = (code >> 6); chars[0] = 0xC0 | (code & 0x1F); […]

在Python中阅读屏幕像素比PIL更快的方法?

目前我正在使用像素读取器通过AutoItv3在一个运行直接X的程序中执行一些操作; 一个游戏。 现在的程序工作正常,但作为一个练习,我一直在Python中重写它。 现在我可以做到: import ImageGrab # Part of PIL image = ImageGrab.grab() #Define an area to capture. rgb = image.getpixel((1, 90)) #What pixel do we want? 那抓住了我想要的像素信息,但是我做得很快(需要每秒做3次或更快),但结果是它主要影响这个基于DirectX的游戏的帧率。 Python中有更快的方式来读取特定的屏幕像素吗? 即使限制这个每0.3秒运行,导致更多的压力比实际上应该(我实际上认为python会比这个特定的目的AutoIt 快 ,因此我试图它的原因)

如何向Windows请求系统托盘图标的大小?

我注意到,我的应用程序发送图标到Windows托盘与16×16像素的大小 – 和我的Vista PC我有一个双倍的任务栏,似乎显示在18×18的图标。 我应用程序图标上的resize的工件看起来很糟糕。 我怎样才能问Windows图标应该是多大? 编辑: 我正在dynamic生成图标,并使用像素字体文本叠加。 看起来很浪费,dynamic地生成一堆图标大小,所以最好避免使用所有“可能的”大小构build一个图标(而不是我甚至不知道它们是什么)。 GetSystemMetrics(SM_CXSMICON)返回16 – 不正确的值。 GetThemeBackgroundContentRect也没有帮助。

VMMap如何知道给定的内存区域是线程堆栈,具体是什么?

我一直在使用Mark Russinovich的VMMap来映射出我正在分析的一个进程的虚拟内存。 使用VirtualQueryEx,我可以遍历外部进程的空间,并获得进程地址空间内存区域的信息。 这些区域肯定与VMMap相匹配,但是VirtualQueryEx只会告诉我内存是否被提交/保留/释放以及是否是私有/共享/映像。 我找不到任何其他logging的方式来查询进程的虚拟内存。 VMMap似乎知道这样一种方式来查询内存,以便了解它是“私有数据”还是“线程堆栈”。 VirtualQueryEx将这两个标记为MEM_PRIVATE。 那么VMMap如何做出这样的区分呢? 是否有另一个API函数可以用来辨别这些细节?

.NET中的窗口句柄可以改变它的值吗?

在.NET进程的生命周期中,执行System.Windows.Forms.Form的句柄,可以说Application.Run(form)使用的主表单实际上改变了它的值,也就是说,如果使用不同的进程,例如IntPtr handle = User32.FindWindow(null, "Name") ,是否有一种情况下,该处理可能会失效.NET运行时? 编辑 我需要知道句柄,因为我想为IPC使用SendMessage和WM_COPYDATA等。

窗口:获取监视器的数量,包括禁用的

EnumDisplayMonitors列出当前激活的所有监视器。 但是,它似乎没有返回禁用的(即有'扩展我的桌面到这个监视器'的选项)。 我如何计算残疾人数?