02-11-2007, 23:02
|
|
|
חבר מתאריך: 09.01.05
הודעות: 383
|
|
mfc - get inner text
יש לי אתר שיש בו תגית בשם textarea.
עכשיו אני רוצה להשיג את הטקסט שכתוב שם.
ב .NET זה ממש לא בעיה wb1.document.get.... משו בסגנון הזה.
ב mfc קל זה ממש לא!!. מצאתי איזה קוד בשביל לקבל קוד מטבלה או משו כזה.
במקור הקוד נלקח מהפוסט הזה
http://www.codeguru.com/forum/archi...p/t-235754.html
אבל אני שיניתי אותו.
הינה הקוד שלי
הקוד לניווט הדפדפן :
קוד:
m_wb1.Navigate("G:\\Documents and Settings\\yaron\\Desktop\\showthread.htm",NULL,NULL,NULL,NULL);
הקובץ הוא קוד מקור של גוגל. יש שם 3 טבלאות.
הקוד לבדיקת האינר טקסט ועוד כמה שטיות
קוד:
LPDISPATCH lpDispatch;
lpDispatch = m_wb1.GetDocument();
IHTMLDocument2 *doc2 = NULL;
lpDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&doc2);
if ( doc2 == 0 )
return;
IHTMLElementCollection* pElemColl = NULL;
IHTMLElement* pHTMLElement;
IHTMLElementCollection* pTableColl = NULL;
doc2->get_all( &pElemColl );
pElemColl->tags( tobin("TABLE"), (LPDISPATCH*)&pTableColl );
long p = 0;
pTableColl->get_length( &p );
for( int i = 0; i < p; i++ )
{
CString str;
IDispatch* pDisp = NULL;
IHTMLElement* pElem = NULL;
IHTMLTable * pTable = NULL;
IHTMLTableCaption* pCaption = NULL;
//_variant_t name((LONG)i, VT_I4);
//_variant_t index( "" );
pTableColl->item( tobin(i), tobin(""), (LPDISPATCH*)&pDisp );
pDisp->QueryInterface( IID_IHTMLElement, (void**)&pElem );
BSTR p;
pElem->get_innerText( &p );
str = p;
MessageBox(str);
pElem->get_tagName( &p );
str = p;
pElem->toString( &p );
str = p;
pElem->QueryInterface( IID_IHTMLTable, (LPVOID*)&pTable );
}
הבעיה בכל הדבר הארוך הזה (מצטער ) היא בקטע קוד השני. בקוד הזה יש בעיה. יש שם לולאה שאמורה לספור כמה טבלאות יש בדף ולפי זה להריץ את הקוד שמפענח את הטבלאות. הבעיה היא שזה אומר שאין טבלאות בכלל! זה לא נכנס ללואה. ושאני מנסה להיכנס (עובד עליו ואומר לו שיש) יש באג.
|