OpenUrlInCurrentTabChrome("http://forum.script-coding.com/")
OpenUrlInCurrentTabChrome(url)
{
if !hWnd := WinExist("ahk_class Chrome_WidgetWin_1")
{
Run, Chrome.exe %url%
Return
}
WinActivate
GetAccAddrChrome(AccObjectFromWindow(hWnd)).accValue(0) := url
ControlSend,, ^{vk4C} ; Ctrl + L
Sleep, 100
ControlSend,, {Enter}
}
GetAccAddrChrome(AccObj)
{
if AccObj.accName(0) = "Адресная строка и строка поиска"
Return AccObj
for k, v in AccChildren(AccObj)
if (o := GetAccAddrChrome(v))
Return o
}
AccInit()
{
static h
!h ? h := DllCall("LoadLibrary","Str","oleacc","Ptr")
}
AccObjectFromWindow(hWnd, idObject = -4)
{
AccInit()
If DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject&=0xFFFFFFFF
, "Ptr", -VarSetCapacity(IID,16)+NumPut(idObject==0xFFFFFFF0?0x46000000000000C0:0x719B3800AA000C81
, NumPut(idObject==0xFFFFFFF0?0x0000000000020400:0x11CF3C3D618736E0,IID,"Int64"),"Int64"), "Ptr*", pacc)=0
Return ComObjEnwrap(9,pacc,1)
}
AccChildren(Acc)
{
cChildren:=Acc.accChildCount, Children:=[]
if DllCall("oleacc\AccessibleChildren", "Ptr", ComObjValue(Acc), "Int", 0, "Int", cChildren
, "Ptr", VarSetCapacity(varChildren,cChildren*(8+2*A_PtrSize),0)*0+&varChildren, "Int*", cChildren)=0 {
Loop %cChildren%
i:=(A_Index-1)*(A_PtrSize*2+8)+8, child:=NumGet(varChildren,i)
, Children.Insert(NumGet(varChildren,i-8)=3?child:AccQuery(child)), ObjRelease(child)
return Children
}
error:=Exception("",-1)
MsgBox, 262420, AccChildren Failed, % "File: " error.file "`nLine: " error.line "`n`nContinue Script?"
IfMsgBox, No
ExitApp
}
AccChild(Acc, ChildId=0)
{
try child:=Acc.accChild(ChildId)
return child?AccQuery(child):
}
AccQuery(Acc)
{
try return ComObj(9, ComObjQuery(Acc,"{618736e0-3c3d-11cf-810c-00aa00389b71}"), 1)
}