CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Wysyłanie adresu URL do tego samego okna przeglądarki.
Strona 1 z 1

Wysyłanie adresu URL do tego samego okna przeglądarki.

Nowy postNapisane: sobota, 2 października 2010, 19:38
przez Cyfrowy Baron
Wysyłam do przeglądarki Firefox adres:

KOD cpp:     UKRYJ  
 String bUrl = "jakiś adres"
  TDdeClientConv *Adres = new TDdeClientConv(this);

 if(Adres->SetLink("firefox", "WWW_OpenURL"))
 {
  Adres->RequestData(bUrl + ",,");
 }
 else
   ShellExecute(this->Handle, NULL , bUrl.c_str(), L"", L"", SW_SHOWNORMAL);

 delete Adres;


Działa to jak oczekiwałem, czyli przeglądarka ładuje stronę. Gdy chcę załadować nową stronę, ten kod również ją ładuje, ale w nowym oknie lub w nowej karcie, a ja chciałbym, żeby otworzył ją w tym samym oknie lub w tej samej karcie.

Re: Wysyłanie adresu URL do tego samego okna przeglądarki.

Nowy postNapisane: sobota, 2 października 2010, 21:57
przez polymorphism
Poszukaj informacji o komendzie WWW_OpenURL, ma ona parametry, które być może dotyczą sposobu otwierania url-a.

Re: Wysyłanie adresu URL do tego samego okna przeglądarki.

Nowy postNapisane: niedziela, 3 października 2010, 08:58
przez Cyfrowy Baron
Szukałem i znalazłem info, że należy oprócz adresu przekazać wartość 0xFFFFFFFF. Być może w czasach, gdy przeglądarki nie korzystały z zakładek to działało, jednak teraz nie działa. :zawiedziony:
Inne pomysły, inne metody z wykorzystaniem innych klas? :roll:

Re: Wysyłanie adresu URL do tego samego okna przeglądarki.

Nowy postNapisane: niedziela, 3 października 2010, 11:44
przez polymorphism
Ta wartość to id okna, w którym chcesz otworzyć url-a, wartość -1 oznacza aktywne okno. Według dokumentacji, WWW_OpenURL zwraca id okna, w którym url został otwarty, więc wystarczyłoby podać go przy następnym wywołaniu tej komendy. Sprawdziłem, niestety nie działa :( Cały czas zwraca wartość 1, niezależnie od ilości otwartych okien FF czy też zakładek.

Re: Wysyłanie adresu URL do tego samego okna przeglądarki.

Nowy postNapisane: niedziela, 3 października 2010, 12:04
przez Cyfrowy Baron
Opracowałem trochę inny kod oparty na funkcji SendMessage i schowku:

KOD cpp:     UKRYJ  
  HWND hWnd_1 = FindWindow(L"MozillaWindowClass", 0);

  if(hWnd_1 != NULL)
     SendMessage(hWnd_1, WM_PASTE, 0, 0);


adres jest wklejany prawidłowo o ile w przeglądarce wybrany jest pasek adresu. Pojawiają się jednak dwa problemy: po pierwsze jak kliknąć w pasek adresu przyciskiem ENTER, komendy WM_KEYDOWN i WM_KEYUP z parametrm WParam = VK_RETURN nie działa, po drugie jaka jest nazwa klasy paska adresu.

Re: Wysyłanie adresu URL do tego samego okna przeglądarki.

Nowy postNapisane: niedziela, 3 października 2010, 12:32
przez polymorphism
Według Spy++ nie są to okna sensu stricto, więc takie sztuczki nie muszą działać.

Re: Wysyłanie adresu URL do tego samego okna przeglądarki.

Nowy postNapisane: niedziela, 3 października 2010, 13:42
przez Cyfrowy Baron
Tak też przypuszczałem, gdyż sprawdzałem programem WinID i na wszystkim pokazywał mi tylko główną klasę okna.
Na razie nie mam pomysłu.