Articles of windows 8.1

在Windows 8上声明每个窗口的高DPI认知度

我正在开发在Cubase等主机上运行的audio插件,我正在寻求增加高DPI支持。 这是有问题的,因为我知道的所有主机应用程序都声明自己的DPI是非高的,所以所有的窗口都由DWM自动缩放。 我正在寻找一种方法来closures插件窗口的DWM DPI缩放,即使主机本身不支持DPI(所以它使用所有其他窗口的DWM DPI缩放)。 有谁知道这是可能的吗? 对于使用大量插件(如audio主机)的应用程序来说,这是一个非常现实的问题,因为他们不能直接宣称自己的DPI意识很高:这会破坏所有现有的插件。 所以除非Windows为此提供解决scheme,否则我们总是被困在96 dpi的土地上。 基本上我认为我们需要一个比设置每个进程更细粒度的解决scheme,因此主机和插件可以单独声明他们的感知级别。 如果目前无法完成,是否有办法与Microsoft工程师联系,以便将其添加到未来版本的Windows中?

如何指定在Windows 10上运行的Windows 8.1应用程序的初始窗口大小

是否可以设置在Windows 10上运行的Windows 8.1应用程序的默认窗口大小? 我知道这可以通过使用Windows 10中引入的API来完成UWS应用程序。但是,将应用程序转换为Windows 10需要一些时间。 在此期间,我希望能够发布一个快速修复,以确保当前的Windows 8.1应用程序启动与正确的大小。 有谁知道如何做到这一点?

如何使Windows 8.1知道我的Delphi应用程序想要支持每个监视器DPI?

我试图让Windows 8.1识别出我一直在尝试构build的Delphi XE6应用程序(一个演示程序),并且只有通过Manifest技术才能识别我的应用程序是Per-Monitor DPI。 Delphi XE6(以及所有其他类似Delphi的最新版本)使得在Project Options中添加一个易于执行的清单,并且我已经这样做了。 这是我使用MSDN资源确定的.manifest内容。 我怀疑它可能会稍微不正确。 如果你想尝试这个清单,做一个空的VCL应用程序,使用这个内容作为你的清单,并添加代码(代码是目前附加到我对这个问题的答案)。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" > <!– Per Monitor DPI Awareness in Windows 8.1 uses asmv3:application + asmv3:windowsSettings –> <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>True</dpiAware> </asmv3:windowsSettings> </asmv3:application> <!– Dear Microsoft, Don't Lie to Me About What Version of Windows I am On –> <compatibility […]

在Windows 7/8/10 Win32 C ++中检测/识别显示器连接的端口(HDMI,其他)

我能够检测到所有连接到我的系统的显示器。 我能够使用以下Windows API调用获取大量的相关信息: EnumDisplayMonitors GetMonitorInfo EnumDisplayDevices 我正在开发的系统是带2个显示器的AIO(一体机)。 它有一个外部HDMI输出,我可以连接和外部显示器。 然后,通过端口复制器,我可以连接第四台显示器。 所有的显示器扩展我的桌面,他们都工作正常。 我的任务是检测通过HDMI端口连接的显示器。 我能够使用上述API提取的监视器信息不会提供任何特定的信息,通过它我将能够检测端口types(例如HDMI或USB)。 有谁知道使用什么API? 谢谢!

检查计算机从hibernate状态恢复的原因

我正在创build一个应用程序,使计算机hibernate几个小时甚至整整一周(使用WaitableTimer和WaitForSingleObject)。 计算机唤醒的原因有三个 等待定时器过期,计算机按计划恢复。 用户按下恢复电脑的电源button。 计算机意外启动。 前两个理由是完全可以接受的,它们是系统devise的目的。 第三个原因当然不是很好。 我希望能够区分这三个原因。 有没有办法做到这一点? 在这里看来,在第一种情况下, WaitForSingleObject方法应该返回WAIT_OBJECT_0 (source) 。 如果情况并非如此,那么情况2或3,但我不知道如何区分两者。 有没有API来检查从待机恢复的原因? 另一个(更好的)选项是禁止其他设备/软件唤醒计算机(例如消除scheme3)。 当我运行powercfg -devicequery -wake_armed (当我运行命令现在返回NONE)时,我禁止了所有设备的唤醒function。 是否有类似的方法来查看所有已安排计算机唤醒的(活动)软件? (如果它的任何帮助计算机这个软件是专为一个表面3亲,安装了包括(和更新)的Windows 8.1操作系统)

用什么来select多个文件(媒体文件),并在自定义/所需索引的StorageFile集合中检索它们?

