将资源管理器动词操作启动的窗口置于最前面

时间:2019-05-31 14:28:42

标签: c#

我的主要应用是使用电子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()调用的内容推到所有其他窗口的前面吗?

0 个答案:

没有答案