返回列表 发帖

[技术讨论] 有趣的getobject

本帖最后由 jyswjjgdwtdtj 于 2024-9-21 15:32 编辑

关于wsh中的getobject函数 它不只只是wmi,与createobject相同的getobject("","wscript.shell")和获取已经开启的com 同时还有"script:","new:"等等script:可以在脚本中直接引用wsc文件作为对象 new:可以用clsid获得com的引用
但是看不到vbscript.dll的源代码 很让人苦恼啊 但是在.net的system.visualbasic.interaction类里有个一模一样的getobject() 经过我的测试 包括script,new都可以使用
大概长这个样子
    public static object GetObject(string PathName = null, string Class = null)
    {
        if (Strings.Len(Class) == 0)
        {
            return Marshal.BindToMoniker(PathName);//似乎对应着script,new,wmi等
        }
        if (PathName == null)
        {
            return Marshal.GetActiveObject(Class);//获取已生成的com?不知道干嘛的
        }
        if (Strings.Len(PathName) == 0)
        {
            return Activator.CreateInstance(Type.GetTypeFromProgID(Class));//生成com
        }
        IPersistFile persistFile;//用pathname作为com生成的“参数”
        persistFile = (IPersistFile)Marshal.GetActiveObject(Class);
        persistFile.Load(PathName, 0);
        return persistFile;
    }COPY
但剩下的就是外部实现了……或许开源的.net core里会有
你好

返回列表