问题标签 [windows-10-desktop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
409 浏览

win-universal-app - 桌面应用程序转换器“致命错误 1000”

尝试运行 Desktop App Converter (Project Centennial) 时收到以下错误:

相关脚本在 EnvironmentAssertions.ps1 中:

我在 Windows 功能中没有发现任何与容器相关的项目。

如何解决此错误?

Windows 10 Pro Insider Preview (build 14316) and Desktop App Converter preview (0.1.8.release_2016-04-05_17-47_5aa8cc)

0 投票
1 回答
99 浏览

c++-cli - 托管 C++ 类在 create_task 中崩溃

基本上,发生的事情是当尝试更改托管类 (UWP) 的变量时,它会崩溃。此外,如果我尝试修改使用 app 命名空间创建的变量,它似乎只会崩溃。换句话说,如果我创建一个新的 namspace 和托管类,我可以很好地修改变量。

碰撞

这不会崩溃

但是这个确实

我几乎肯定它与它在应用程序默认命名空间中以及它在主线程之外被访问有关......至少看起来是这样,因为这实际上是除了实际类之外的唯一区别。

这就是 GENERIC_ITEM 的样子。

我知道这个类没有问题,因为如果我在初始线程上运行完全相同的代码,它工作得非常好。

有什么建议么?谢谢!:D

0 投票
1 回答
2969 浏览

vb.net - 在 .net 桌面应用程序中访问 Windows 10 上的位置

我工作的公司有一个由我们的现场工作人员使用的应用程序,它定期注册他们的 GPS 位置,我们最初使用 System.Device.Location GeoCoordinateWatcher 类为 Windows 8 x86 编写了应用程序。

在 Windows 10 中,相同的代码不再正常运行,GeoCoordinateWatcher.Permission 返回 Granted,但每次调用我们都会继续收到未知位置。Windows 8 和 Windows 10 平板电脑都具有 LTE。

我们的日志文件显示了我们获得许可的每个调用,混合状态 = NoData 或 Initializing,并且位置始终未知。

我们确实在平板电脑上收到了应用程序正在访问位置信息的通知,并且我可以确认 GPS 确实在工作,因为内置的地图应用程序正确显示了当前的 GPS 位置。

有没有人对尝试解决正在发生的事情有什么建议?

0 投票
1 回答
1107 浏览

.net - 使用 C# winforms 捕获 Windows 10 重启/关闭事件

我正在尝试使用 C# winforms 捕获 Windows 10 重启/关闭事件。我正在编写一个需要完整记录空闲时间、锁定/解锁和 Windows 重新启动/关闭/注销时间戳的应用程序。

您能帮我指导相关链接或帖子吗,谢谢

0 投票
1 回答
1613 浏览

c# - 如何获取平板电脑的IMEI号码?

这不是 WinRT 应用程序。这是标准的WPF。该设备的行为与普通 Windows PC 一样,安装了 Windows 10。它有 3G 宽带调制解调器和一个 SIM 卡插槽。

0 投票
2 回答
545 浏览

uiwebview - Visual Studio 2015 应用程序属性窗口空引用错误

我正在 VS2015 中创建一个项目。我选择的模板是空白的通用应用程序。

尝试加载页面时发生错误。

对象“Microsoft.VisualStudio.ProjectFlavoring.Automation.Project.CommonProjectExtender”上的属性访问器“TargetDescriptions”引发以下异常:“值不能为空。参数名称:targets'。

错误信息

0 投票
2 回答
6947 浏览

windows - 缩放非客户区(标题栏、菜单栏)以支持每个显示器的高 DPI

Windows 8.1 引入了针对不同显示器具有不同 DPI 设置的功能。此功能称为“每个显示器的高 DPI 支持”。它仍然存在,并在 Windows 10中得到了进一步完善。

如果应用程序没有选择加入(不知道 DPI 或知道高 DPI),DWM 会自动将其放大到适当的 DPI。大多数应用程序都属于这两个类别之一,包括大多数与 Windows 捆绑在一起的实用程序(例如,记事本)。在我的测试系统上,高 DPI 显示器设置为 150% 比例(144 DPI),而普通显示器设置为系统 DPI(100% 比例,96 DPI)。因此,当您在高 DPI 屏幕上打开其中一个应用程序(或将其拖到那里)时,虚拟化就会启动,放大所有内容,但也会使其变得非常模糊。

另一方面,如果应用程序明确表明它支持每台显示器的高 DPI,则不会执行任何虚拟化,并且开发人员负责扩展。微软在这里有一个相当全面的解释*,但为了一个独立的问题,我会总结一下。首先,您通过在清单中设置来表示支持<dpiAware>True/PM</dpiAware>。这会让您选择接收WM_DPICHANGED消息,它会告诉您新的 DPI 设置以及窗口的建议新大小和位置。它还允许您调用GetDpiForMonitor函数并获取实际的DPI,而不会出于兼容性原因而被欺骗。Kenny Kerr 还编写了一个综合教程

我已经在一个小的 C++ 测试应用程序中成功完成了所有这些。这是很多样板文件,主要是项目设置,所以我认为在这里发布一个完整的例子没有多大意义。如果您想对其进行测试,请按照 Kenny 的说明、MSDN 上的本教程,或下载官方 SDK 示例。现在,客户区的文本看起来不错(因为我对 的处理WM_DPICHANGED),但是由于不再执行虚拟化,因此非客户区没有缩放。结果是标题/标题栏和菜单栏的大小错误——它们在高 DPI 屏幕上没有变大:

所以问题是,如何让窗口的非客户区缩放到新的 DPI?
无论您是创建自己的窗口类还是使用对话框都没有关系——它们在这方面具有相同的行为。

有人建议没有答案 - 您唯一的选择自定义绘制整个窗口,包括非客户区。虽然这当然是可能的,并且确实是 UWP 应用程序(以前称为 Metro)所做的,例如 Windows 10 计算器,但对于使用许多非客户端小部件并希望看起来像原生的桌面应用程序来说,它不是一个可行的选择。

除此之外,它显然是错误的。自定义绘制的标题栏不是获得正确行为的唯一方法,因为 Windows shell 团队已经做到了。不起眼的“运行”对话框的行为与预期完全一样,当您在具有不同 DPI 的显示器之间拖动它时,会正确调整客户端和非客户端区域的大小:

使用 Spy++ 进行的调查证实这只是一个标准的 Win32 对话框——没什么特别的。所有的控件都是标准的 Win32 SDK 控件。它不是 UWP 应用程序,他们也没有自定义绘制标题栏——它仍然具有WS_CAPTION样式。它由 explorer.exe 进程启动,该进程标记为 per-monitor 高 DPI 感知(通过 Process Explorer 和 GetProcessDpiAwareness 验证)。这篇博文确认运行对话框和命令提示符都已在 Windows 10 中重写以正确扩展(请参阅“命令 shell 等”)。运行对话框在做什么来调整其标题栏的大小?

Common Item Dialog API负责新型打开和保存对话框,当从每个监视器高 DPI 感知的进程启动时,它也可以正确缩放,正如您在“运行”对话框中单击“浏览”按钮时所看到的那样。Task Dialog API也是如此,创造了一个奇怪的情况,即应用程序启动一个带有不同大小标题栏的对话框。(但是,旧的 MessageBox API 尚未更新,并且表现出与我的测试应用程序相同的行为。)

如果外壳团队正在这样做,它必须是可能的。我只是无法想象负责设计/实现每个监视器 DPI 支持的团队忽略了为开发人员提供一种合理的方式来生成兼容的应用程序。像这样的功能需要开发人员的支持,或者它们是开箱即用的。甚至 WPF 应用程序都损坏了——Microsoft 的Per-Monitor Aware WPF 示例项目无法缩放非客户区,导致标题栏的大小错误。我不太喜欢阴谋论,但这闻起来像是一种阻止桌面应用程序开发的营销举措。如果是这样,并且没有官方方式,我将接受依赖于无证行为的答案。

说到未记录的行为,当在具有不同 DPI 设置的监视器之间拖动“运行”对话框时记录窗口消息表明它收到了未记录的消息,0x02E1. 这有点有趣,因为此消息 ID 恰好比记录的WM_DPICHANGED消息 ( 0x02E0) 大一。但是,无论其 DPI 感知设置如何,我的测试应用程序都不会收到此消息。(奇怪的是,仔细检查确实显示,当窗口移动到高 DPI 显示器上时,Windows略微增加了标题栏上最小化/最大化/关闭字形的大小。它们仍然没有虚拟化时那么大,但它们比它用于未缩放的系统 DPI 应用程序的字形略大。)

到目前为止,我最好的想法是处理WM_NCCALCSIZE消息以调整非客户区的大小。通过使用带有函数SWP_FRAMECHANGED的标志,我可以强制窗口调整大小并重新绘制其非客户区以响应. 这可以很好地降低标题栏的高度,甚至完全删除它,但它永远不会让它变得更高。标题似乎在系统 DPI 确定的高度达到峰值。即使它有效,这也不是理想的解决方案,因为它对系统绘制的菜单栏或滚动条没有帮助……但至少这是一个开始。其他想法?SetWindowPosWM_DPICHANGED

* 我知道这篇文章说“请注意,每台显示器的非客户区 - DPI 感知应用程序不会被 Windows 缩放,并且在高 DPI 显示器上会按比例缩小。” 请参阅上文,了解为什么 (1) 错误和 (2) 不令人满意。我正在寻找一种解决方法,而不是自定义绘制非客户区域。

0 投票
1 回答
1731 浏览

cmd - 输入命令访问目录时出现命令提示错误

我打开cmd C:\Users\Anonymous>

当我尝试访问某些内容时,它显示:

在此处输入图像描述

早些时候,path环境变量是空的,所以我输入

小路

需要修复!

0 投票
0 回答
267 浏览

windows-10 - 通用 Windows 平台中的耳机连接事件(或检查)

当耳机连接到我的 UWP 应用程序中的平板电脑或台式电脑时,我需要捕捉事件。该应用程序的 ARM 版本(适用于 UWP 设备的 Mobile 系列)捕获诸如事件之类的Windows.Phone.Media.Devices.AudioRoutingManager.GetDefault().AudioEndpointChanged事件。x86 和 x64 应用程序有什么相似之处吗?

0 投票
0 回答
1113 浏览

visual-c++ - Windows-10 LoadLibraryA 失败并出现错误 126

我的应用程序调用 LoadLibraryA 来动态加载 dll。这在带有VS-2013的Windows-7上运行良好,但在带有VS-2015的Windows-10(UWP)上会出错。 该应用程序是用 Java 编写的,它试图加载我们的本机 dll(用 C++ 编写) 在 Windows-10 上,我从GetLastError()收到错误126

指定的模块无法找到

我在为 LoadLibraryA 函数指定的 dll 路径中看不到任何问题,因为在 Windows-7 中,相同的路径可以正常工作。

似乎Dependency Walker不适用于 Windows-10。同样,我不怀疑依赖项有任何问题,因为加载 dll 在我的 Windows-7 上正常工作