Zmienianie strony w przeglądarce internetowej.

0

Potrzebuję w przeglądarce internetowej (IE lub Firefox) wymieniać wyświetlany plik html , plik z mojego komputera nie z sieci. Chciałbym aby był on jedynie wymieniany to znaczy ani w nowym oknie ani na nowej karcie , tylko w tym samym ciągle oknie i tej samej karcie. Zmiana ta ma być wywoływana z mojej aplikacji.

Próbowałem różne funkcje z ShellApi np.
ShellExecute(Handle,'open', adres przeglądarki, adres pliku html na moim PC, nil, SW_SHOWNORMAL) ;
Próbowałem też różnych ustawień w opcjach przeglądarki i nie udało mi się osiągnąć pożądanego efektu, bo albo nowy plik pojawia się w nowym oknie albo w nowej karcie.
Proszą o radę jak można by to zrobić....:)

0

Może ktoś doradzi Tobie lepiej. Ale wydaje się mi, że za pomocą ShelleExecute raczej zawsze otworzysz tylko nową kartę lub okno. Musiałbyś w opcjach odwoływać się do pliku html. Ale wtedy odpada otwieranie z własnego kodu. Może jest jakiś sposób przy pomocy DDE. Ale ja jedynie umiem odczytać aktualny link, a nie wiem czy da się go jakoś tez i ustawić.

0

musisz znaleźć uchwyt okna przeglądarki, potem uchwyt paska adresu, wpisać tam nowy adres i na końcu enter. Jak dobrze pogoglujesz to znajdzesz

0

@abrakadaber: nie wiem czy to się powiedzie. O ile dobrze patrzę, w przypadku FireFoxa jest jak z na przykład Operami z serii 12.x. Wszystkie kontrolki są widoczne standardowymi funkcjami WinAPI jako jedno okno tej samej klasy. I tutaj raczej do poszczególnych się nie dobierzesz. Także może są - tak jak pisałem - jakieś rozwiązania oparte o DDE.

Upewniłem się i taki kod jak poniżej pozostawia puste Memo.

//...
function EnumchilWindowsProc(AHandle : HWND; ALParam : LParam) : BOOL; stdcall
var
  ControlName, ControlText : array[0..255] of Char;
begin
  Result := True;
  GetClassName(AHandle, ControlName, SizeOf(ControlName));
  SendMessage(AHandle, WM_GETTEXT, SizeOf(ControlText), Integer(@ControlText));
  TMemo(ALParam).Lines.Add(Format('$%X, %s %s', [AHandle, ControlName, ControlText]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Clear;
  EnumChildWindows(FindWindow('MozillaWindowClass', nil), @EnumchilWindowsProc, LParam(Memo1));
end;
0

możesz otworzyć serwer na lokalnym porcie, otworzyć przeglądarke z linkiem do Twojego lokalnego serwera i napisać tą zawiłą logikę w javascript albo na serwerze (albo po prostu napisać w javascript)

0

Nie wszystko jest tym na co wygląda :)

Może istnieje lepszy sposób niż ja wymyśliłem...

Chodzi mi o dynamiczną aktualizacją pisanej przeze mnie strony www (pisaną w aplikacji delphi).To znaczy piszę sobie w memo kod html który jest zapisywany do pliku co kilkanaście sekund i otwierany w zewnętrznej przeglądarce. W ten sposób na bieżąco widzę co napisałem.
Oczywiście WebBrowser-em dałoby się łatwiej sterować, niestety on nie obsługuje dobrze JavaScript.

0

Czy nie prościej napisać plugin do przeglądarki?

0

Na JavaScript w WebBrowser prawdopodobnie pomoże https://msdn.microsoft.com/en-us/library/ee330730%28v=vs.85%29.aspx

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