ISAPI DLL fejlesztése során sok esetben jó lenne tudni a programunk aktuális állapotáról. Mivel a DLL fejlesztése amúgy is körülményesebb a hagyományos programoktól, így egy-egy érték kijelzéséhez sokszor bonyolult megoldást találunk csak.
A legegyszerűbb megoldás az lenne, ha egy dialógus ablakot megjeleníthetnénk, melyben ki tudjuk írni a programfejlesztés során szükséges információkat. A probléma az csak, hogy ISAPI DLL-ből megjeleníteni egy dialóg ablakot nem lehet hagyományos módszerrel, mint például a ShowMessage hívásával egy hagyományos programnál.
Mellékelt példában bemutatjuk, hogy miként jeleníthetünk meg dialóg ablakot egy ISAPI DLL-ből hasonlóan a ShowMessage-hez.
A mellékelt példa kipróbálásához a következő lépések szükségesek:
- fordítsa le a mellékelt projektet
- másolja át a létrejött DLL-t a webszervere azon könyvtárába, ahonnan az futtatható (pl.: Scripts)
- indítson el egy böngészőt, majd írja be a DLL címét (pl.: http://www.animare.hu/scripts/Project1.dll)
Amikor fut a DLL, akkor megjelenik a szerver oldalon egy dialógus ablak. Attól függően, hogy Ok vagy a Mégsem gombbal zárjuk be az ablakot a DLL más és más HTML-t küld vissza a kliensnek.
Fontos tudni, hogy a megjelenő dialóg ablak mindig a szerver oldalán jelenik meg, attól függetlenül, hogy esetleg a kliens oldali kéréskor jelenítjük meg vagy sem. Így ez a módszer csak a program fejlesztése folyamán használható, éles alkalmazásban már nincs sok értelme.
A megvalósítás igen egyszerű. A dialóg megjelenítéséhez a MessageBox függvényt használjuk. Itt csupán két konstanst kell megadnunk ahhoz, hogy ISAPI DLL-ből megjeleníthető legyen. Az egyik a MB_TOPMOST, hogy minden más alkalmazás fölé kerüljön, a másik a MB_SERVICE_NOTIFICATION, mely lehetővé teszi, hogy szerviz alkalmazásból jelenítsünk meg ablakokat.
procedure TWebModule1.
WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
begin
if MessageBox(0, 'Üzenet az ISAPI Dll-ből', 'Fejléc',
MB_OKCANCEL+MB_TOPMOST+MB_SERVICE_NOTIFICATION)
=IDOK then begin
Response.Content:='ok';
end else begin
Response.Content:='mégsem';
end;
end;