找回密码
 加入
搜索
查看: 6095|回复: 10

[IE类操作] 请教如何通过ie进程pid返回obj

  [复制链接]
发表于 2014-11-13 21:43:51 | 显示全部楼层 |阅读模式
不知道为何,安装多个浏览器后会导致_iecreate失败,所以想到用run(ie),然后在通过进程pid返回obj,请问这样的思路靠谱吗?
求大大指点,感谢。。。
发表于 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")
发表于 2014-11-14 09:59:28 | 显示全部楼层
回复 2# komaau3


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


安装的是 搜狗浏览器
发表于 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')
发表于 2014-11-14 13:51:47 | 显示全部楼层
先从进程拿到窗口 然后从窗口控件拿到ie对象
 楼主| 发表于 2014-11-15 23:18:10 | 显示全部楼层
一楼的管用吗?现在这台电脑又正常了,没法测试。
就是不喜欢用winwait,不可靠。。。
发表于 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")')
这个试下
发表于 2014-11-16 11:45:50 | 显示全部楼层
本帖最后由 lin6051 于 2014-11-16 12:15 编辑

回复 6# kxing


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

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

我等下监控注册表看看


和注册表不相干,系统注销一下再试就又不行了
 楼主| 发表于 2014-11-17 15:46:48 | 显示全部楼层
这个问题官方就没有解决的办法吗。。。。
发表于 2014-11-18 13:38:17 | 显示全部楼层
回复 8# lin6051

1、监事不到修改注册表:那是因为你说的某浏览器是在安装的时候篡改的注册表
2、和注册表无关?:IEcreate实际是创建InternetExplorer.Application对象,至于对象具体指向什么程序,就是注册表里对应的值了
3、开着搜狗修改注册表会不会报错另说,很疑问为啥不能关了浏览器再改注册表
发表于 2014-11-20 15:37:35 | 显示全部楼层
前来学习。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-30 02:06 , Processed in 0.077310 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表