|
|
发表于 2025-7-20 16:34:37
|
显示全部楼层
改了下2楼链接里的AHK代码
注意: 浏览器显示语言需要为简中 ,因为使用的是类名Chrome_WidgetWin_1 ,vsc或edge之类的也有这个类名 ,结果可能不准确
- setbatchlines -1
- navName := "地址和搜索栏"
- ;navName := "Address and search bar";english ver navName
- IUIAutomation := ComObjCreate(CLSID_CUIAutomation := "{ff48dba4-60ef-4201-aa87-54103eef594e}", IID_IUIAutomation := "{30cbe57d-d9d0-452a-ab13-7ac5ac4825ee}")
- DllCall(NumGet(NumGet(IUIAutomation+0)+6*A_PtrSize), "ptr", IUIAutomation, "ptr", WinExist("ahk_class Chrome_WidgetWin_1"), "ptr*", ElementFromHandle) ; IUIAutomation::ElementFromHandle
- AddressBarName := DllCall("oleaut32\SysAllocString", "str", navName, "ptr")
- VarSetCapacity(variant, 8+A_PtrSize*2, 0)
- NumPut(VT_BSTR := 8, variant, 0, "ushort")
- NumPut(AddressBarName, variant, 8, "ptr")
- if (A_PtrSize = 4)
- DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_NamePropertyId := 30005, "int64", NumGet(variant, 0, "int64"), "int64", NumGet(variant, 8, "int64"), "ptr*", condition1) ; IUIAutomation::CreatePropertyCondition
- else
- DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_NamePropertyId := 30005, "ptr", &variant, "ptr*", condition1) ; IUIAutomation::CreatePropertyCondition
- VarSetCapacity(variant, 8+A_PtrSize*2, 0)
- NumPut(VT_I4 := 3, variant, 0, "ushort")
- NumPut(UIA_EditControlTypeId := 50004, variant, 8, "int")
- if (A_PtrSize = 4)
- DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_ControlTypePropertyId := 30003, "int64", NumGet(variant, 0, "int64"), "int64", NumGet(variant, 8, "int64"), "ptr*", condition2) ; IUIAutomation::CreatePropertyCondition
- else
- DllCall(NumGet(NumGet(IUIAutomation+0)+23*A_PtrSize), "ptr", IUIAutomation, "int", UIA_ControlTypePropertyId := 30003, "ptr", &variant, "ptr*", condition2) ; IUIAutomation::CreatePropertyCondition
- DllCall(NumGet(NumGet(IUIAutomation+0)+25*A_PtrSize), "ptr", IUIAutomation, "ptr", condition1, "ptr", condition2, "ptr*", conditions) ; IUIAutomation::CreateAndCondition
- DllCall(NumGet(NumGet(ElementFromHandle+0)+5*A_PtrSize), "ptr", ElementFromHandle, "int", TreeScope_Descendants := 0x4, "ptr", conditions, "ptr*", element) ; IUIAutomationElement::FindFirst
- VarSetCapacity(variant, 8+A_PtrSize*2, 0)
- DllCall(NumGet(NumGet(element+0)+10*A_PtrSize), "ptr", element, "int", UIA_ValueValuePropertyId := 30045, "ptr", &variant) ; IUIAutomationElement::GetCurrentPropertyValue
- ObjRelease(element)
- ObjRelease(conditions)
- ObjRelease(condition1)
- ObjRelease(condition2)
- ObjRelease(ElementFromHandle)
- clipboard := StrGet(NumGet(variant, 8, "ptr"), "utf-16")
- DllCall("oleaut32\SysFreeString", "ptr", AddressBarName)
- return
复制代码 |
评分
-
查看全部评分
|