Tag: winapi

Win32窗口所有者与窗口父级?

在Win32编程中,窗口的父窗口和窗口的所有者有什么区别? 我想我已经想通了,然后我碰到这个代码: SetWindowLong(handle, GWL_HWNDPARENT, foo); 这实际上设置了窗口的所有者,而不是父级 – 尽pipe使用了GWL_HWNDPARENT。 父母/所有者的条款是可以互换的,还是实际上有区别?

如何获得Win32中的可用串行端口列表?

我有一些遗留代码,通过调用EnumPorts()函数,然后筛选以“COM”开头的端口名称,提供PC上可用COM端口的列表。 出于testing的目的,如果我可以使用com0com这样的代码来提供这些代码,它将提供成对的虚拟COM端口作为一个空调制解调器。 但是,EnumPorts EnumPorts()函数找不到com0com端口(即使没有过滤“COM”)。 超级terminal和SysInternals PortMon都可以看到他们,所以我确定它安装正确。 那么还有其他一些Win32函数提供了可用的串行端口的权威列表吗?

如何在Haskell中编写Windows服务应用程序?

我一直在努力在Haskell中编写Windows服务应用程序。 背景 服务应用程序由Windows服务控制pipe理器执行。 启动后,它会阻止对CallService提供的StartServiceCtrlDispatcher的调用,作为服务的主要function 。 该服务的主要function是应该注册第二个callback来处理传入的命令,如开始,停止,继续等。它通过调用RegisterServiceCtrlHandler 。 问题 我可以写一个程序,它将注册一个服务主要function。 然后,我可以将该程序安装为Windows服务,然后从服务pipe理控制台启动它。 该服务能够启动,报告自己正在运行,然后等待传入的请求。 问题是,我无法让我的服务处理函数被调用。 查询服务状态显示它正在运行,但只要我发送一个“停止”命令窗口popup消息说: Windows could not stop the Test service on Local Computer. Error 1061: The service cannot accept control messages at this time. 根据MSDN文档 ,StartServiceCtrlDispatcher函数将阻塞,直到所有服务报告它们停止。 在调用服务主函数之后,调度程序线程应该等待,直到服务控制pipe理器发送一个命令,此时处理函数应该由该线程调用。 细节 接下来是我正在尝试做的一个非常简化的版本,但它演示了我的处理函数没有被调用的问题。 首先,一些名字和import: module Main where import Control.Applicative import Foreign import System.Win32 wIN32_OWN_PROCESS :: DWORD wIN32_OWN_PROCESS = 0x00000010 […]

CI服务器上的MSBuild无法findAL.exe

我在TeamCity CI构build服务器上遇到问题,在编译期间出现以下错误: C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(2342,9):错误MSB3086:任务使用SdkToolsPath“”或registry项“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A“。 确保设置了SdkToolsPath,并且该工具存在于SdkToolsPath下正确的处理器特定位置,并且安装了Microsoft Windows SDK 一年前,当人们升级到.NET 3.5时,我发现了类似的报告,例如这个 。 在这种情况下,安装最新的SDK解决了这个问题,但是我已经在我的构build服务器上安装了最新的SDK( 适用于Windows 7和.NET Framework 4的Microsoft Windows SDK )。 MSBuild工具都在服务器上,在一个名为的文件夹中 C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 和AL.exe存在于 C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 […]

如何在Visual Studio中debugging时执行GetLastError()

你正在通过C / C ++代码,只是调用失败的Win32 API(通常是返回一些无用的通用错误代码,如0)。 您的代码不会进行后续GetLastError()调用,您可以检查其返回值以获取更多错误信息。 如何在不重新编译和重现失败的情况下得到错误值? 在监视窗口中input“GetLastError()”不起作用(“语法错误”)。

从C使用WinRT?

看着// BUILD的东西,我看到WinRT API可以被C代码使用: Win32开发人员可以使用全新的C API,我感到非常兴奋。 我在哪里可以find关于C WinRT API的信息? 如何比现有的Win32 C API更好?

玻璃上的渲染控制:find解决scheme,需要双缓冲/完善

