I am trying to retrieve the value of a specific field of a webpage which is loaded in Internet Explorer within Edge Browser. I am trying to use Edge_GetIE function for this purpose. iWB2 Learner tool is showing this information about that field-
See what iWB2 learner tool showing for that specific field
my codes are these-
f1::
edgePID:=Edge_Create()
pwb:=Edge_GetIE()
MsgBox % pwb.document.all.tags("IFRAME"[0].contentWindow.document.getElementById("startDate_ui").InnerText
return
Edge_create(neww = false){
static edgePID
IF !WinExist("ahk_exe msedge.exe") || neww {
run msedge.exe,,,edgePID
winWaitActive, ahk_pid %edgePiD%,,5
}
else {
winget,edgePID,PID,ahk_exe msedge.exe
}
return edgePID
}
Edge_Quit(edgePID = false){
criteria := edgePID ? edgePID : Edge_Create()
for obj in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process Where processID = " criteria) {
obj.terminate()
}
}
Edge_GetIE(edgePID = false){
static IID_IWebDOCUMENT := "{332C4425-26CB-11D0-B483-00C04FD90119}"
static counter = 0
window := "ahk_class Chrome_WidgetWin_1 ahk_exe msedge.exe ahk_pid " pid := edgePID ? edgePID : Edge_Create()
msgbox % window
;msg := WM_HTML_GETOBJECT()
msg := WM_HTML_GETOBJECT()
SendMessage msg, 0, 0, Internet Explorer_Server1, %window%
if (ErrorLevel != "FAIL"){
lResult := ErrorLevel
VarSetCapacity( GUID, 16, 0 )
if DllCall( "ole32CLSIDFromString", "wstr", IID_IWebDOCUMENT, "ptr", &GUID ) >= 0 {
DllCall( "oleaccObjectFromLresult", "ptr", lResult, "ptr", &GUID, "ptr", 0, "ptr*", IWebDOCUMENT )
try {
pwb := IWebBrowserApp_from_IWebDOCUMENT( IWebDOCUMENT )
counter := 0
ToolTip
}
return pwb
}else
errorMSG := "no CLSIDFromString"
}else
errorMSG := "FAIL"
if (counter++ < 10){ ;try up to 10 times to connect to IE
ToolTip * %counter% * %pid% * retyring %errorMSG%
sleep 1000
return Edge_GetIE()
}
ToolTip
msgbox %errorMSG%
}
WM_HTML_GETOBJECT(){
return DllCall( "RegisterWindowMessage", "str", "WM_HTML_GETOBJECT" )
}
IWebBrowserApp_from_IWebDOCUMENT( IWebDOCUMENT ){
static IID_IWebBrowserApp := "{0002DF05-0000-0000-C000-000000000046}" ; IID_IWebBrowserApp
return ComObj(9,ComObjQuery( IHTMLWindow2_from_IWebDOCUMENT( IWebDOCUMENT ), IID_IWebBrowserApp, IID_IWebBrowserApp),1)
}
IHTMLWindow2_from_IWebDOCUMENT( IWebDOCUMENT ){
static IID_IHTMLWindow2 := "{332C4427-26CB-11D0-B483-00C04FD90119}" ; IID_IHTMLWindow2
return ComObj(9,ComObjQuery( IWebDOCUMENT, IID_IHTMLWindow2, IID_IHTMLWindow2),1)
}
The above codes are showing an empty message box while it should show 11-09-2024
Please tell me where I am wrong in the above codes..
Thanks a lot
I want to retrieve the value of that specific field into messagebox as shown above.