Scripts
От: МДС  
Дата: 27.04.02 02:50
Оценка: -3
Люди, помогите разобраться с исходником.
Он должен вытаскивать скрипты из браузера.
Вроде всё работает (по крайней мере количество скриптов определяется точно),
но какой бы функцией я бы не пытался вытащить из pIElem, хоть какую-нибудь информацию,
в Memo заносятся только числа. Может я не правильно с BSTR работаю...


#include <mshtml.h>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
IHTMLDocument2 *HTMLDocument = NULL;
if(!CppWebBrowser->Busy && CppWebBrowser->Document &&
AnsiString(CppWebBrowser->LocationURL) != "about:blank" &&
SUCCEEDED(CppWebBrowser->Document->QueryInterface(
IID_IHTMLDocument2, (LPVOID*)&HTMLDocument)))
{

IHTMLElementCollection* pElements;
HRESULT hr2 = HTMLDocument->get_scripts(&pElements);
long plongnumberofelements;
HRESULT hr3 = pElements->get_length( &plongnumberofelements);
if ( hr3 == S_OK )
for ( int i=0; i< plongnumberofelements; i++ )
{
VARIANT varIndex;
varIndex.vt = VT_UINT;
varIndex.lVal = i;
VARIANT var2;
VariantInit( &var2 );
IDispatch* pDisp;
HRESULT hr4;
hr4 = pElements->item( varIndex, var2, &pDisp );
BSTR pppp;
IHTMLScriptElement* pIElem;
pDisp->QueryInterface(IID_IHTMLScriptElement,(LPVOID*) &pIElem);

pIElem->get_text(&pppp);
Memo1->Lines->Add(WideChar(pppp)); /// может здесь ошибка...

}
}


}
Re: Scripts
От: retalik www.airbandits.com/
Дата: 27.04.02 03:43
Оценка:
Здравствуйте МДС, Вы писали:

МДС>Люди, помогите разобраться с исходником.

МДС>Он должен вытаскивать скрипты из браузера.
МДС>Вроде всё работает (по крайней мере количество скриптов определяется точно),
МДС>но какой бы функцией я бы не пытался вытащить из pIElem, хоть какую-нибудь информацию,
МДС>в Memo заносятся только числа. Может я не правильно с BSTR работаю...
Вот если бы ты задал вопрос в "Веб программирование", тебе ды ответили что-то вроде
"В самом HTML вот так работает:
function test()
{
    alert(document.scripts(0).text);
}

, попробуй перевести на C++".
А здесь тебя в лучшем случае пошлют.
Успехов,
Виталий.
Re[2]: Scripts
От: Аноним  
Дата: 27.04.02 04:20
Оценка:
МДС>>Люди, помогите разобраться с исходником.
МДС>>Он должен вытаскивать скрипты из браузера.
МДС>>Вроде всё работает (по крайней мере количество скриптов определяется точно),
МДС>>но какой бы функцией я бы не пытался вытащить из pIElem, хоть какую-нибудь информацию,
МДС>>в Memo заносятся только числа. Может я не правильно с BSTR работаю...
R>Вот если бы ты задал вопрос в "Веб программирование", тебе ды ответили что-то вроде
R>"В самом HTML вот так работает:
R>
R>function test()
R>{
R>    alert(document.scripts(0).text);
R>}
R>


Причем здесь Web программирование...

R>, попробуй перевести на C++".

R>А здесь тебя в лучшем случае пошлют.
Ты вопрос то понял, прежде чем умничать?
Вопрос конкретно про то, как достать сами тексты скриптов,
из загруженной в браузер страницы.
Re: Scripts
От: Vi2 Удмуртия http://www.adem.ru
Дата: 27.04.02 04:31
Оценка:
Здравствуйте МДС, Вы писали:

МДС>Люди, помогите разобраться с исходником.

МДС>Он должен вытаскивать скрипты из браузера.
МДС>Вроде всё работает (по крайней мере количество скриптов определяется точно),
МДС>но какой бы функцией я бы не пытался вытащить из pIElem, хоть какую-нибудь информацию,
МДС>в Memo заносятся только числа. Может я не правильно с BSTR работаю...

МДС> BSTR pppp;


МДС> pIElem->get_text(&pppp);

МДС> Memo1->Lines->Add(WideChar(pppp)); /// может здесь ошибка...

Не ясно, что ты хочешь сделать с pppp. Не хватает определения цепочки функций: Memo1->Lines->Add. Каковы они? Что просит функция Add на входе?

PS
А с точки зрения работы с СОМ: не освобождаются ни один СОМ объект из всех полученных (это так надо?), не освобождается ни один из полученных параметров (это тоже так надо?).
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[3]: Scripts
От: retalik www.airbandits.com/
Дата: 27.04.02 04:40
Оценка:
Здравствуйте Аноним, Вы писали:

