CppWebBrowser i LocationURL

0

Witajcie ;)

Mam problem i nie wiem jak go rozwiązać... Mianowicie:
Czy da się ręcznie zmienić CppWebBrowser->LocationURL? Jeśli nie, to jak to obejść? Chodzi mi o coś takiego że mam plik *html, w którym jest ładowany plik *swf. Tyle że plik ten nie wysyła do serwera potrzebnych rzeczy, lecz do "serwera" mojego kompa, ponieważ pobiera on ostatni URL. (Ładuję plik z dysku) Pomyślałem sobie że załaduję to tak:

TMemoryStream *stm = new TMemoryStream();
stm->LoadFromFile(Edit1->Text);
IPersistStreamInit *psi;
stm->Seek(0, 0);
TStreamAdapter *sa = new TStreamAdapter(stm, soReference);
CppWebBrowser1->Document->QueryInterface(IID_IPersistStreamInit, (void **)&psi);
psi->Load(*sa);
delete stm;

Lecz pojawia mi się sam kod źródłowy? Czemu nie ładuje się normalnie tekst, ani obrazki? Jak to obejść?
Zależy mi na tym, aby stronę załadować z całym asortymentem (obrazki, *swf, itd.), lecz żeby się nie zmieniał LocationURL, a gdy się ładuje ze strumienia ta wartość się NIE zmienia.

Jak macie jakieś pomysły, to walcie.
Pozdrawiam ;)

0

najprymitywniejszy hack, ale sprawdziłem u siebie i działa. Zmień lekko treść strony, którą masz na dysku, dopisując na początku pliku (poprawniej na początku head powinno być, ale IE sobie poradzi, przechodząc na "quirks mode"):

<base href="httpadres_z_ktorego_pobrales_plik">

np, u mnie strona testowa leżała pod adresem:
"http://ranides/samples/offline.htm", więc do href podałem "http://ranides/samples/".

po takiej interwencji, stronę otworzyłem z dysku zwykłym Navigate().
obrazki/skrypty/etc załadowało z serwera, i wszystko grało (np dynamicznie generowane przez PHP skrypty).

0

Dziękuje bardzo, oto mi chodziło. ;)

Mam jeszcze jedno pytanie, jak można za symulować wciśnięcie buttona w *swf który jest załadowany przez CppWebBrowser? Jakby to był button normalnej aplikacji to bym zrobił tak, żebym znalazł okno, potem klasę buttona i text. Ale jak to zrobić w *swf? Jakiś SendMessage?

Pozdrawiam i jeszcze raz dziękuję za pomoc.

0

free bump

Wie ktoś? Zależy mi na tym.

Pozdrawiam

0

skoro nikt nie pisze, to nikt nie wie, a tobie nie chce się szukać ;]
Oszukiwanie flasha w wyrafinowany sposób np mi wydaje się trudne, kontrolka IE olewa SendMessage, jeśli dobrze się zorientowałem - najwyżej metodą brutalną bym potraktował, za pomocą mouse_event

klikasz funkcją w wyznaczony punkt ekranu. Paskudne, bo twój program musi być na wierzchu oraz nie da się nic robić w tle (mysz 'naprawdę' jest przesuwana, klika itp). Poeksperymentuj z SendMessage też, nie polegaj na mnie, dawno dawno próbowałem IE za pomocą tej funkcji sterować - mogłem coś robić źle.

PS.
nie przepraszaj, tylko nie spamuj. to jest dział C/C++, a nie forum o omijaniu zabezpieczeń www. O dekompilację flasha pytaj w webmastering na przykład, tutaj nikt ci nie odpowie, a nawet jeśli, to odpowiedzi nikt później nie znajdzie.</b>

0

No właśnie próbowałem SendMessage i się ku**a nic nie działo, a ja jak głupi setki sposobów robiłem...

No właśnie mouse_event odpada bo program ma za zadanie działać w tle, a nie na "wierzchu i aktywnie".
Hmm... Próbowałem podejrzeć kod jaki jest w tym *swf, ale za dużo kodu do przerobienia z ActionScript do C++ i dlatego próbuję oszukać to w sposób "klikania".. :/

Hmm.. nie wiem, postaram się coś wymyślić, ale jak ktoś ma jakiś dobry sposób to nie omieszkam podziękować ;)

Pozdro

*q: next: http:*4programmers.net/Forum/viewtopic.php?id=128795

1 użytkowników online, w tym zalogowanych: 0, gości: 1