furkankadirguzeloglu
Hectopat
- Katılım
- 16 Temmuz 2020
- Mesajlar
- 1.239
- Makaleler
- 12
- Çözümler
- 8
Daha fazla
- Cinsiyet
- Erkek
- Meslek
- Software Developer
ChromeUrl
Gets the Url on the Active Tab
C++:
DWORD WINAPI GetChromeUrl(LPVOID lpParameter) {
int RetInitializeEx = CoInitializeEx(nullptr, COINIT_MULTITHREADED);
while (true) {
if (!IsWindowVisible(ChromeWidgetHwnd) && GetWindowTextLength(ChromeWidgetHwnd) == 0) {
break;
}
CComPtr<IUIAutomation> Automation;
if SUCCEEDED(Automation.CoCreateInstance(CLSID_CUIAutomation)) {
CComPtr<IUIAutomationElement> Root;
if (SUCCEEDED(Automation->ElementFromHandle(ChromeWidgetHwnd, &Root))) {
CComPtr<IUIAutomationElement> Pane;
CComPtr<IUIAutomationCondition> PaneCondition;
Automation->CreatePropertyCondition(UIA_ControlTypePropertyId, CComVariant(UIA_PaneControlTypeId), &PaneCondition);
CComPtr<IUIAutomationElementArray> ElementArray;
if (FAILED(Root->FindAll(TreeScope_Children, PaneCondition, &ElementArray))) {
break;
}
int Count = 0;
ElementArray->get_Length(&Count);
for (int i = 0; i < Count; i++) {
CComBSTR name;
if (SUCCEEDED(ElementArray->GetElement(i, &Pane))) {
if (SUCCEEDED(Pane->get_CurrentName(&name))) {
if (wcscmp(name, L"Google Chrome") == 0) {
break;
}
}
}
Pane.Release();
}
if (!Pane) {
break;
}
CComPtr<IUIAutomationElement> Url;
CComPtr<IUIAutomationCondition> UrlCondition;
Automation->CreatePropertyCondition(UIA_ControlTypePropertyId, CComVariant(UIA_EditControlTypeId), &UrlCondition);
if (FAILED(Pane->FindFirst(TreeScope_Descendants, UrlCondition, &Url))) {
break;
}
CComVariant Variant;
if (FAILED(Url->GetCurrentPropertyValue(UIA_ValueValuePropertyId, &Variant))) {
break;
}
if (!Variant.bstrVal) {
break;
}
_bstr_t ConvertString = _bstr_t(Variant.bstrVal);
char* Data = new char[ConvertString.length()];
strcpy_s(Data, ConvertString.length() + 1, ConvertString);
CurrentUrl = Data;
}
Automation.Release();
}
CoUninitialize();
}
return 0;
}