问题标签 [winrt-component]
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.
image - 在 UWP WinRt 中,如何在现有 PDF 页面中插入图像
我正在寻找一种从 UWP 应用程序在 PDF 文件中插入图像的解决方案。
我需要创建一个新的 pdf,并在 PDF 文件上标记图像(不扭曲 PDF 质量)并将其导出给用户。
目前我正在打印扭曲 PDF 导出质量的文档。
请提出一些有用的参考。
我尝试从 iText 库开始,但 UWP 应用程序不支持它。
提前致谢.. :)
uwp - UWP 代理的 Windows 运行时组件构建错误
我使用 VS2017 和 windows 10 创建了一个简单的 .Net 类库,并将输出类型更改为 winmdobj,如本 msdn 指南中所述: https ://docs.microsoft.com/en-us/windows/uwp/winrt-components/brokered -windows-runtime-components-for-side-loaded-windows-store-apps 但之后我构建了代码,但出现以下错误:
平台属性“Windows.Foundation.Metadata.ActivatableAttribute”在未引用或没有预期构造函数的程序集中定义。请确保您的程序集引用包括 .NET Framework 和 Windows 运行时平台程序集,例如 System.Runtime.dll 和 Windows.winmd。
我添加了对 System.Runtime.dll 和 Window.winmd 的引用,但仍然给我同样的错误
我是否使用了错误的参考资料?请问有什么帮助吗?
c# - WinRT 应用程序和遍历目录
我正在开发我的第一个WinRT应用程序,但似乎找不到任何代码可以让我遍历目录并获取该目录中的文件名?
我发现很多代码可以在普通的 winform、wpf 和控制台中执行此操作,但对于Winrt种类来说却没有。
我最接近的代码:
但这似乎只是获得了我自己项目中的文件?
我将如何扫描像“c:\something\something”这样的普通目录?
c# - 从 Windows 运行时组件访问 UI 线程仅在移动设备上引发异常
我有以下问题。我正在使用一个简单的 Windows 运行时组件在应用程序和WebView
. 我正在根据文档执行此操作
这是 Windows 运行时组件的代码
在OnNavigatedTo
我初始化WebViewInjectionObject
并订阅OnNotifyApp
事件的方法中。
然后在NavigationStarting
我WebView
打电话AddWebAllowedObject
的情况下WebView
然后与 WebView 交互的方法中的代码WebViewInjectionObject_OnNotifyApp
如下所示。
在桌面(版本 1709,内部版本 16299.371)上运行它时,一切正常。
在手机(版本 1709 和版本 1607)上运行它时,我得到了这个异常。
应用程序调用了为不同线程编组的接口。(来自 HRESULT 的异常:0x8001010E (RPC_E_WRONG_THREAD))
通常通过使用 dspatcher 从 UI 线程进行调用来解决此类欺骗。我试着做followig
但这导致了更深层次的例外
对 ASTA 的 COM 调用被阻止,因为调用链源自或通过另一个 ASTA。这种呼叫模式容易发生死锁,并且被公寓呼叫控制所禁止。对 ASTA(线程 3036)的 COM 调用(IID:{638BB2DB-451D-4661-B099-414F34FFB9F1},方法索引:6)被阻止,因为调用链源自或通过另一个 ASTA(线程 5964)。这种呼叫模式容易发生死锁,并且被公寓呼叫控制所禁止。
之后我想到了使用,SynchronizationContext
所以我这样做了。在OnNavigatedTo
然后在WebViewInjectionObject_OnNotifyApp
这再次导致第一个例外。
我不知道下一步该做什么。目标是捕获从 Windows 运行时组件引发的事件,然后以适用于桌面和移动设备的方式调用InvokeScriptAsync
该事件。WebView
c++ - C++/WinRT 数据不正确的数据编组
C++/WinRT 新手,在尝试使用 C++/WinRT 导出单个 C++ 类以在 .Net 应用程序中使用时遇到一些问题。
我在 Visual Studio 2017 v15.7.4 中创建了一个 C++ Windows 运行时组件(Windows 通用)。
这是我尝试使用的 C++ 函数的签名,因为它存在于我复制到 C++/WinRT 项目中的头文件中
如果它的重要上下文,该函数将字节数组 p 作为输入,并输出从它派生的 5 个数组:pCh1、pCh2、pCh3、pCePa、pTAc。
现在在 .Net 应用程序中,我从 WinRT 声明了该类的新实例并设置了所有缓冲区,仅作为示例:
VS 告诉我这是不正确的,因为签名不匹配。检查 Carryout 函数的定义会显示(我假设是)一个自动生成的头文件(在其描述中有“来自元数据”)并且其中的 Carryout 函数的签名完全不同:
请注意,函数参数不是数组,而是 byte/ushort 类型。此外,第一个参数不应该是out
类型。解决此自动生成的标头的这种差异的正确方法是什么?
我宁愿不对 C++ 代码进行任何更改:它内部具有相当复杂的数据操作,并且很容易数十年的运行时间确保它一切正常。
先感谢您!
c# - WinRT 对象中的异步回调应该如何实现?
到目前为止,我可以创建一个委托类型,例如:
然后像这样在 WinRT 对象中公开:
在 WinRT 对象中,我会这样称呼它:
使用 WinRT 对象的客户端代码可以执行以下操作:
但是因为委托返回 anIAsyncOperation
我们需要做一些包装:
只是感觉必须有一种更清洁的方法来实现这一目标。
windows-runtime - 什么是可组合的运行时类?
我正在尝试使用 C++/WinRT 创建一个简单的 xaml 应用程序。
我来自 WPF 背景,拥有一个实现 INotifyPropertyChanged 的基类并让其他类继承自它是很常见的。
当我尝试对 C++-WinRT 执行相同操作时,我失败并出现错误
以下是其余相关代码供参考:
ObservableObject.idl:
MainViewModel.idl:
那么究竟什么是可组合的运行时类呢?有没有办法用 C++/WinRT 实现这一点?我真的不想每次定义一个新的可绑定类时都重复 INotifyPropertyChanged 实现。
uwp - 从 UWP 应用程序 C# 项目调用 wrt/c++ Windows 运行时组件时出现 InvalidCastException
我有一个包含两个项目的小解决方案:
UWP 应用 (C#)
应用程序引用的 Windows 运行时组件 (C++/WinRT)。
C++/WinRT 组件包含一个D3DPanel
派生自Windows.UI.Xaml.Controls.SwapChainPanel
. 当添加到 UWP C# 应用程序中的页面时,代码编译、控件显示并正常工作。
但是,当我调用派生控件公开的单个void StartRenderLoop()
方法时,我得到:
这是idl代码:
这是实现类的声明方式:
(我知道控件有效的原因是,如果我在一切看起来都很好的StartRenderLoop()
过程中从 WinRT 组件中调用)。OnLoaded
源代码的(几乎)最小版本可以在以下位置找到:https ://github.com/zrajnai/UWP_DX
要重现问题,请在 C++/Winrt 代码中注释掉对 StartRenderLoop 的调用: https ://github.com/zrajnai/UWP_DX/blob/227226e8dfbaf2b9b6ce78b6eb02c727c197e284/WRT_CPP/D3DPanel.cpp#L332
并取消注释引发异常的行: https ://github.com/zrajnai/UWP_DX/blob/227226e8dfbaf2b9b6ce78b6eb02c727c197e284/UWP_APP/MainPage.xaml.cs#L19
任何帮助表示赞赏。
windows-runtime - 如何使用midlrt.exe 将.idl 编译为.winmd?
背景:我需要构建一个 Windows 运行时组件作为系统的一部分,该系统设置为使用CMake生成其构建系统。作为准备步骤,我正在尝试在命令行上构建它。
从一个简单的 .idl 文件(MyType.idl)开始
我正在尝试使用midlrt.exe工具生成匹配的 .winmd 文件。以下命令行(为了便于阅读,分成几行)
生成 MyType.winmd 文件就好了,但我不知道为什么。我对/metadata_dir
and/reference
选项特别困惑。跑步midlrt /help
提供以下内容:
/metadata_dir上的官方文档并没有增加太多(除了一个令人困惑的评论:“使用此开关指定 Windows 的主要元数据文件的位置,名为 windows.winmd。”)。没有文档/reference
。
以下是我需要帮助的内容:
- 我真正需要通过什么
/metadata_dir
选择?正如上面命令行中使用的那样,它看起来像是对部分/reference
选项的冗余复制。但是,将其排除在外会产生编译器错误。 - 如何确定所需的列表,
/reference
包括其特定版本?
windows-runtime - 我可以将“操作”添加到 winrt 组件中的运行时类吗
在下面的代码中,“RuntimeMethod1()”是一个操作。它不接受任何输入参数,也不返回任何结果。运行时类中是否允许使用这种方法?
我收到此运行时类的编译错误。它说
期待第 7 行“(”附近的标识符
如果我从类中删除“RuntimeMethod1()”,那么它可以很好地编译并生成投影和实现类型。