Articles of winapi

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; […]

Win32 API来判断给定的二进制文件(EXE或DLL)是x86,x64还是ia64

我试图find一个编程方式来判断一个二进制文件是x86,x64还是ia64。 平台:Windows。 语言:c / c ++。 背景:在尝试加载第三方DLL之前,我需要找出它的位。 欣赏任何指针。

是否有一个Vista的API来检测桌面是否全屏运行?

例如,用户正在全屏播放电影,还是在全屏模式下查看幻灯片? 我可以发誓之前,我看到一个IsFullScreenInteractive API,但现在找不到它

如何以编程方式将控制台字体设置为Raster Font?

在运行时,如何确保命令提示符的当前字体是默认的光栅字体? 我正在使用C ++与WinApi。 现在我已经使用GetConsoleFontEx(); 和SetConsoleFontEx(); ,但我一直无法findCONSOLE_FONT_INFOEX的FaceName属性的正确值。 我在网上find了一些字体设置为Lucida和/或Consolas的例子,但那不是我要找的。 这是我现在的代码片段: COORD fs = {8, 8}; CONSOLE_FONT_INFOEX cfie = {0}; cfie.cbSize = sizeof(cfie); GetCurrentConsoleFontEx(hOut, 0, &cfie); char fn[] = "Raster"; // Not really doing anything strcpy_s((char*)cfie.FaceName, 32, fn); // Not sure if this is right cfie.dwFontSize.X = fs.X; cfie.dwFontSize.Y = fs.Y; SetCurrentConsoleFontEx(hOut, 0, &cfie); 我testing了SetCurrentConsoleFontEx()的返回值,它是非零的,表示调用成功。 虽然字体不会改变。

有没有办法通过Python 3最小化Windows 7中的窗口?

我正在运行一个内置Python解释器的程序。 定期我希望该程序能够“全屏”或最小化。 这将在Windows 7上运行。 我想知道是否有办法在Python中做到这一点(以便我可以从我的程序中调用该函数)。 只使用标准库是理想的,但是如果有一种方法可以用外部模块来完成,那也可以。 谢谢。

AttachConsole的最低版本要求是什么?

在线PSDK文档状态5.1(WinXP): 要编译使用此函数的应用程序,请将_WIN32_WINNT定义为0x0501或更高版本。 有关更多信息,请参阅使用Windows头。 要求 最低支持的客户端 :Windows XP [仅限桌面应用] 最低支持的服务器 :Windows Server 2003 [仅适用于桌面应用程序] 老版本的PSDK doc与上面的模糊不清,并试图说明5.0(Win2k)或5.1: 要编译使用此函数的应用程序,请将_WIN32_WINNT定义为0x0500或更高版本。 有关更多信息,请参阅使用SDK头。 要求 客户端:需要Windows Vista或Windows XP。 服务器:需要Windows Server“Longhorn”或Windows Server 2003。 最后,PSDK标题(相当老)也主张Win2k: #if(_WIN32_WINNT >= 0x0500) WINBASEAPI BOOL WINAPI AttachConsole( __in DWORD dwProcessId); #define ATTACH_PARENT_PROCESS ((DWORD)-1) #endif /* _WIN32_WINNT >= 0x0500 */ 我没有任何比WinXP SP3更老的东西来检查kernel32.dll导出目录,所以请赐教我什么是真正的最低支持的版本, 5.0或5.1 ?

无限的Windows消息循环

我在我的程序中有这个消息循环: while (true) { if (PeekMessage(&msg, window, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) { MessageBox(NULL, L"Quit", L"", 0); break; } TranslateMessage(&msg); DispatchMessage(&msg); } else { Render(); } } 这个循环不会结束。 即使主窗口消失,它也不会显示消息框。 这是WndProc代码: switch (msg) { case WM_CLOSE : DestroyWindow(hwnd); break; case WM_DESTROY : PostQuitMessage(0); break; default : return DefWindowProc(hwnd, msg, wParam, lParam); break; } […]

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

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

使用Win32 / C ++读取PNG

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