kxing 发表于 2014-11-13 21:43:51

请教如何通过ie进程pid返回obj

不知道为何,安装多个浏览器后会导致_iecreate失败,所以想到用run(ie),然后在通过进程pid返回obj,请问这样的思路靠谱吗?
求大大指点,感谢。。。

komaau3 发表于 2014-11-14 06:28:16

修复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")

lin6051 发表于 2014-11-14 09:59:28

回复 2# komaau3


    测试不行,还是会内存错误


安装的是 搜狗浏览器

lin6051 发表于 2014-11-14 10:03:31

本帖最后由 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')

header 发表于 2014-11-14 13:51:47

先从进程拿到窗口 然后从窗口控件拿到ie对象

kxing 发表于 2014-11-15 23:18:10

一楼的管用吗?现在这台电脑又正常了,没法测试。
就是不喜欢用winwait,不可靠。。。

kevinch 发表于 2014-11-16 09:47:55

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 11:45:50

本帖最后由 lin6051 于 2014-11-16 12:15 编辑

回复 6# kxing


    你开着搜狗浏览器 然后运行1楼的代码就知道了 报错
但关着的时候是大多数是正常的

我运行着搜狗浏览器的时候查看注册表值 发现那项键值根本没变化,所以还是有其他方面的原因

我等下监控注册表看看


和注册表不相干,系统注销一下再试就又不行了

kxing 发表于 2014-11-17 15:46:48

这个问题官方就没有解决的办法吗。。。。

komaau3 发表于 2014-11-18 13:38:17

回复 8# lin6051

1、监事不到修改注册表:那是因为你说的某浏览器是在安装的时候篡改的注册表
2、和注册表无关?:IEcreate实际是创建InternetExplorer.Application对象,至于对象具体指向什么程序,就是注册表里对应的值了
3、开着搜狗修改注册表会不会报错另说,很疑问为啥不能关了浏览器再改注册表

wangms 发表于 2014-11-20 15:37:35

前来学习。。。。。。。。。。。。。
页: [1]
查看完整版本: 请教如何通过ie进程pid返回obj