标题: [技术讨论] 有趣的getobject [打印本页]
作者: jyswjjgdwtdtj 时间: 2024-9-21 15:30 标题: 有趣的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;
- }
复制代码
但剩下的就是外部实现了……或许开源的.net core里会有
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |