HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Terminál szolgáltatás beépítése saját alkalmazásba


Példaprogram letöltése

4366 bájt

Ha van egy Windows 2000 (vagy e verzió fölötti) kiszolgálónk, akkor rendelkezésünkre áll a Terminal Service, melynek lényege az, hogy akár helyi hálón, akár az interneten keresztül elérhetjük a kiszolgálót, vagy akár az azon futó alkalmazásokat úgy, mintha csak ott ülnénk a szerverünk előtt és annak képernyőjét látnák. Ilyen esetben a szerver „képernyője” egy ablakban jelenik meg, melyben valóban úgy dolgozhatunk, mintha ez az ablak a szerver „monitora” lenne. Ezt a speciális ablakot beépíthetjük akár saját alkalmazásainkba is és így egyedi funkciókkal láthatjuk azokat.
Ebben a cikkben ennek megvalósítását végezzük el, valamint megnézzük, hogy milyen egyéb trükkökre képes ez a terminál ablak.

A mellékelt példaprogram megnyitása előtt válassza a Delphi-ben a Component - Import ActiveX Control menüpontot, majd a megjelenő listából keresse elő a Microsoft Terminal Services Active Client 1.0 Type Library elemet és telepítse az ebben lévő komponenseket a Delphi alá.
Szoftverfeltételek
A Terminal Service-hez kiszolgálói oldalon minimálisan a Windows 2000, esetleg a Windows NT 4 Terminal Service Edition változat kell. Kiszolgálói és kliens oldalon egyaránt használható a Windows XP Professional. Kliens oldalon külön telepítés után bármilyen régebbi Windows is üzembe állítható, lehet az akár Windows 95 is, vagy Win3.1, de akár még a DOS is.
Példaprogram
Ha tehát installáltuk a Delphi-be a Terminal Services Active Client 1.0 Type Library-t, akkor kapunk két új komponenst a Dlephi palettáin. Ezt persze akkor tudjuk megtenni, ha a szükséges kliens oldali szoftverfeltételek már adottak. Például Windows XP Professional esetén nincs szükségünk semmilyen előkészületre, ott már „gyárilag” adott minden e feladat elvégzéséhez.
A két új komponens közül mi most a TMsRdpClient komponenst fogjuk használni. Ebből tegyünk egyet a Form-ra. E komponens területén, mint egy ablakban jelenik meg a szerverünk képernyője.
A csatlakozáshoz csak meg kell adni a Server property-ben a szerver nevét, vagy IP címét. A UserName property-be kerül a felhasználói nevünk. A jelszavunkat majd interaktívan kell megadni a csatlakozás folyamán. Végül a Connect függvény hívásával kezdeményezhetjük a kapcsolat felvételt. Ekkor a jelszó bekérése után elérjük a szerver, melynek képernyője megjelenik a TMsRdpClient komponens területén.
  MsRdpClient1.Server:=Edit1.Text;
  MsRdpClient1.UserName:=Edit2.Text;
  MsRdpClient1.Connect;
A trükk
Lehetőségünk van arra is, hogy olyan kapcsolatot hozzunk létre, ahol nem a teljes szerver érhető el, hanem csak egy program, mely természetesen a kiszolgálón fut. Ekkor a bejelentkezés után rögtön ez a program indul, majd amikor bezárjuk ezt a programot, akkor a terminál kapcsolat is automatikusan bontásra kerül.
Például csak egy parancssorra van szükségünk a szerveren, akkor az így tudjuk elindítani:
  MsRdpClient1.Server:=Edit1.Text;
  MsRdpClient1.UserName:=Edit2.Text;
  if boolean(MsRdpClient1.SecuredSettingsEnabled) then begin
    MsRdpClient1.SecuredSettings.StartProgram:='cmd.exe';
  end;
  MsRdpClient1.Connect;
Kapcsolat bontása, megszakadása
A kapcsolatot úgy bonthatjuk, hogy a szerveren kijelentkezünk mint felhasználó, ekkor a terminál ablak zárása automatikusan megtörténik és kapunk egy OnDisconnected eseményt. Ebben az eseményben a DiscReason paraméterben kapunk egy kódszámot, melyből megtudható, a kapcsolat lezárásnak oka, esetleges hibakódja.
Reason kód Leírás
1 Local Disconnection (not an error)
2 Remote Disconnection by user (not an error)
3 Remote Disconnection by server (not an error)
260 DNS Lookup Failed
262 Out of memory condition
264 Connection Timed Out
516 WinSock socket connect failed
518 Out of memory condition
520 Host Not Found error (GetHostByName failed).
772 WinSock send call failed
774 Out of memory condition
776 Invalid IP address specified
1028 WinSock recv call failed
1030 Invalid Security Data
1032 Internal error (code 1032)
1286 Invalid Encryption Method
1288 DNS Lookup failed
1540 GetHostByName call failed
1542 Invalid server security data
1544 Internal Error (timer error)
1796 Timeout occurred
1798 Failed to unpack server certificate
2052 Bad IP address specified
2054 Internal Security Error
2308 Socket closed
2310 Internal Security Error
2566 Internal Security Error
2822 Encryption error
3078 Decryption error

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 379. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |