Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki
  • #1 09 Lis 2014 19:48
    IT_ManPro
    Poziom 5  

    Jakiś już czas temu musiałem rozwiązać problem automatycznego uruchomienia kilku sesji przeglądarki IE, gdzie każda służyłaby prezentacji różnego kontentu na odrębnym monitorze podłączonym do tego samego komputera PC pracującego pod kontrolą systemu MS Windows 7 (opis dotyczy skryptu, który będzie działał także w środowisku MS Windows Vista i MS Windows 8.1).

    Po co było coś takiego?
    Otóż w niewielkiej firmie produkcyjnej, gdzie dba się o wysokie standardy jakości i organizacji produkcji, serwer w sieci Intranet udostępnia dane dotyczące tej produkcji w jej kluczowych punktach. Na dużych monitorach przy stanowiskach pracy te dane są prezentowane, a całość nie wymaga ręcznego włączania, ustawiania i wyłączania każdego dnia, a jedynie konieczne jest włączenie komputera PC, który za prezentację odpowiada – reszta ustawia się „sama”.


    Poniżej prezentuję zastosowane rozwiązanie. Być może przykład ten przyda się Szanownym Forumowiczom w obsłudze podobnego problemu w ich środowisku IT tym bardziej, że przedstawiony skrypt można łatwo zmodyfikować, by uruchamiał inne aplikacje, nie tylko IE.
    Wszystkie polecenia skryptu umieściłem z zastosowaniem formatowania składni vb.net, bo nie znalazłem tutaj do wyboru opcji formatowania dla skryptów powłoki PowerShell.



    Najprostszą drogą do realizacji zadania wydało mi się użycie skryptu Microsoft PowerShell ver. 2.0.


    Założenia:
    1. Komputer jest wyposażony w 4 monitory o rozdzielczości 1.920 x 1.080.
    2. Karta graficzna i monitory są tak skonfigurowane, że prezentują jeden pulpit rozciągnięty na wszystkie te monitory – łączny rozmiar pulpitu zatem jest (4x1.920 = 7.680) x 1.080.
    3. W systemie jest zainstalowany PowerShell 2.0 – MS Windows Vista wymaga dodatkowej instalacji tej wersji, w 7 i 8.1 jest domyślnie zainstalowana, ewentualnie konieczne jest jedynie włączenie MS PowerShell jako składnika systemu.
    Warto sobie dodatkowo zainstalować MS Windows PowerShell ISE (Integrated Scripting Environment) – jest to narzędzie bardzo ułatwiające pisanie skryptów i wykorzystujące w pełni obiektowość systemu operacyjnego.
    4. Włączona jest możliwość wykonywania skryptów lokalnie z plików.

    Ad. 3 Wersję PowerShell można sprawdzić po uruchomieniu konsoli poleceniem Menu Start / Windows PowerShell i po wpisaniu polecenia

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
    . Konsolę zamykamy poleceniem
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
    .
    Ad. 4 Domyślnie możliwość wykonywania skryptów z plików (nawet lokalnie) jest wyłączona. Należy uruchomić konsolę PowerShell w profilu z uprawnieniami administratora (nie wystarczy uruchomienie w innym profilu „jako administrator”) i wpisać komendę:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Polecenie spowoduje włączenie możliwości wykonywania skryptów w plikach zapisanych lokalnie w systemie. To ustawienie pozostanie aktywne aż do jawnej zmiany.
    Przywrócenie ustawienia (domyślnego), gdzie skrypty lokalne z plików nie są wykonywane:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Aktualny stan ustawienia sprawdza się poleceniem:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod




    Kompletny skrypt zapisany w pliku z rozszerzeniem PS1 w lokalizacji będącej w zasięgu użytkownika, który będzie go uruchamiał, wygląda tak (w dalszej części opisuję dokładnie poszczególne fragmenty):

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    Przykładowo nazwa pliku i lokalizacja niech będzie:

    c:\scripts\multi_ie.ps1


    Skrypt można uruchomić w oknie „Uruchom” poleceniem:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Oczywiście należy pamiętać, że dla ścieżki do pliku skryptu zawierającej spacje składnia polecenia będzie następująca (podwójny cudzysłów):
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod




    Szczegółowy opis treści skryptu:
    1. Sesja IE jest uruchamiana poprzez zainicjowanie aplikacji InternetExplorer jako obiektu COM i przypisanie do niego wskaźnika do zmiennej. Każda zmienna wskazuje na obiekt – w tym wypadku kolejną sesję IE.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    2. Każdej sesji przypisany jest inny adres Web, skąd pobrana będzie treść do prezentacji.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    3. Ustawiany jest rozmiar okna dla każdej z działających sesji IE – okno wypełnia w całości dostępny obszar na monitorze.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    4. Ustawiane jest położenie okna każdej z działających sesji IE – pierwsze okno jest najbardziej na lewo, a kolejne obok na prawo od poprzedniego, czyli przesunięte o 1920 pikseli. Wszystkie okna są przysunięte do górnej krawędzi ekranu.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    5. Wszystkie okna IE mają wyłączone paski narzędzi (w tym adresowe), żeby nie można było zmienić prezentowanych witryn, mają także wyłączone paski statusu i nie można zmieniać ich wymiarów.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    6. Po ustawieniu żądanych parametrów poszczególne okna są wyświetlane.
    Do tej pory na pulpicie nie było widać żadnego okna IE, więc czas najwyższy je wszystkie zobaczyć z wprowadzonymi ustawieniami.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Od teraz na poszczególnych monitorach można podziwiać treść pobraną z podanych adresów web.



    Uwagi końcowe dotyczące uruchamiania skryptu:

    Można polecenie w konsoli podać z opcją –noexit – wówczas konsola po wykonaniu skryptu pozostanie otwarta, ale próba odwołania się w niej do którejkolwiek zmiennej, np. $ie1 nie powiedzie się, bo te zmienne są zmiennymi lokalnymi. Żeby stały się zmiennymi globalnymi w ramach sesji konsoli, należy polecenie sformułować z wykorzystaniem tzw. składni „dot source”, czyli ścieżka do pliku skryptu musi być poprzedzona kropką i spacją:
    powershell.exe -noexit ”. c:\scripts\multi_ie.ps1”

    Przy otwartej konsoli i ze zmiennymi dostępnymi globalnie można sterować sesjami IE i tak np. można je zamknąć poleceniem wpisanym kolejno w konsoli:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod




    Przygotowany skrypt w pliku może być uruchamiany automatycznie po zalogowaniu użytkownika, np. wywołaniem w dodatkowym pliku typu BAT umieszczonym w katalogu Autostart danego użytkownika. Logowanie użytkownika można ustawić tak, by było automatyczne po włączeniu komputera i uruchomieniu systemu, więc całość może się pięknie uruchamiać „sama”.

  Szukaj w 4mln produktów
Przeglądaj produkty