R>>Вот если бы ты задал вопрос в "Веб программирование", тебе ды ответили что-то вроде

R>>"В самом HTML вот так работает:
R>>
R>>function test()
R>>{
R>>    alert(document.scripts(0).text);
R>>}
R>>


А>Причем здесь Web программирование...

А причем здесь язык C++?

R>>, попробуй перевести на C++".

R>>А здесь тебя в лучшем случае пошлют.

А>Ты вопрос то понял, прежде чем умничать?

Ты ответ-то понял, прежде чем срамиться? В нем была подсказка и тактичный намек на смену форума.
А ты молодец, что не залогинился. Думаю, тебе не только я "0" бы влепил...

А>Вопрос конкретно про то, как достать сами тексты скриптов,

А>из загруженной в браузер страницы.
Уф, силы кончаются с ламерьем бороться. По-хорошему не понимают.
Успехов,
Виталий.
Re[2]: Scripts
От: Аноним  
Дата: 27.04.02 04:46
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Здравствуйте МДС, Вы писали:


МДС>>Люди, помогите разобраться с исходником.

МДС>>Он должен вытаскивать скрипты из браузера.
МДС>>Вроде всё работает (по крайней мере количество скриптов определяется точно),
МДС>>но какой бы функцией я бы не пытался вытащить из pIElem, хоть какую-нибудь информацию,
МДС>>в Memo заносятся только числа. Может я не правильно с BSTR работаю...

МДС>> BSTR pppp;


МДС>> pIElem->get_text(&pppp);

МДС>> Memo1->Lines->Add(WideChar(pppp)); /// может здесь ошибка...

Vi2>Не ясно, что ты хочешь сделать с pppp. Не хватает определения цепочки функций: Memo1->Lines->Add. Каковы они? Что просит функция Add на входе?


Vi2>PS

Vi2>А с точки зрения работы с СОМ: не освобождаются ни один СОМ объект из всех полученных (это так надо?), не освобождается ни один из полученных параметров (это тоже так надо?).
Нет. Так не надо. Спасибо, что то я не обратил на это внимение.
Все мысли только BSTR :)
А вообще функция Memo1->Lines->Add(AnsiString s) требует на входе VCL класс AnsiString
(но можно писать почти всё-что угодно: int, double, char* — автоматически приводятся к String).
Вот только с BSTR как видишь дела обстоят не так... Приходится не много обходным путём.
Может быть если я смогу правильно BSTR к char* привести, может всё и заработает... (хотя вроде всё правильно делаю...)
Re[4]: Scripts
От: Аноним  
Дата: 27.04.02 05:09
Оценка:
:

R>>>Вот если бы ты задал вопрос в "Веб программирование", тебе ды ответили что-то вроде

R>>>"В самом HTML вот так работает:
R>>>
R>>>function test()
R>>>{
R>>>    alert(document.scripts(0).text);
R>>>}
R>>>


А>>Причем здесь Web программирование...

R>А причем здесь язык C++?
Ты исходник, который я к письму приложил, смотрел?
Это C++. Правда там антиламерские навароты вроде COM технологии,
так что с ходу и не понять.

R>>>, попробуй перевести на C++".

R>>>А здесь тебя в лучшем случае пошлют.

Ты сам для прикола попробуй исходник в любой другой форум кинуть-
там тебя точно пошлют...

А>>Ты вопрос то понял, прежде чем умничать?

R>Ты ответ-то понял, прежде чем срамиться? В нем была подсказка и тактичный намек на смену форума.
Блин, ну ты даёшь! Мне совет по C++ нужен, понимаешь!?
Мне один человек, кроме тебя уже ответил — посмотри.
Он не задавал глупых вопросов: "а где здесь C++, я не вижууу :(".


А>>Вопрос конкретно про то, как достать сами тексты скриптов,

А>>из загруженной в браузер страницы.
R>Уф, силы кончаются с ламерьем бороться. По-хорошему не понимают. :maniac:

Слушай, не хочу я в форуме ругань разводить, так что если хочешь, давай в мыло maymistov@mail.ru
Только имей совесть — прежде чем писать, ответь пожалуйста честно на два вопроса:
1. Знаешь ли ты что такое COM? (судя по всему не знаешь)
2. И какой у тебя опыт программирования на C++ (у меня 5 лет)?
Re[5]: Scripts
От: retalik www.airbandits.com/
Дата: 27.04.02 05:41
Оценка:
Здравствуйте Аноним, Вы писали:

R>>А причем здесь язык C++?

А>Ты исходник, который я к письму приложил, смотрел?
А>Это C++. Правда там антиламерские навароты вроде COM технологии,
А>так что с ходу и не понять.
Угу. Я так сразу-то и не разобрался. Куда нам, лапотным...
Последний намек: "антиламерские навароты вроде COM технологии" обсуждаются в форуме COM/DCOM/ActiveX. И то, рекомендуется прочитать правила поведения и жалобы типа http://www.rsdn.ru/forum/message.asp?mid=48682
Автор: Алексей Петров
Дата: 24.04.02


