[C++] Studio 2005 :: Hoe kom ik bij -> IHTMLImgElement_href

Pagina: 1
Acties:

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 20-04 19:59
Ben 3 dagen geleden begonnen aan een klein projectje, dat de plaatjes (images) uitleest uit een webpagina. Opzich geen probleem echter om de complete 'url' te krijgen van een plaatje wilde ik eerst een aantal functies schrijven. Na nader onderzoek kwam ik erachter dat die functie blijkbaar al erin zit gebakken echter heb ik geen idee hoe ik het kan aanspreken om de waarde uit te lezen

Code die ik gebruik om de 'images' te extracten
code:
1
2
3
4
for each(HtmlElement^ elem in webBrowser->Document->GetElementsByTagName("IMG"))
{

}


Dit werkt goed, echter als ik BV
code:
1
elem->OuterHtml
aanroep krijg ik de complete 'img' tag te zien. Opzich logisch maar dit is niet wat ik wil. Ik wil namelijk de complete URL van de 'img' hebben.

Na wat debug werk kwam ik erachter dat het hier staat:
  • elem 0x0012ecfc { EventClick=<undefined value> EventDoubleClick=<undefined value> EventDrag=<undefined value> ...} System::Windows::Forms::HtmlElement^
  • DomElement 0x009217a4 System::Object^
  • ] 0x009222e0 mshtml::HTMLImgClass^
  • IHTMLImgElement_href "http://127.0.0.1/Sites/four20imports/site/images/logo_top.gif"System::String^
Mijn vraag dus, hoe kom ik daar, zodat ik die waarde uit kan lezen? Als ik daar bijkan scheelt het me een hoop code schrijven. En minder code = minder kans op bugs.

Gebruik Visual Studio 2005 C++. Heb hier lopen zoeken op verschillende termen van de functies, maar niets gevonden. Google geprobeerd tevens nada..

Hier wordt ik ook niet wijzer uit.. Maar als iemand me even een groot zetje in de juiste richting kan geven dan kan ik weer verder http://msdn.microsoft.com...ement/ihtmlimgelement.asp

Dank _/-\o_

[ Voor 17% gewijzigd door mrFoce op 29-12-2005 12:13 . Reden: Msdn link toegevoegd ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je hebt een HtmlElement collection waar je dus HtmlElement's uit kunt halen. In de docs staat dat je hier gewoon de properties van op kan vragen met GetAttribute( string ) dus dan kan je toch gewoon
C#:
1
elem.GetAttribute( "src" );

doen om de src op te vragen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 20-04 19:59
rwb schreef op donderdag 29 december 2005 @ 12:15:
Je hebt een HtmlElement collection waar je dus HtmlElement's uit kunt halen. In de docs staat dat je hier gewoon de properties van op kan vragen met GetAttribute( string ) dus dan kan je toch gewoon
C#:
1
elem.GetAttribute( "src" );

doen om de src op te vragen.
super, bedankt.. Je wil niet weten hoeveel ik allemaal geprobeerd heb. heb dit in een eerder stadium ook geprobeerd, maar waarschijnlijk niet goed toegpast... Het werkt en psst elem->GetAttribute( "src" );.

Mijn dank is groot :)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
gideon82 schreef op donderdag 29 december 2005 @ 12:20:
[...]


super, bedankt.. Je wil niet weten hoeveel ik allemaal geprobeerd heb. heb dit in een eerder stadium ook geprobeerd, maar waarschijnlijk niet goed toegpast...
Als je ergens niet uit komt is het vaak gewoon handig om de MSDN er bij te pakken. Een quote van de doc pagina van HtmlElement
You will often need access to attributes, properties and methods on the underlying element that are not directly exposed by HtmlElement, such as the SRC attribute on an IMG element or the Submit() method on a FORM. The GetAttribute and SetAttribute methods enable you to retrieve and alter any attribute or property on a specific element, while InvokeMember provides access to any methods not exposed in the managed DOM. If your application has unmanaged code permission, you can also access unexposed properties and methods with the DomElement attribute.
Er staat dus precies wat jij wilt hebben ;)
Het werkt en psst elem->GetAttribute( "src" );.
er staat ook niks voor niks c# boven het voorbeeldje aangezien ik nog nooit iets met managed c++ gedaan heb.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 20-04 19:59
rwb schreef op donderdag 29 december 2005 @ 12:26:
[...]

Als je ergens niet uit komt is het vaak gewoon handig om de MSDN er bij te pakken. Een quote van de doc pagina van HtmlElement

[...]

Er staat dus precies wat jij wilt hebben ;)


[...]

er staat ook niks voor niks c# boven het voorbeeldje aangezien ik nog nooit iets met managed c++ gedaan heb.
Je wilt niet weten hoe vaak ik op F1 heb gedrukt (oftwel MSDN erbij heb gepakt).. En had over het c# heengekeken.. Maar nogmaals bedankt O+ (dit is me eerste c++ projectje, maar die -> is tzelfde als .)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
gideon82 schreef op donderdag 29 december 2005 @ 12:33:
[...]


Je wilt niet weten hoe vaak ik op F1 heb gedrukt (oftwel MSDN erbij heb gepakt).. En had over het c# heengekeken.. Maar nogmaals bedankt O+ (dit is me eerste c++ projectje, maar die -> is tzelfde als .)
psst. '->' is niet hetzelfde als '.' een -> is een operator die je op een pointer gebruikt en een . op een refference of instance van een object.

Tenminste zo is het in standaard c++ en lijkt mij dat het in managed c++ over genomen is.
C++:
1
2
3
4
5
MyObject objA;
MyObject * objB = new MyObject();
objA.Method();
objB->Method();
delete objB;

maar dat zal je ongetwijfeld zelf ook al weten ;)

[ Voor 21% gewijzigd door Woy op 29-12-2005 12:42 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1