Przeglądanie zdjęć jak we wbudowanej przeglądarce windowsa

0

Nie wiem czy ktoś zauważył ale przeglądarka fotografii Windows wyświetla zawsze zdjęcia w tej samej kolejności i z tym samym filtrem co okno z którego została uruchomiona

To znaczy że jeżeli wyszukam przez wyszukiwarkę fotografie zaczynające się na "a", następnie je posortuje po rozmiarze, po czym odpalę jedną z fotografii poprzez przeglądarkę windows to strzałki "lewo", "prawo" będą pokazywać kolejne / poprzednie fotki w identycznej kolejności jak w oknie wyszukiwania (fotografie nie muszą być nawet w jednym folderze)

Czy da się uzyskać identyczny efekt w swoim programie? Czy są jakieś udokumentowane funkcje odnośnie tego feature'a?

Dodam że jeżeli po odpaleniu przeglądarki, zmienimy filtr lub sortowanie, lub nawet gdy pojawią się nowe fotografie pasujące do filtra i pojawią się w oknie wyszukiwania to nie zostaną one już uwzględnione przez przeglądarkę - przeglądarka pokaże tylko taki zestaw zdjęć jaki był widoczny w momencie jej uruchomienia

0

Wydaje mi się, że przeglądarka po prostu przy odpaleniu robi sobie listę ścieżek do obrazków i potem przy przeglądaniu zdjęć leci po tej liście.

0

no tak, to pewne
ale jak robi tę listę?
skąd wie z którego okna została odpalona? A nawet jak wie to jak pobrać listę plików z otwartego okna eksploratora windows?

0

Każdy program co najmniej dekstopowy można uruchomić z dodatkowymi parametrami, w których mogą się znaleźć dowolne informacje; Przy uruchomieniu przeglądarki Windows, zapewne system podaje w parametrze uruchomieniowym co najmniej nazwę obrazu, ewentualnie dodatkowo ścieżkę katalogu źródłowego; Na tej podstawie przeglądarka buduje sobie (lub nie) listę obrazów, umożliwiając ich przeglądanie;

Przykładowy zapis funkcji main zawiera ilość parametrów i pointer na ich wartości:

// When passing char arrays as parameters they must be pointers
int main(int argc, char* argv[]) {

http://www.cplusplus.com/forum/articles/13355/

0

Strzelam, że ustawienia filtrowania/sortowania są jakoś przekazywane do tej przeglądarki w momencie ustawienia.

Spróbuj może z tym: http://stackoverflow.com/questions/3382946/get-selected-items-of-folder-with-winapi/

0
furious programming napisał(a):

Każdy program co najmniej dekstopowy można uruchomić z dodatkowymi parametrami, w których mogą się znaleźć dowolne informacje;

spuszczę zasłonę milczenia na ten post

@somekind: thx, wygląda na dobry trop - później pokombinuje z tym

0

Czy da się uzyskać identyczny efekt w swoim programie? Czy są jakieś udokumentowane funkcje odnośnie tego feature'a?

Nie wiem.
Ale możesz spróbować zdebugować proces przeglądarki, i zobaczyć czy może dostaje jakieś magiczne parametry (argc/argv).

0
Azarien napisał(a):

Ale możesz spróbować zdebugować proces przeglądarki, i zobaczyć czy może dostaje jakieś magiczne parametry (argc/argv).

do tego nie trzeba niczego debugować - parametry z którymi uruchomiono program można normalnie zobaczyć w windowsowym menedżerze zadań
podpowiedź - już to sprawdzałem

Wiem że dział newbie ale po prostu nie ma tu odpowiedniej kategorii, a rozchodzi się o raczej bardziej zaawansowane mechanizmy

nie sądzę żeby M$ korzystał z metody podanej na stack overflow. jak potrzebują jakiejś funkcjonalności, to ją raczej implementują jako cywilizowane API a nie rzeźbią takiego hacka.

chyba patrzymy na dwie różne rzeczy - tam jest proste odwołanie do API właśnie
dobra, już wiem że można pobrać w ten sposób listę plików z okna eksploratora

teraz problem numer dwa którego rozwiązania jeszcze nie znam - jak pobrać z którego konkretnie okna eksploratora został uruchomiony program?

1

Jest kilka możliwości uruchomienia systemowej przeglądarki zdjęć. Jedna to zwykły, statyczny "verb" ustawiony w rejestrze np. przy jpegfile, który przez dllhost/dllrun32 uruchamia funkcję eksportowaną jako ImageView_Fullscreen (ten fullscreen to jakaś pozostałość, tak samo ta funkcja nazywa się w PhotoViewer.dll w Windows 7 i w shimgvw.dll w Windows XP). Statyczny verb pozwala tylko przekazać ścieżkę do pliku i wtedy to sortowanie z okna nie jest przekazywane. Możesz to sobie sprawdzić, jeżeli w menu kontekstowym pliku graficznego wybierzesz nie "Podgląd", a "Otwórz za pomocą -> Przeglądarka fotografii (...)".
Natomiast istnieją też dynamiczne "verby", które mogą być dodane przez rozszerzenia shella i to właśnie robi explorer/przeglądarka zdjęć.
Nie bawiłem się nigdy w implementowanie odpowiednich interfejsów, ale z dokumentacji wynika, że shell wywoła metodę IContextMenu::InvokeCommand w twoim kodzie i dostaniesz strukturę, w której masz HWND okna. Metodę na otrzymanie shellowego okna masz na dole w linku somekinda (nie korzystaj z tej pierwszej metody z kopiowaniem pamięci, to idiotyzm; jest od tego API).
http://msdn.microsoft.com/en-us/library/windows/desktop/ee453696%28v=vs.85%29.aspx

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