Strona g│≤wna

 

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