Centrum skryptów - Systemy operacyjne

Jak mogę wyświetlić hiperłącze w oknie komunikatu? Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak mogę wyświetlić hiperłącze w oknie komunikatu?

Cześć Skrypciarzu! Czy w oknie komunikatu można umieścić hiperłącze do strony sieci Web?

-- CB

Cześć CB! Wygląda na to, że chcesz wyświetlać użytkownikom okno komunikatu i, najlepiej, zamieścić tam hiperłącze, które mogliby kliknąć by uzyskać więcej informacji. Załóżmy na przykład, że użytkownik chciał uzyskać dostęp do jakichś danych, ale odszedł z kwitkiem. W takim wypadku mógłbyś wyświetlić mu okno dialogowe z odmową dostępu, a następnie podać hiperłącze do strony sieci Web z informacją, co musi zrobić, aby uzyskać dostęp. Rozwiązanie bądź co bądź przyjemniejsze od bezczelnego zakomunikowania: "Odmowa dostępu".

Czy zatem da się to zrobić używając języka skryptów? Cóż, niestety nie. Przynajmniej z tego, co wiemy. Hiperłącza w oknach komunikatów byłyby fajowe, ale używając języka skryptów jest się ograniczonym do najprostszych wariantów.

Czekaj, nie odchodź jeszcze! Nie zapytałeś nas "czy istnieje jakieś obejście, coś, co robi to samo, ale bez umieszczania hiperłącza w oknie komunikatu?" Gdybyś zapytał nas o to, odpowiedzielibyśmy: "Hej, wszystko można jakoś obejść." Tym, czego szukasz, jest dostęp do strony sieci Web z okna komunikatu, wymagający jednego kliknięcia. Jednym ze sposobów byłoby umieszczenie hiperłącza w oknie komunikatu, niestety, jak właśnie zauważyliśmy, nie da się tego zrobić przy użyciu VBScript. Spróbujmy zatem czegoś innego: dlaczego by nie wyświetlić okna komunikatu z pytaniem: "Czy chcesz uzyskać dostęp do tych zasobów?" Jeśli użytkownik kliknie Nie, skrypt kończy działanie. Jeśli jednak użytkownik kliknie Tak, skrypt automatycznie przenosi go do odpowiedniej strony sieci Web. Jedno okno komunikatu, dostęp do strony przez jedno kliknięcie. To niedokładnie to samo, co użycie hiperłącza, ale rezultat jest identyczny.

Jak widzisz, wymaga to jedynie kilku linii kodu:

Set objShell = CreateObject("Wscript.Shell")



intMessage = Msgbox("Would you like to apply for access to this resource?", _

    vbYesNo, "Access Denied")



If intMessage = vbYes Then

    objShell.Run("https://www.microsoft.com")

Else

    Wscript.Quit

End If

Zaczynamy od utworzenia wystąpienia obiektu WSH (Windows Scripting Host) Shell; będziemy go potrzebowali, by włączyć przeglądarkę internetową i połączyć się ze stroną sieci Web. Następnie wyświetlamy okno komunikatu (tytuł: Access Denied – Odmowa Dostępu) z pytaniem: "Would you like to apply for access to this resource?" (czy chcesz uzyskać dostęp do tych zasobów?) Okno komunikatu zawiera przyciski Yes (Tak) i No (Nie) – po to właśnie w skrypcie znajduje się stała vbYesNo.

Uwaga. Część z Was być może myśli: "Chwileczkę, wydawało mi się, że stałe w VBScript muszą być wyraźnie zdefiniowane." To prawda, w większości przypadków. Gdybyśmy pracowali z FileSystemObject, musielibyśmy zdefiniować stałe, używając takiego kodu:

Const ForReading = 1

VBScript posiada jednakże swoje własne, wewnętrzne stałe. Jedną z nich jest vbYesNo. Stała ta stosowana jest do wyświetlania przycisków Yes i No w oknie komunikatu. Inną stałą jest vbCrLf, stosowana do dołączania na koniec ciągu znaku powrotu karetki-przesuwu o wiersz. Tych wewnętrznych stałych – będących częścią języka VBScript – nie trzeba definiować. Gdy wpiszesz vbYesNo, VBScript będzie wiedział, o co chodzi.

Na czym skończyliśmy? Ach tak, wyświetlamy użytkownikowi okno komunikatu z przyciskami Yes i No. Jeśli użytkownik kliknie Yes, przenosimy go do określonej witryny sieci Web. Skąd wiemy, że kliknął Yes? To proste: tworząc okno komunikatu, przechowujemy odpowiedź użytkownika w zmiennej intMessage. By określić, który przycisk kliknął użytkownik, sprawdzamy po prostu wartość intMessage. Jeśli wartość jest równa vbYesNo (kolejna wewnętrzna zmienna, równa 6), wówczas wiemy, że użytkownik kliknął Yes, w związku z czym używamy metody obiektu Shell o nazwie Run (uruchom) by otworzyć stronę www.microsoft.com (j.ang.) (zauważcie, że musimy tylko podać adres URL; system operacyjny użyje następnie domyślnej przeglądarki by dotrzeć do danej witryny).

A jeśli użytkownik kliknie No? W takim wypadku po prostu zamykamy (Wscript.Quit).

Tak jak mówiliśmy, to niezupełnie to, co miałeś na myśli, ale zrobi co trzeba.

Na wypadek gdybyś chciał dowiedzieć się więcej o funkcji VBScript o nazwie Msgbox i różnych sposobach konfigurowania jej, zajrzyj do tego działu VBScript Language Reference (j.ang.) na MSDN (Microsoft Developer Network).

A gdybyś musiał tworzyć naprawdę skomplikowane okna komunikatów? Cóż, w takim wypadku możesz stworzyć stronę HTML i użyć jej do naśladowania prawdziwego okna komunikatu Windows. Ale to już zupełnie inna historia, którą opowiemy kiedy indziej.

 Do początku strony Do początku strony


Centrum skryptów - Systemy operacyjne