Board logo

标题: [问题求助] win10和11中相同com对象获得了不同结果 [打印本页]

作者: jyswjjgdwtdtj    时间: 2024-10-12 19:00     标题: win10和11中相同com对象获得了不同结果

本帖最后由 jyswjjgdwtdtj 于 2024-10-12 19:23 编辑

在win10中
  1. $s=new-object -comobject htmlfile
  2. write $s.parentwindow.setinterval
复制代码


只显示
  1. int setInterval(variant,int,variant)#具体的忘了……
复制代码


而且setInterval在vbs中还不能用 没有效果
然而在win11中显示一大堆重载
  1. OverloadDefinitions
  2. -------------------
  3. int setInterval(string expression, int msec, [ref] System.Object language)
  4. int setInterval([ref] System.Object expression, int msec, [ref] System.Object language)
  5. int DispHTMLWindow2.setInterval([ref] System.Object expression, int msec, [ref] System.Object language)
  6. int IHTMLWindow2.setInterval(string expression, int msec, [ref] System.Object language)
  7. int IHTMLWindow3.setInterval([ref] System.Object expression, int msec, [ref] System.Object language)
复制代码


很好奇是怎么回事 微软理应不会更新这个ie7的com组件啊


win11里也不好使了
  1. set h=createobject("htmlfile")
  2. h.parentwindow.settimeout getref("m"),1
  3. sub m
  4. msgbox 1
  5. end sub
复制代码



我记得大概一个多月前还是好用的
还是我写脚本的时候犯了什么错误?
作者: Five66    时间: 2024-10-12 21:50

com对应的dll变成edge相关的文件了??? 试试去注册表里看看
作者: jyswjjgdwtdtj    时间: 2024-10-12 23:25

回复 2# Five66


   应该不是 edge的相关dll都带Microsoft字眼 在这edge应该不会使用com
用visualstudio的反编译只能找到
int setInterval(string expression, int msec, [ref] System.Object language)
这个方法 看上去只能接受字符串 而非一个委托,或者说事件,在或者说回调函数地址
所以vbs里运行不了
作者: flashercs    时间: 2024-10-12 23:46

可以用啊,有事件需要等待啊.
  1. set h=createobject("htmlfile")
  2. h.parentwindow.settimeout getref("m"),1000
  3. sub m
  4. msgbox 1
  5. end sub
  6. WScript.Sleep 5000
  7. msgbox "end"
复制代码

作者: jyswjjgdwtdtj    时间: 2024-10-13 10:06

回复 4# flashercs


   哦 是我的问题 当vbs的主进程跑完之后 进程会直接退出 不会等到settimeout执行




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2