我的主要应用是使用电子node.js构建的。但是,有时我需要启动一些Windows资源管理器上下文菜单实用程序,例如“打印”,“用照片编辑”等。
问题是当我启动它们时,它们最终显示在我的应用程序窗口后面。我正在使用以下工具启动实用程序:
async (dynamic input) => {
try {
string filePath = (string) input.filePath;
string path = Path.GetDirectoryName(filePath);
string fileName = Path.GetFileName(filePath);
dynamic shellApplication = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));
dynamic directory = shellApplication.NameSpace(path);
dynamic link = directory.ParseName(fileName);
dynamic verbs = link.Verbs();
for (int i = 0; i < verbs.Count(); i++)
{
dynamic verb = verbs.Item(i);
var name = verb.Name;
if (verb.Name.Equals( (string) input.contextMenuAction))
{
verb.DoIt();
break;
}
}
shellApplication = null;
} catch (Exception ex) {
return ex;
}
return "Completed";
}
顺便说一下,我从stackoverflow复制了这段代码。我可以在其中某处强迫verb.DoIt()
调用的内容推到所有其他窗口的前面吗?