Articles of winapi

Windows视觉主题:部件和国家图库?

Microsoft Windows允许程序员使用DrawThemeBackground和DrawThemeText等DrawThemeBackground使用当前主题的外观和感觉来绘制GUI元素。 元素由Class,Part和State指定,如MSDN的“ 部件和状态”页所述。 不幸的是,这个页面并不是非常有用的信息(完全可以!)。 所以问题是:是否有一个所有这些部分和状态的参考,最好与元素的图像(在默认的Windows Vista / 7主题)?

使用UpdateResource更新string表

我问这里的问题 – 通过UpdateResource更新STRING TABLE(添加多个string) 现在我又问了一遍,因为这次我可以在这个问题上增加更多的细节。 我一直在尝试这个过去的一天,或没有真正有用的东西。 我想要的结果是这样的(我手动添加MSVS中的string):正如你可以看到,多个条目,它是“干净”,可以很容易地被程序访问! 现在,我的来源: wstring buffer[5] = {L" Meow",L" I",L" Am",L" A",L" Dinosaur"}; // ignore the string if (HANDLE hRes = BeginUpdateResource("Output.exe",TRUE)) { for (int i = 0; i < 5; i++) { wchar_t * temp; temp = new wchar_t[(buffer[i].length()+1)]; wcscpy(temp,buffer[i].c_str()); wcout << temp << endl; UpdateResource(hRes,RT_STRING,MAKEINTRESOURCE(1),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), temp, 48); //buffer[i].length()+1 […]

我怎么知道一个窗口是否有焦点? (Win32 API)

使用Win32 API(在C中,但这是无关紧要的)我怎么知道一个给定的窗口(由HWND标识)是否有焦点? 我挂钩一个应用程序监视一个事件,当这个事件发生时,我想检查应用程序是否已经有焦点。 如果没有,我想闪动窗口,直到他们注意到它。 或者,FlashWindowEx结构标志FLASHW_TIMERNOFG闪烁,直到窗口焦点不闪,如果窗口已经有焦点? 我现在不能testing,因为我不在我的开发环境中,但是我的印象是它会闪烁,这正是我想要避免的。 编辑:此外,如果它很重要,应用程序在此窗口中使用DirectX。

Win32 – 获取主要的Wnd应用程序的句柄

我注入了我的DLL进程。 我怎样才能得到主机应用程序的主窗口句柄?

如何将HICON保存到.ico文件?

我从.exe / .dll中提取图标,并将其保存在.ico文件中。 做这个的最好方式是什么? 我试图使用::OleCreatePictureIndirect() ,然后IPicture->SaveAsFile() 。 它的作品,但图标的透明部分被漆成黑色(显然是不透明的:()。 我尝试手动parsing。 它工作正常,但是很麻烦,我怕与Vista的图标/ .icl文件/等的复杂性。 请帮忙。 谢谢。

如何从活动窗口中检索选定的文本

我正在尝试为使用Python的 Windows创build一个简单的开源工具,该工具可以对当前活动窗口的选定文本执行用户定义的操作。 该实用程序应该使用预定义的键盘快捷键来激活。 以下示例部分概述了使用情况: 用户使用鼠标或键盘select一些文本(在任何应用程序窗口中) 用户按下预定义的键盘快捷键 所选的文本是由我们的实用程序检索或复制到剪贴板(两种方法应该是好的) 对所选文本执行键盘快捷键相关操作 令我困惑的是第3步 。 如何从活动窗口中检索选定的文本 。 这应该适用于所有的应用程序。 我使用pywin32模块。 在此先感谢您的答案和提示。 更新#1 : 原来有两种方法可以完成这个任务: find活动窗口,然后发送一个消息/击键(Ctrl-C)给它,以便将选定的文本复制到剪贴板。 然后该实用程序可以通过使用剪贴板相关function访问该文本。 find活动的窗口,然后直接检索选定的文本(不复制到剪贴板)。 这似乎比第一种方法更困难。 作为出发点: 获得活动窗口ID Anurag Uniyal在他的答复指出。 或者用下面的代码获取窗口对象: import win32ui wnd = win32ui.GetForegroundWindow() print wnd.GetWindowText()

如何正确使用SetWindowsHookEx和CallNextHookEx

我可以正确地build立一个窗口钩子,但我被MSDN中的线路困惑,说:“调用CallNextHookEx函数链接到下一个钩子程序是可选的,但强烈build议;否则,其他应用程序已经安装钩子不会收到挂钩通知,并可能导致错误行为,除非您绝对需要阻止其他应用程序看到通知,否则应该调用CallNextHookEx。“ 我想成为一名好的编程公民,并打电话给下一个钩子。 但是,我的钩子程序看起来像这样: LRESULT CALLBACK CBTProc(int code, WPARAM wp, LPARAM lp) { if (code != HCBT_CREATEWND) { // What do I do here? It's not the event I requested so how do I pass it on? return 0; } // It's the code we want (create window) CallNextHookEx(…); … } 那么,如果代码不是我感兴趣的代码,那么在钩子程序中会发生什么? 我如何打电话给下一个钩子? 编辑:主要的问题是一个HHOOK从SetWindowsHookEx返回,并且需要传递给CallNextHookEx函数。 更新:看来在NT平台上钩参数被忽略: http://msdn.microsoft.com/en-us/library/ms644974.aspx […]

如何设置Win32应用程序中的所有窗口的默认字体?

我希望我的应用程序中的所有控件(编辑,列表控件等)具有相同的字体,而不是系统默认的字体。 我该怎么做呢? 有没有设置应用程序默认字体的任何Win32 API?

如何在窗口上绘制图像?

我创build了一个窗口,使用Windows Vista上的C ++中的VS2005创build窗口()api 我的要求是在该窗口上绘制(任何格式的)图像。 我没有在这个应用程序中使用任何MFC。 请帮我一些代码片段。

如何将文件写入物理驱动器(Windows 7)而不会收到ERROR_ACCESS_DENIED?

我试图写一个testing模式到格式化USB驱动器的每个部分。 有一个逻辑驱动器(例如h :)。 该卷是FAT格式的,包含要覆盖的数据。 另外,我想覆盖整个物理驱动器。 该程序正在运行与提升的用户权限。 首先我做了以下几点: // from the drive letter "h:" I get the physical disk number using // IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS => "\\.\PhysicalDrive2" hDevice = ::CreateFile( "\\.\PhysicalDrive2", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); // get the number of available sectors with IOCTL_DISK_GET_DRIVE_GEOMETRY_EX // => ulNumberOfSectors // now I try to write some sectors, […]