本文整理汇总了C++中QAxObject::disableMetaObject方法的典型用法代码示例。如果您正苦于以下问题:C++ QAxObject::disableMetaObject方法的具体用法?C++ QAxObject::disableMetaObject怎么用?C++ QAxObject::disableMetaObject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QAxObject
的用法示例。
在下文中一共展示了QAxObject::disableMetaObject方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: showInWindowsShell
bool showInWindowsShell(const QString &filePath, bool deselect) {
QFileInfo appFI(filePath);
auto matchPath = appFI.dir().path().toLower();
auto matchName = appFI.fileName().toLower();
QAxObject shellApp("Shell.Application");
QAxObject *windows = shellApp.querySubObject("Windows()");
windows->disableMetaObject();
auto count = windows->dynamicCall("Count()").toInt();
qDebug() << count;
for (int i = 0; i < count; ++i) {
QAxObject *win = windows->querySubObject("Item(QVariant)", {i});
win->disableMetaObject();
auto program = win->dynamicCall("FullName()").toString();
QFileInfo programFI(program);
if (programFI.baseName().toLower() != "explorer") continue;
auto url = win->dynamicCall("LocationURL()").toUrl();
if (!url.isLocalFile()) continue;
auto path = url.path().mid(1).toLower();
if (path != matchPath) continue;
QAxObject *doc = win->querySubObject("Document()");
QAxObject *folder = doc->querySubObject("Folder()");
folder->disableMetaObject();
QAxObject *folderItems = folder->querySubObject("Items()");
folderItems->disableMetaObject();
QAxObject *ourEntry = {};
int count = folderItems->dynamicCall("Count()").toInt();
for (int j = 0; j < count; j++) {
QAxObject *entry = folderItems->querySubObject("Item(QVariant)", j);
entry->disableMetaObject();
auto name = entry->dynamicCall("Name()").toString().toLower();
if (name == matchName) ourEntry = entry;
}
if (ourEntry) {
if (false)
ourEntry->dynamicCall("InvokeVerb(QVariant)", QVariant()); // open etc.
auto rc = doc->dynamicCall("SelectItem(QVariant, int)", ourEntry->asVariant(),
SVSI_SELECT | (deselect ? SVSI_DESELECTOTHERS : 0));
auto hwnd = win->dynamicCall("HWND()").toLongLong();
BringWindowToTop(HWND(hwnd));
return true;
}
}
return false;
}