Opis funkcji "ShellExecute".
Artyku│ ten nie bΩdzie dotyczy│ tylko funkcji "ShellExecute",
ale i tak┐e innych, kt≤re czasem mog▒ siΩ przydaµ. Gotowi?!
3..2..1.. Start!
Funkcja "ShellExecute" s│u┐y przede wszystkim do
otwierania jaki╢ program≤w itp. Jej budowa jest nastΩpuj▒ca:
ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
Co oznaczaj▒ te parametry? Ju┐ ╢pieszΩ z wyja╢nieniem.
Pierwszy parametr to tzw. uchwyt okna ( w wiΩkszo╢ci przypadk≤w jest
to Handle co oznacza uchwyt do formy ).
Kolejny parametr to operacja. Mo┐liwe s▒ do wykonania takie operacje:
"open" - otwiera plik.
"print" - drukuje.
"explore" - eksploruje.
Kolejnym parametrem jest parametr :)) Wiem, ┐e to brzmi g│upio, ale
zaraz podam przyk│ad. Przed ostatni to ╢cie┐ka dostΩpu, a ostatni to
spos≤b pokazanie aplikacji. DostΩpne s▒ taki oto sposoby:
SW_HIDE - aplikacja, kt≤r▒ otwierasz nawet siΩ nie pojawi.
SW_SHOW - ukazanie aplikacji.
SW_MINIZE - otwarcie zminimalizowanej.
SW_MAXIMIZED - otwarcie zmaksymilizowanej.
SW_SHOWNORMAL - otwarcie okna w domy╢lnych rozmiarach.
Ok, teraz podam Wam przyk│ad otwarcia jakiego╢ programu (UWAGA! Je┐eli
chcesz korzystaµ z funkcji ShellExecute musisz dodaµ s│owo "SHELLAPI"
do listy modu│≤w).
ShellExecute(Handle,
'open', 'C:\Pad.exe', nil, nil, SW_SHOWNORMAL);
Zauwa┐, ┐e nie musia│em podawaµ wszystkich parametr≤w, ani ╢cie┐ki
- poda│em j▒ w trzecim parametrze.
Wyobra╝ sobie tak▒ sytuacjΩ. Chcesz, chcesz, aby otwarty zosta│
"Notatnik" i wczyta│ kod HMTL Twojej strony WWW. Jak to zrobiµ?
O tak:
ShellExecute(Handle,
'open','notepad.exe','C:\Moje dokumenty\www\index.html',
'C:\Windows', SW_SHOWNORMAL);
Po prostu jako parametr poda│em ╢cie┐kΩ ze stron▒ WWW.
Wyobra╝ sobie tak┐e sytuacjΩ, w kt≤rej musisz wydrukowaµ jaki╢
dokument, ale nie chce Ci siΩ pisaµ procedury, kt≤ra by to robi│a.
Mo┐esz skorzystaµ z procedury drukuj▒cej Notatnika.
ShellExecute(Handle,
'print','C:\Frunlog.txt', nil, nil, SW_HIDE);
Teraz gdy naci╢niesz przycisk dokument zostanie wydrukowany, a okno
Notatnika nawet siΩ nie pojawi (SW_HIDE). Zauwa┐, ┐e nie musia│em
podawaµ nazwy programu (notepad.exe), ani ╢cie┐ki. Po prostu u┐yty
zosta│ domy╢lny program z kt≤rym skojarzone jest rozszerzenie *.txt.
To tyle je┐eli chodzi o ShellExecute. Teraz om≤wiΩ inn▒ ciekaw▒
funkcje jak▒ jest: "ShellAbout". S│u┐y ona do wy╢wietlania
formularza z informacj▒ o programie. Uruchom se Notanika i kliknij
"O programie". Mo┐na zrobiµ co╢ podobnego z naszym
programem ( wad▒ tej funkcj jest to, ┐e wy╢wietla ona okno, a w nim:
"Microsoft (r) [ nazwa Twojego programu]" :) ).
No, ale nic. W tej funkcji musisz podaµ 3 parametry: nazwa programu,
opis praw autorskich oraz ikonΩ programu.
Jako, ┐e pierwsze dwa parametry s▒ oczywiste to trzeba siΩ zastanowiµ
nad ikon▒ programu gdy┐ musi to byµ zmienna HIcon.
Do "pobrania" ikony programu ( obojΩtnie jakiego, byle by
mia│ rozszerzenie *.exe ) s│u┐y funkcja "ExtractIcon". Oto
ca│y kodzik:
var
I : HIcon; // deklaracja zmiennej
begin
// pobranie ikony naszego programu
I := ExtractIcon(Handle, PChar(Application.ExeName),
0);
// wyswietlenie okna "O programie".
ShellAbout(Handle,
'Pad','Copyright (c) by Adam Boduch 2000 [boduch@poland.com]',
i);
Jeszcze parΩ s│≤w na temat funkcji "ExtractIcon". Om≤wiΩ
jedynie ostatni parametr jakim jest numer ikony programu. Niekt≤re
programy mog▒ mieµ wiΩcej ni┐ jedna ikona ( ty tez tak mo┐esz zrobiµ
[ ikonΩ w edytorze zasob≤w i do│▒czyµ j▒ do programu ]), a w│a╢nie
ostatni parametr j▒ symbolizuje. W wiΩkszo╢ci przypadk≤w jest to
cyfra 0.
Na tym ko±czΩ temat funkcji "Shell Execute". Ave!
Adam Boduch