Frage zum FAQ "IE URL Leiste"
-
Hallo!
Ich hoffe hier bin ich richtig in dem Part zum Forum, da man bei dem FAQ direkt nur als mod posten kann und ich Visual Studio C++ 6 Pro verwende.
Und zwar habe ich folgendes Problem bei dem FAQ. Wenn ich die URL-Leiste auslesen möchte, bekomm ich nur als Titel für das Internet Explorer Fenster "Internet Explorer" zurück. Allerdings müsste da zum Beispiel ja "\1:blank - Microsoft Internet Explorer" stehen. Anbei poste ich mal meinen Quellcode, vielleicht kann mir jemand sagen, warum ich den Titel nicht bekomme und mir einen Tipp geben.
void CCMS4NXTDlg::OnbtnTest() { ::EnumChildWindows(::GetDesktopWindow(), EnumWindowsProc, (LPARAM)this); } //Quellcode BOOL CALLBACK CCMS4NXTDlg::EnumWindowsProc(HWND hwnd, LPARAM lParam) { static char cbuff[256]="\0"; static CString strClass, buff; static DWORD dwPID=0; // get window class name ::GetClassName(hwnd, strClass.GetBuffer(_MAX_PATH), _MAX_PATH); // get pid ::GetWindowThreadProcessId(hwnd, &dwPID); // get caption ::GetWindowText(hwnd, cbuff, sizeof(cbuff)); buff.Format("%s",cbuff); // In buff stehen nun alle offnen Fenster drin // Du musst nun einfach die Rausfiltern die MIE oder halt Opera // Im Titel haben // mit if und find arbeiten // --- wird momentan nicht ausgeführt. Mal morgen nachschauen. if(buff == "Internet Explorer") { CBrowserCheck* pCBCheck = new CBrowserCheck(); pCBCheck->CheckLink((CString) buff); delete pCBCheck; } return true; } // --- Funktion CheckLink von meiner Klasse CBrowserCheck bool CBrowserCheck::CheckLink(CString titel) { char buffer[256]; HWND child; HWND ie; AfxMessageBox(titel, MB_OK); // Der Aufruf der Callback Funktion if(ie = ::FindWindow("IEFrame", titel) ) { if(child = :: FindWindowEx(ie, 0, "WorkerW", 0)) { if(child = ::FindWindowEx(child, 0, "ReBarWindow32", 0)) { if(child = ::FindWindowEx(child, 0, "ComboBoxEx32", 0)) { ::SendMessage(child, WM_GETTEXT, 255, (long) &buffer[0]); CString tmp = &buffer[0]; AfxMessageBox(tmp, MB_OK); return true; } else { AfxMessageBox("4", MB_OK); return false; } } else { AfxMessageBox("3", MB_OK); return false; } } else { AfxMessageBox("2", MB_OK); return false; } } else { AfxMessageBox("1", MB_OK); return false; } }
Die Messageboxen nutze ich zur Debug-Ausgabe, damit ich weiß was übergeben wird.
Hoffe jemand kann mir da helfen. Schonmal vielen Dank im vorraus für jeden erdenklichen Tipp.Gruß Marine
-
Wie kann so eine Frickelei in die FAQ kommen?
-
gedanke schrieb:
Wie kann so eine Frickelei in die FAQ kommen?
Sag mir wie ich es besser machen kann?
Habe es jetzt mit SendMessage und WM_GETTEXT lösen können.