请教如何通过ie进程pid返回obj
不知道为何,安装多个浏览器后会导致_iecreate失败,所以想到用run(ie),然后在通过进程pid返回obj,请问这样的思路靠谱吗?求大大指点,感谢。。。 修复iecreate
#include <IE.au3>
RegWrite("HKEY_CLASSES_ROOT\CLSID\{0002DF01-0000-0000-C000-000000000046}\LocalServer32", "", "REG_SZ", "C:\Program Files\internet explorer\iexplore.exe")
$oIE = _IECreate("about:blank") 回复 2# komaau3
测试不行,还是会内存错误
安装的是 搜狗浏览器 本帖最后由 lin6051 于 2014-11-14 10:31 编辑
回复 1# kxing
现在只好用 run 或者obj(_IECreateEmbedded和GUICtrlCreateObj)
我一直这样用
不过要处理这个
http://www.autoitx.com/thread-45586-1-1.html
要不就这样:
#include <IE.au3>
dim $ie=@ProgramFilesDir&"\Internet Explorer\iexplore.exe"
Run($ie&' about:blank')
do
sleep(100)
until WinExists("空白页 -","") or WinExists("about:blank -","")
$hdl1=WinGetHandle("空白页 -","")
if not IsHWnd($hdl1) then $hdl1=WinGetHandle("about:blank -","")
$oIE = _IEAttach($hdl1,"hwnd")
_IENavigate ($oIE,'http://www.baidu.com')
先从进程拿到窗口 然后从窗口控件拿到ie对象 一楼的管用吗?现在这台电脑又正常了,没法测试。
就是不喜欢用winwait,不可靠。。。 dim $ie=@ProgramFilesDir&"\Internet Explorer\iexplore.exe"
Run($ie&' about:blank')
$shell=ObjCreate("shell.application")
$ok=False
Do
Sleep(100)
For $win In $shell.windows
If $win.locationurl="about:blank" Then
$ok=True
ExitLoop
EndIf
Next
Until $ok
$win.document.parentwindow.execscript('javascript:alert("OK")')这个试下 本帖最后由 lin6051 于 2014-11-16 12:15 编辑
回复 6# kxing
你开着搜狗浏览器 然后运行1楼的代码就知道了 报错
但关着的时候是大多数是正常的
我运行着搜狗浏览器的时候查看注册表值 发现那项键值根本没变化,所以还是有其他方面的原因
我等下监控注册表看看
和注册表不相干,系统注销一下再试就又不行了 这个问题官方就没有解决的办法吗。。。。 回复 8# lin6051
1、监事不到修改注册表:那是因为你说的某浏览器是在安装的时候篡改的注册表
2、和注册表无关?:IEcreate实际是创建InternetExplorer.Application对象,至于对象具体指向什么程序,就是注册表里对应的值了
3、开着搜狗修改注册表会不会报错另说,很疑问为啥不能关了浏览器再改注册表 前来学习。。。。。。。。。。。。。
页:
[1]