我有一个列表,我检索多个MP3文件。 现在,当我想再次添加文件时,我从picker中select文件,但它们覆盖了IReadOnlyList文件列表中的以前的文件 我想如果我再select文件…那么他们应该去filesList的下一个索引 例如:我第一次select3个文件,他们去filesList [0],filesList [1],filesList [2]。 现在我再次点击addmusicbtnselect文件,我挑选2个文件。 现在我想要的是获得filesList [3]和filesList [4]这些文件。 但IReadOnlyList不允许这样做,它开始从索引0存储。 我也试过IList,但它不能与文件选取器一起工作 IReadOnlyList<StorageFile> fileList; private async void addmusicbtn_Click(object sender, RoutedEventArgs e) { var fop = new FileOpenPicker(); fop.FileTypeFilter.Add(".mp3"); fop.FileTypeFilter.Add(".mp4"); fop.FileTypeFilter.Add(".avi"); fop.FileTypeFilter.Add(".wmv"); fop.ViewMode = PickerViewMode.List; fileList = await fop.PickMultipleFilesAsync(); foreach (StorageFile file in fileList) { mlist.Items.Add(file.Name); stream = await file.OpenAsync(FileAccessMode.Read); } mediafile.SetSource(stream, file.ContentType); mediafile.Play(); }

与Windows的MQTT-SN

我在Windows上运行了一段时间的MQTT(Mosquito),并且使用了我的Netduino,感谢ppatierno。 但是现在我需要开始将mqtt-sn用于Arduino的有线串行连接。 有一个能够无线的解决scheme也是需要的。 我找不到在Windows上完成此任何参考。 是否需要cygwin socat(宁愿避免)和蚊子或什么的一些组合?

以编程方式在Windows 8上排列文件夹

Windows 8似乎不会在个别文件夹上保留sorting顺序。 我猜测当explorer.exe终止(如重新启动时)这些偏好被丢弃? 打我,我所知道的是一段时间后(如几天),这些偏好完全丧失。 有没有办法在Windows资源pipe理器中以编程方式复制文件夹的sorting(select上下文菜单中的“sorting”选项之一)? 这样,说我有一个文件夹在Windows用户界面中打开。 说当前文件夹设置为按“名称”进行sorting,运行程序后,将按大小对其进行sorting,我再次检查Windows资源pipe理器中的sorting顺序,现在它说“大小”? 我有一个特定的大文件夹结构,我希望它的所有和它的子文件夹按大小永久sorting。 所以我想在查看它们之前运行这个程序,而不必单独手动重新sorting它们。 谢谢!

如何停止Explorer启动我的应用程序最大化?

资源pipe理器似乎总是用SW_MAXIMIZE启动我的应用程序(在STARTUPINFO.dwFlags设置了STARTF_USESHOWWINDOW )。 我知道ShowWindow将在你第一次需要显示一个窗口时使用这个值,但是它具有最大化一个永远不会被最大化的窗口的不幸结果。 我的窗口使用CreateDialogIndirectParam创build,并具有以下样式: WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_CLIPCHILDREN|DS_MODALFRAME|DS_CENTER|WS_VISIBLE 。 为什么在允许STARTF_USESHOWWINDOW强制SW_MAXIMIZE之前, ShowWindow不检查是否设置了SW_MAXIMIZE ? 这是Windows中的错误? 这发生在使用Windows 8.1的HP Stream 7上。 我不确定Explorer是否会执行此操作,因为它是启用了触摸的,或者是因为屏幕较小。 这个资源pipe理器的行为logging在任何地方,有没有办法把它关掉? 停止Explorer(或任何其他父进程)影响我的初始窗口模式的最佳方法是什么? (我不想阻止用SW_*MINIMIZE*启动我的人) 系统32中的WinVer.exe具有相同的问题:

包含WinAPI(Win8)组件的WPF应用程序

我有一个使用手写控制的WPF应用程序。 通过使用一个 <InkCanvas></InkCanvas> 在我的XAML中,我能够获得用户的笔画,并使用InkAnalysis类将其转换为文本。 但是,这是严格的32位,我的要求决定了一个64位版本。 无法find一个64位兼容的库,我考虑升级到.NET 4.5,并利用桌面应用程序可用的Windows8类(通过将<TargetPlatformVersion> 8.1 </ TargetPlatformVersion>添加到csproj文件,以便我可以添加“ Windows'命名空间引用)。 幸运的是,Windows.UI.Input.Inking是。 但是,当我添加引用到Windows.UI.Input.Inking,我得到一个生成错误,指出: Unknown build error, 'Cannot resolve dependency to Windows Runtime type 'Windows.Foundation.Metadata.PlatformAttribute'. When using the ReflectionOnly APIs, dependent Windows Runtime assemblies must be resolved on demand through the ReflectionOnlyNamespaceResolve event.' 我已经看过: Windows.Foundation.Metadata.PlatformAttribute 它似乎想要一个枚举成员,要么: Windows.Foundation.Metadata.Platform.Windows 要么 Windows.Foundation.Metadata.Platform.WindowsPhone 这是一个桌面应用程序,所以我显然会selectPlatform.Windows的目标,但不知道如何告诉编译器。 我怎样才能将这个Windows.UI.Input.Inking类到我的WPF应用程序? 我的最终目标是在64位环境中简单地将笔划从inkcanvas转换为文本。