Ты не поверишь, как жалко смотрятся со стороны подобные распальцовки. Вот только сегодня появился в форумах, а уже хамишь и оффтопики постишь. Именно из-за такого приходится модераторов выбирать
Еще, по-хорошему советую: воспользуйся поиском, подобные вопросы здесь часто мелькают в форуме "Веб программирование".

А>>>Вопрос конкретно про то, как достать сами тексты скриптов,

А>>>из загруженной в браузер страницы.
R>>Уф, силы кончаются с ламерьем бороться. По-хорошему не понимают.
Ладно, эти слова беру назад, если обидил. Все, здесь флеймить действительно завязываем.

А>Только имей совесть — прежде чем писать, ответь пожалуйста честно на два вопроса:

А>1. Знаешь ли ты что такое COM? (судя по всему не знаешь)
А>2. И какой у тебя опыт программирования на C++ (у меня 5 лет)?

Я вас умоляю... Нет уж, пусть здесь тебя побольше народа увидит
Успехов,
Виталий.
Re[3]: Scripts? А на самом деле BSTR к char!
От: Vi2 Удмуртия http://www.adem.ru
Дата: 27.04.02 06:18
Оценка: 5 (1)
Здравствуйте Аноним, Вы писали:

А>Все мысли только BSTR

А>А вообще функция Memo1->Lines->Add(AnsiString s) требует на входе VCL класс AnsiString
А>(но можно писать почти всё-что угодно: int, double, char* — автоматически приводятся к String).
А>Вот только с BSTR как видишь дела обстоят не так... Приходится не много обходным путём.
А>Может быть если я смогу правильно BSTR к char* привести, может всё и заработает... (хотя вроде всё правильно делаю...)

Естественно. Вот и надо было свой вопрос по-другому формулировать. А после формулирования предварительно поискать на форуме — может уже такая проблема была и твой вопрос ничего нового не вносит?

Удачи! Начинать с 0 далеко не каждому дано (!), однако не обижайся, на самом деле мы все добрые здесь, потом и сам поймешь.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[6]: Scripts
От: МДС  
Дата: 27.04.02 07:35
Оценка:
R>Угу. Я так сразу-то и не разобрался. Куда нам, лапотным...
R>Последний намек: "антиламерские навароты вроде COM технологии" обсуждаются в форуме COM/DCOM/ActiveX.
Признаю — форум COM/DCOM/ActiveX действительно больше подходит...

А>>>>Вопрос конкретно про то, как достать сами тексты скриптов,

А>>>>из загруженной в браузер страницы.
R>>>Уф, силы кончаются с ламерьем бороться. По-хорошему не понимают. :maniac:
R>Ладно, эти слова беру назад, если обидил. Все, здесь флеймить действительно завязываем.
Я тебе тоже обидного наговорил — не серчай.
Просто твой пример на JS показался мне не совсем уместным,
да ещё твой "посыл" меня на "Web программирование" подлил масла...
Re[4]: Scripts? А на самом деле BSTR к char!
От: МДС  
Дата: 27.04.02 07:44
Оценка: -1
А>>Все мысли только BSTR :)
А>>А вообще функция Memo1->Lines->Add(AnsiString s) требует на входе VCL класс AnsiString
А>>(но можно писать почти всё-что угодно: int, double, char* — автоматически приводятся к String).
А>>Вот только с BSTR как видишь дела обстоят не так... Приходится не много обходным путём.
А>>Может быть если я смогу правильно BSTR к char* привести, может всё и заработает... (хотя вроде всё правильно делаю...)

Vi2>Естественно. Вот и надо было свой вопрос по-другому формулировать. А после формулирования предварительно поискать на форуме — может уже такая проблема была и твой вопрос ничего нового не вносит?


BSTR a=WideString("sssssss").c_bstr();
ShowMessage(AnsiString(WideString(a)));

BSTR to WideChar to AnsiString
Работает. Так что всё верно было...
Re[6]: Scripts
От: IT Россия linq2db.com
Дата: 27.04.02 13:39
Оценка:
Здравствуйте retalik, Вы писали:

А>>Только имей совесть — прежде чем писать, ответь пожалуйста честно на два вопроса:

А>>1. Знаешь ли ты что такое COM? (судя по всему не знаешь)
А>>2. И какой у тебя опыт программирования на C++ (у меня 5 лет)?

R> Я вас умоляю... Нет уж, пусть здесь тебя побольше народа увидит


Хотел я этот топик сначала прибить, но потом решил оставить для истории. Надо будет его включить в правила как показательный.

ЗЫ. Я вот тут тоже задумался, а сколько же у меня C/C++... и понял, столько не живут. Надо полностью переползать на C# и чувствовать себя вечно молодым
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.