Delphi - Parancsok adása a TWebBrowser komponensnek

forráskód letöltése
Ebben a példában azt nézzük meg, hogy miként adhatunk parancsokat a TWebBrowser komponensnek. Forráskódból vezérelve, megnyithatjuk például a keresés ablakot, vagy megtekinthetjük a letöltött oldal forráskódját a jegyzettömb segítségével.
Először is, szükségünk van egy oldalra, amit le akarunk tölteni.
Webbrowser1.Navigate(Edit1.Text);
Ezután szükségünk van egy interfészre, amelyen keresztül parancsokat adhatunk a TWebBrowser osztálynak. Erre a IOleCommandTarget interfész osztály szolgál.
Az interfészhez az alábbi módon csatlakozhatunk.
Webbrowser1.Document.QueryInterface(IOleCommandTarget,CmdTarget);
Az interfészen keresztül, az Exec metódus meghívásával adhatunk ki parancsokat.
try
  if Sender=Button2 then
    CmdTarget.Exec(PtrGUID,HTMLID_FIND,0,vaIn,vaOut);
  if Sender=Button3 then
    CmdTarget.Exec(PtrGUID,HTMLID_OPTIONS,0,vaIn,vaOut);
  if Sender=Button4 then
    CmdTarget.Exec(PtrGUID,HTMLID_VIEWSOURCE,0,vaIn,vaOut);
finally
  CmdTarget._Release;
end;
Exec
Osztály: IOleCommandTarget
function Exec(
CmdGroup: PGUID;
nCmdID,
nCmdexecopt: DWORD;
const vaIn: OleVariant;
var vaOut: OleVariant
): HResult;
Egy megadott parancs végrehajtására szolgál.
Paraméterek
CmdGroup: PGUID
A parancscsoport GUID azonosítója.
nCmdID
A végrehajtandó parancs. A WebBrowser esetében ezek a következők lehetnek.
Parancs Jelentése
HTMLID_FIND 1 Keresés ablak megnyitása.
HTMLID_VIEWSOURCE = 2 Forrás megnézése.
HTMLID_OPTIONS = 3 Beállítások.
nCmdexecopt: DWORD
A parancs futásának módját állíthatjuk be vele. Az egyes opciók a parancs típusától függnek.
Érték Jelentése
OLECMDEXECOPT_DODEFAULT = 0 A parancsok alapértelmezett hívását kéri.
OLECMDEXECOPT_PROMPTUSER = 1 A beviteli fókusz megkapása után hajtja végre a parancsot.
LECMDEXECOPT_DONTPROMPTUSER = 2 Végrehajtja a parancsot, anélkül, hogy bármit is visszajelezne a felhasználó felé.
OLECMDEXECOPT_SHOWHELP = 3 Segítség kérése az adott parancshoz, amennyiben az létezik. Ilyenkor a parancs nem hajtódik végre.
const vaIn: OleVariant
A hívott parancs bemenő paramétereit itt adhatjuk meg.
var vaOut: OleVariant
A parancs lefutása után, ezen a változón keresztül kapjuk meg a parancs által szolgáltatott értékeket.
Visszatérési érték
Érték Jelentése
S_OK A parancs végrehajtása sikeresen megtörtént.
OLECMDERR_E_UNKNOWNGROUP A CmdGroup paraméter értéke nem nulla, de nem azonosít semmilyen felismerhető parancscsoportot.
OLECMDERR_E_NOTSUPPORTED Az nCmdID paraméterben megadott parancs nem létező.
OLECMDERR_E_DISABLED Az nCmdID paraméterben megadott parancs jelenleg nem hajtható végre.
OLECMDERR_E_NOHELP Az nCmdexecopt paraméterben segítség kérését kértük, de az nem létezik az adott parancshoz.
OLECMDERR_E_CANCELED A felhasználó megszakította a parancs végrehajtását.