Articles of winapi

我可以使用CreateFile,但强制句柄到一个std :: ofstream?

有没有办法利用Win32 API中的文件创build标志,如FILE_FLAG_DELETE_ON_CLOSE或FILE_FLAG_WRITE_THROUGH ,如http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx所述 ,但是然后强制该句柄成std :: ofstream? 与stream媒体的接口显然是平台独立的; 我想强制一些依赖于平台的设置在“引擎盖下”。

好或坏 – SetParent()win32 API在不同的进程之间

SetParent函数需要一个子窗口和新的父窗口句柄。 当子窗口处于不同的Windows进程中时,这也似乎工作。 我曾看过一篇声称这不是官方支持的post ,但目前的文档没有提到这一点。 这是目前文件中的缺陷,还是这种行为改变? HWND WINAPI SetParent( __in HWND hWndChild, __in_opt HWND hWndNewParent );

窗口 – 如何枚举所有连接的USB设备的设备path?

我正在尝试使用SetupDi函数来枚举所有连接的USB设备的设备path。 设备path是CreateFile()中使用的path,所以我可以与设备进行通信。 但是, SetupDiGetDeviceInterface需要一个接口GUID,但我并不特别寻找特定的接口(除了所有连接的USB)。 这部分已被评论为/ * ??? * /在下面的源代码中。 尝试解决scheme: 我尝试提供GUID_DEVCLASS_UNKNOWN = {0x4d36e97e,0xe325,0x11ce,{0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18}}; 但是这抛出了一个“没有更多的接口”的错误。 我也尝试提供deviceInfoData.ClassGuid到SetupDiGetDeviceInterface,但我得到了同样的错误,如上所述,“没有更多的接口”。 问题: 是否有覆盖所有USB设备的通用接口类? (HID,通用等) 还是有一个替代function,将给我的设备的path? (由SetupDiGetDeviceInterfaceDetail返回的SP_DEVICE_INTERFACE_DETAIL_DATA结构的Instread)。 资源: HDEVINFO deviceInfoList SP_DEVINFO_DATA deviceInfoData; deviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); SP_DEVICE_INTERFACE_DATA deviceInterfaceData; PSP_DEVICE_INTERFACE_DETAIL_DATA deviceInterfaceDetailData = NULL; DWORD requiredLength = 0; char *hardwareID = 0; // Retrieve a list of all present devices deviceInfoList = SetupDiGetClassDevs(NULL, NULL, NULL, […]

我怎样才能模拟在x,y坐标,使用SendInput的双击鼠标(我khow句柄)上的双击鼠标?

我怎样才能模拟双击鼠标点击窗口(我知道这个窗口的句柄)在x,y坐标,使用SendInput?

如何“安全”删除文件夹到回收站

我正在寻找一种方法将文件夹(与子文件夹)放入一个回收站与这些条件: 它必须默默地完成 – 没有任何 Windows用户界面。 该文件夹不能永久删除。 如果它不能被放入回收站,我希望API失败。 获取像CopyFileEx这样的过程的callback例程。 到目前为止,我能够想出这个: SHFILEOPSTRUCT sfo = {0}; sfo.wFunc = FO_DELETE; sfo.pFrom = L"K:\\test del from USB\0"; //Folder on a USB stick sfo.fFlags = FOF_ALLOWUNDO | FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR | FOF_WANTNUKEWARNING; int res = SHFileOperation(&sfo); BOOL bFullSuccess = res == 0 && !sfo.fAnyOperationsAborted; 在USB闪存驱动器上的文件夹可怕地失败,即,即使FOF_ALLOWUNDO标志被永久删除。 所以不pipe我是不是做对了,或者SHFileOperation API是错误的! […]

插入字节到文件的中间(在Windows文件系统中)而不读取整个文件(使用文件分配表)?

我需要一种方法将一些文件簇插入到文件的中间以插入一些数据。 通常情况下,我只是读取整个文件并将其重新写回,但这些文件的大小是几千兆字节,只需要30分钟即可读取文件并将其重新写回。 簇的大小不会打扰我; 我基本上可以写出零到我的插入群集的结尾,它仍然会以这种文件格式工作。 如何使用Windows File API(或其他一些机制)修改文件的文件分配表,在文件中间的指定位置插入一个或多个未使用的集群?

什么是Windows上的最大进程ID?

什么是我可以通过调用DWORD GetProcessId(HANDLE)或DWORD GetCurrentProcessId()获得最大的进程ID? 它没有logging在API的文档页面上。

语言栏在c#.NET中改变语言

TL; DR :尝试解决InputLanguage更改input布局但不更新语言栏显示的问题。 我正在为Trados Studio编写一个自定义插件。 其中的一部分是与应用程序本身和Word中的语言进行交互,就像这个问题一样: Windows .NET框架的所有可用语言列表 我似乎无法解决的最后一个问题是,在我使用InputLanguage设置键盘inputen-US的代码的一部分。 要说明的是, API是有限的,所以我必须在某些方面实现自动化。 最好的方法是在应用程序中使用默认的快捷方式: 首先,我将input语言改为en-US。 然后我发送一些密钥给应用程序。 然后我将input语言改回原来的样子。 然后我显示一个表单。 这里是代码: //change input language to English InputLanguage currentLang = InputLanguage.CurrentInputLanguage; InputLanguage newLang = InputLanguage.FromCulture(System.Globalization.CultureInfo.GetCultureInfo("en-US")); if (newLang == null) { MessageBox.Show("The Upload Project function requires the En-US keyboard installed.", "Missing keyboard", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } else { InputLanguage.CurrentInputLanguage = newLang; […]

枚举EnumFontFamiliesEx函数时字体太多

我正在尝试创build一个供用户select的字体列表。 我通过使用EnumFontFamiliesEx函数来做到这一点,但不幸的是,返回的字体列表太长了。 有许多额外的字体看起来轻浮,重复,不同的语言,否则不希望显示给用户。 我的截图最好地说明了我想要过滤掉的垃圾。 我调用EnumFontFamiliesEx代码如下所示: LOGFONT lf; memset(&lf, 0, sizeof(lf)); lf.lfCharSet = DEFAULT_CHARSET; // screenDC is result of CreateCompatibleDC(NULL) EnumFontFamiliesEx(screenDC, &lf, GetFontsCallback, NULL, 0); 结果列表看起来像这样,按字母顺序sorting和删除重复的脸名称的字体: 正如你所看到的, ChooseFont字体公共对话框显示了一个非常合理的字体列表,用户友好和有意义。 另一方面,我的代码显示了一长串额外的字体:以“@”开头的字体(为什么?它们甚至是什么?),Arial字体的另外三种变体,以及其他一些未知目的的字体,如Aheroni,安达卢斯,Angsana New,Angsana UPC等等。 这是疯了。 如何过滤由EnumFontFamiliesEx返回的字体列表,使其与ChooseFont对话框中显示的列表完全匹配?

如何使用Win32 API制作多个窗口

我看到大量的教程和文章向我展示了如何制作一个简单的Windows程序,这很棒,但是没有一个告诉我如何制作多个窗口。 现在我有创build和绘制分层窗口的工作代码,我可以使用GDI来绘制任何东西,拖动它,甚至使其透明等等。 但是我想要第二个矩形区域,我可以拖动,等等。换句话说,第二个窗口。 可能希望它是一个孩子的窗口。 问题是,我该怎么做呢? 此外,如果有人知道任何良好的资源(在线优先)像Windows API中的窗口pipe理文章或教程,请分享。