我正在使用 Microsoft UI 自动化并且遇到了一些问题,一个是我想知道 AutomationElement 是否还活着。更准确地说,我想检查一个窗口是否已关闭。我认为这是这类问题最常见的情况,我尝试了不同的场景,最终得到了一个解决方案,我尝试访问元素的不同属性并查看它是否抛出 ElementNotAvailableException。我还偶然发现了一个名为 IsOffscreen 的属性,它在这种情况下似乎非常有用。但是,由于我在网上找不到太多关于此的信息,我想知道是否有更好的解决方案。最近几天我对这个框架不太满意,因为它对我来说似乎很不稳定(尤其是在寻找 AutomationElement 时)。
非常感谢
马塞尔
.net c# ui-automation microsoft-ui-automation automationelement
我有一个带有构造函数的模板类std::vector<T>.对于除了一个之外的每个对象,我都希望它进行操作A.但对于那个对象,我希望它做一些其他的东西B.
是否有可能仅为模板类创建显式实例化的构造函数?我希望它的描述足够精确.
问候
更新:我现在已经实现了一个测试用例:
//header
Container(const std::vector<T>& source)
{...}
//source code
template <> Container<int>::Container(const std::vector<int>& source)
{
throw 42;
}
Run Code Online (Sandbox Code Playgroud)
此示例编译但不起作用.我将它导出到一个DLL,并希望每当我尝试使用泛型参数int创建类的实例时调用它.但就像现在一样,它只调用用于每个其他对象的标准构造函数.我必须对声明做出改变吗?
更新:我成功了!只需将其复制到头文件即可.
更新:好的,现在我有另一个问题.我能够为"简单"类型而不是模板进行专门化.我这样试过:
template<typename T>
Container<MyClass<T>>::Container(const std::vecror<MyClass<T>>& source)
{...}
Run Code Online (Sandbox Code Playgroud)
我想为每个MyClass对象专门化它,但MyClass本身应该能够作为模板存在.