Articles of winapi

如何在VC ++中创build锁?

比方说,我正在实施一个关键的部分,并保护VC ++中的一些数组,我怎么在VC ++中使用锁?

Windows API代码包缩略图给出PDF的预览拇指,但不是Word或Excel

我正在使用Microsoft API代码包并具有使用以下代码的处理程序 string filename = "C:\\Hello.pdf"; ShellFile shellFile = ShellFile.FromFilePath(filename); Bitmap bitmap = shellFile.Thumbnail.ExtraLargeBitmap; context.Response.ContentType = "image/jpeg"; bitmap.Save(context.Response.OutputStream, ImageFormat.Jpeg); 这工作正常,为PDF文档生成一个“预览”样式的缩略图,但是当我用Word或Excel试用时,我得到了文件types的通用缩略图,而不是文档的迷你图像(这是我正在寻找的) 。 任何人都有这个想法? 可以使用这个API来完成吗?

CoWaitForMultipleHandles API的行为不像logging

这是我看到的另一个问题引发的。 阅读可能太长,请耐心等待。 显然, CoWaitForMultipleHandles行为不像MSDN上logging的那样。 下面的代码(基于原始问题)是一个控制台应用程序,它启动一个testingWin32窗口的STA线程,并尝试发布和泵送一些消息。 它在CoWaitForMultipleHandles上做了三个不同的testing,都没有 COWAIT_WAITALL标志。 testing#1旨在validation这一点 : COWAIT_INPUTAVAILABLE如果已设置,则即使input已经被查看(但未被删除),但对CoWaitForMultipleHandles的调用将返回S_OK,如果队列中存在input,则会调用另一个函数(例如PeekMessage)。 这不会发生, CoWaitForMultipleHandles阻塞,并不会返回,直到等待手柄信号。 我假设任何挂起的消息应该被视为input (与MWMO_INPUTAVAILABLE的MsgWaitForMultipleObjectsEx相同,预计工作)。 testing#2旨在validation这一点 : COWAIT_DISPATCH_WINDOW_MESSAGES允许从ASTA或STA中的CoWaitForMultipleHandles分派窗口消息。 在ASTA中默认是没有窗口消息派发,STA中的默认只是一小组调度的特殊的消息。 该值在MTA中没有意义,并被忽略。 这也不pipe用。 当CoWaitForMultipleHandles调用COWAIT_DISPATCH_WINDOW_MESSAGES时,会立即返回错误CO_E_NOT_SUPPORTED (0x80004021)。 如果是COWAIT_DISPATCH_WINDOW_MESSAGES | COWAIT_DISPATCH_CALLS的组合 COWAIT_DISPATCH_WINDOW_MESSAGES | COWAIT_DISPATCH_CALLS ,呼叫块但不会泵送任何消息。 testing#3演示了我可以使CoWaitForMultipleHandles泵送调用线程的Windows消息队列的唯一方法。 这是COWAIT_DISPATCH_WINDOW_MESSAGES | COWAIT_DISPATCH_CALLS | COWAIT_INPUTAVAILABLE的组合 COWAIT_DISPATCH_WINDOW_MESSAGES | COWAIT_DISPATCH_CALLS | COWAIT_INPUTAVAILABLE COWAIT_DISPATCH_WINDOW_MESSAGES | COWAIT_DISPATCH_CALLS | COWAIT_INPUTAVAILABLE 。 这确实泵和发送消息,虽然显然这是一个无证的行为。 testing代码 (一个准备运行的控制台应用程序): using System; using System.Runtime.InteropServices; using System.Threading; […]

一个窗口可以总是在另一个窗口上面吗?

在Windows中,是否可以设置窗口A,使窗口始终位于窗口B的顶部,但允许其他窗口正常工作,并在活动时显示在两者的顶部。 换句话说,我想在两个窗口之间build立一个父子关系。 这可以做到不使窗口A,窗口B,MDI风格的孩子? 窗口B不是我的(Internet Explorer),当我尝试用SetParent实现这个function时,将对话框A的graphics拧紧。 我以为我从MSDN论坛上发布这个想法来破解它,但是A窗口仍然总是处于顶端,而不仅仅是窗口B. // Place window A on top SetWindowPos(hWndWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); // Place window B underneath it SetWindowPos(hWndParent, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); 可能吗?

编写Windows端口监视器基础

我试图find一个基本的例子,教程或博客文章如何编写一个打印机端口监视器。 我下载了Windows DDK并通过localmon挖出来,但看起来这个示例比单纯的基础知识要复杂得多,根据我的理解,它与OEM端口监视器有点不同,因为它处理registry键和端口枚举。 有没有人知道一个博客文章,教程,甚至是书籍,通过基本的代码来引导读者走上前去? 我已经find了几个关于概念性的东西的链接,但没有什么是代码的手。

使用SystemParametersInfo协助

尝试使用SystemParametersInfo时,我已经卡住了。 我使用德沃夏克键盘,所以我想做一个exe,我可以双击每当我想改变键盘布局。 我用C#使用SystemParametersInfo。 我可以检索当前的input语言就好了。 但是,当我尝试设置input语言时,我得到一个返回值为false,并且input语言不会更改。 预先感谢您的任何帮助。 这是我正在使用的代码: class KeyboardSwitcher { [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref uint pvParam, uint fWinIni); private const uint SPI_GETDEFAULTINPUTLANG = 0x0059; private const uint SPI_SETDEFAULTINPUTLANG = 0x005A; private const uint SPIF_UPDATEINIFILE = 0x01; private const uint SPIF_SENDWININICHANGE = 0x02; private […]

如何从WindowslockingWindows(如“Windows + L”)?

您可以通过按Windows + LlockingWindows PC。 如何lockingWindows PC使用VB.NET或C#? 一个简短的例子会有所帮助。

我可以从对话框的DoModal函数返回一个自定义值吗?

我想要做的是,用DoModal()创build一个对话框并在框中按OK退出它,以返回一个自定义值。 例如,用户可以在对话框中input几个string。

我怎样才能隐藏鼠标光标?

我想问一下,如果有人可以提供一个c ++代码,我可以隐藏/显示按下特定键时的鼠标指针..我发现了几个代码只写TURBO C + +,其中没有一个可以编译和运行使用dev C ++甚至可视化C ++ .. 我试着运行我在Dev C ++中find的代码,但是我只能得到很多错误和不兼容。 我也发现了几篇文章,说我可以使用ShowCursor函数,但它不会工作..

使用Win32 / C ++读取PNG

没有简单的方法来读取PNG文件到本地Windows中的内存位图似乎是不可能的,但经过大量的谷歌search,我开始相信它。 libpng / zlib组合太大了。 任何第三方库Win32库在那里阅读一个PNG? 编辑:boost :: gil :: png解决scheme比我希望的复杂得多。 只需要一个调用文件名并用像素填充内存缓冲区。