Buty Geschrieben 6. Januar 2011 Geschrieben 6. Januar 2011 Hallo zusammen, habe mittlerweile bestimmt 3 stunden rumgegoogelt aber bin immernoch kein bisschen schlauer :confused:. Für dumme falsche beschreibungen entschuldige ich mich schon mal, bin noch nicht so lange im c++/java geschäft ich bastel mir gerade mit VS2008 eine kleine MFC anwendung mit c++, die ein ActiveX Steuerelement(Microsoft Web Browser) und paar Buttons enthält. mit mausklick auf Button1 z.b. surf ich zu einer bestimmten seite und möchte dort einen bestimmten link "drücken" hinter dem eine javascript-Funktion steckt. (Auszug aus Quelltext-> href="javascript:watch('12387') ). Wie man einen "Normalen" Button auf einer hp benutzt bekomme ich schon hin, z.B. bei meinem E-mal Account auf "einloggen" zu drücken, weil diese buttons ja id's im quelltext haben. der oben genannte Link besitzt aber keine. ist es also möglich diese funktion aufzurufen und ihr einen wert zu übergeben oder irgendwie so zu tun als wenn man den button gedrückt hätte? hier noch ein auszug aus meinem quelltext zum drücken eines "normalen"buttons: CExplorer1 m_ctlBrowser; void* ButtonClck::ElemFromID( LPWSTR szID, IID nTypeIID ) { HRESULT hr; IHTMLDocument2* pDoc= (IHTMLDocument2*) m_ctlBrowser.get_Document(); IHTMLElementCollection* pAll= NULL; hr= pDoc->get_all( &pAll ); CComVariant vElement( szID ); CComVariant vIndex(0,VT_I4); IDispatch* pDisp; hr= pAll->item(vElement,vIndex,&pDisp); void* pElement; hr= pDisp->QueryInterface( nTypeIID,(void**)&pElement); return( pElement ); } void ButtonClck::OnBnClickedButton1() { pElem= ElemFromID(L"submit", IID_IHTMLElement); IHTMLElement* pSubmit= (IHTMLElement*)pElem; hr= pSubmit->click(); } [/PHP] vielen dank schonmal im vorraus!! Zitieren
Klotzkopp Geschrieben 6. Januar 2011 Geschrieben 6. Januar 2011 Suchst du so etwas? JavaScript call from C++ - CodeProject Zitieren
Buty Geschrieben 6. Januar 2011 Autor Geschrieben 6. Januar 2011 also auf dieser seite bin ich auch schon geandet, aber nicht ein bisschen schlauer draus geworden. habe versucht den quellcode aus dieser seite auf mein problem zu übertragen , aber ohne erfolg. gibt es denn da nicht eine kurze einleuchtende lösung für dieses problem, ka wie m_ctlBrowser.CallJScript("watch","12387"); :cool: wie gesagt, ich programmiere noch nicht so sehr lange, vllt ist das auch mein problem :new Zitieren
Buty Geschrieben 8. Januar 2011 Autor Geschrieben 8. Januar 2011 gut, da das ja anschienend der einzigste tip bleibt, habe ich mich mal intensiv mit der oben genannten seite befasst und habe mir mal eine klasse CWebPage wie in dem link angelegt. habe alles wie auf dieser hp übernommen und visual studio mäßig angepasst....(heisst alle CStrings convertiert und mit _T("") umgewandelt, so das keine kompilierprobleme mehrauftauchten. trotzdem hat es nicht funktioniert. Es scheint anscheinend nicht einfach zu sein eine javafunktion durch c++ mit hilfe von activeX auszuführen!!! das ist auch das was ich durch google erfahren habe, aber FRAGE: ist es nicht möglich auf einfache weise einen mausklick auf eine bestimmte stelle "vorzutäuschen". man gibt die x/y mauszeiger-komponenten die man klicken willl mit hilfe der funktion bn_clicked an den browser weiter..??? anderst gesagt:dieses prog ist ja nur für mich, gibt es da keine möglichkeit das ich beim prog start das fenster zb komplett nach links oben ziehe, das die maus koords immer gleich sind, ich muss sie nur einmal rausfinden was kein problem sein soll und ich simuliere einen bn_click auf position x,y ? also wie gesagt, ich bin anfänger und ich weis ich beschäftige mich warscheinlich gerade mit sehr tiefgründigen komplizierten sachen, aber ich brauche eine möglichkeit diesen"button" wie im vor-vorletzten post zu drücken über hilfe wäre ich wirklich dankbar, sei sie noch so nutzlos Zitieren
Buty Geschrieben 11. Januar 2011 Autor Geschrieben 11. Januar 2011 ich muss nochmal nerven, ich habe ein activex element, mit der id IDC_EXPLORER1 jetzt möchte ich folgende funktion ausführen: void ButtonClck::OnBnClickedStart() { CPoint pos(582,219); GetDlgItem(IDC_EXPLORER1)->OnLButtonDblClk(0,pos); }[/PHP] es kommt folgende fehlermeldung: [color=Red]error C2248: "CWnd::OnLButtonDblClk": Kein Zugriff auf protected Member, dessen Deklaration in der CWnd-Klasse erfolgte.[/color] außerhalb des activex elements funktioniert die funktion mit this->OnLButtonDblClk........ wieso nimmt er diese funkton so nicht an, bzw was kann ich tun das er es macht? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.