Zum Inhalt springen

Javascript-Funktion durch ActiveX ausrufen


Buty

Empfohlene Beiträge

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!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

über hilfe wäre ich wirklich dankbar, sei sie noch so nutzlos :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...