我(终于!)find了一种方法来渲染Windows.Forms控件的玻璃上,似乎没有任何主要的缺点,也没有任何大的执行时间。 它的灵感来自Coded的这篇文章 ,它基本上解释了如何在本地重写绘制控件来绘制它们。 我使用这种方法将控件渲染到位图,并使用GDI +和适当的Alpha通道在NativeWindow的绘制区域上绘制。 实现很简单,但可以完善的可用性,但这不是这个问题的重点。 结果是相当令人满意的: 但是,有两个方面需要修改才能真正使用。 双缓冲 ,因为这个叠加图像和真正的控制之间的闪烁频繁和可怕(用自己的代码testing自己)。 将基本控件设置为使用SetStyles(this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true)进行双缓冲SetStyles(this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true)不起作用,但是我怀疑我们可以使它稍微试用一下。 一些控件不起作用 。 我已经能够做出以下工作: 文本框 MaskedComboBox combobox(DropDownStyle == DropDownList) 列表框 CheckedListBox 列表显示 树视图 的DateTimePicker 的MonthCalendar 但我不能让这些工作,虽然我不明白为什么不。 我的教育猜测是,我引用整个控件的实际NativeWindow句柄,而我需要引用它的“input”(文本)部分,可能是一个孩子。 欢迎来自WinAPI专家的关于如何获得input窗口句柄的任何帮助。 combobox(DropDownStyle!= DropDownList) 的NumericUpDown RichTextBox的 但是修复双缓冲将是可用性的主要焦点 。 以下是一个示例用法: new GlassControlRenderer(textBox1); 代码如下: public class GlassControlRenderer : NativeWindow { private Control Control; private Bitmap Bitmap; private Graphics ControlGraphics; […]

Windows API的最酷部分

我注意到在Stack Overflow上有很多关于编程语言和API的“提示和技巧”或“隐藏特性”的社区wiki。 但是我找不到我个人的最爱:Win32 API和Delphi。 因此,我开始我的“自己的”关于Win32 API的CW。 至less有两种Win API用户:那些在C / C ++中使用Windows API的用户,以及在Windows API之上使用某种抽象级别的用户。 我属于后一类,用Delphi的VCL提出来。 但在过去的五年里,我对Windows操作系统的底层API越来越感兴趣,今天我用了很多东西。 根据程序员属于哪个类别,他(或者可能她)会认为在Windows API中不同的东西是“酷”的。 举个例子,一个VCL开发的开发人员可能会觉得这很酷 var errIcon: HICON; begin errIcon := LoadIcon(0, IDI_ERROR); DrawIcon(Canvas.Handle, 10, 10, errIcon), 一个使用C语言编写的Windows API的程序员不会感到印象深刻。 但是,无论你如何“提高”,Windows API中最酷的“技巧”是什么? 我首先列出一些我自己的最爱,其中一些比“有用”更“酷”,但是: LoadIcon和MessageBeep可以加载/播放系统默认的图标和声音。 打开CD盘: mciSendString('Set cdaudio door open wait', nil, 0, 0); 淡出屏幕(Windows Vista及更高版本)并closures监视器: SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2); GetWindowDC(GetDesktopWindow)返回桌面的DC。 使用GetSystemMenu可以在窗口的系统菜单上添加/更改/删除菜单项。 有时非常好。 DrawThemeBackground和其他主题服务function,可以让您绘制当前主题的细节,无论您希望如何。 […]

ImportError:没有名为win32api的模块

我正在使用Python 2.7,我想在Windows 7上使用pywin32-214。我使用msi安装程序安装pywin32-214。 但是当我在我的Python脚本中导入win32api时,会抛出错误: no module named win32api. 我该怎么办? 我可以在Windows 7中使用pywin32 api吗?

如何删除名称以点(“。”)结尾的文件夹?

我得到了一些由恶意软件创build的文件夹,其名称以C:\a.\或C:\b.\等点结尾。 我发现一个解决scheme,可以删除命令rd /q /s "C:\a.\"这样的文件夹,但如果我调用win API RemoveDirectory ,它返回ERROR_FILE_NOT_FOUND 。 而我只是想知道如何编写一个函数来删除这样的目录,谢谢 我在我自己的Windows XP SP3系统上testing 创build一个文件夹C:\>mkdir a..\\\ ,我不能双击来访问这个文件夹。 我可以用命令rd /q /s "C:\a.\"来删除rd /q /s "C:\a.\" rd /q /s命令调用哪些Windows系统API?