Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interfejs IOleCommandTarget wysyłania poleceń definiuje prosty i rozszerzalny mechanizm wykonywania zapytań i wykonywania poleceń. Ten mechanizm jest prostszy niż mechanizm Automatyzacji IDispatch, ponieważ opiera się całkowicie na standardowym zestawie poleceń; polecenia rzadko zawierają argumenty, a brak w nich jakichkolwiek informacji o typie (bezpieczeństwo typów dla argumentów poleceń jest także zmniejszone).
W projekcie interfejsu wysyłania poleceń każde polecenie należy do "grupy poleceń", która sama jest identyfikowana z identyfikatorem GUID. W związku z tym każda osoba może zdefiniować nową grupę i zdefiniować wszystkie polecenia w tej grupie bez konieczności koordynowania współpracy z firmą Microsoft lub innym dostawcą. (Jest to zasadniczo ten sam sposób definiowania co dispinterface plus dispIDs w Automatyzacji. Istnieje tutaj nakładanie się funkcji, chociaż ten mechanizm routingu poleceń jest przeznaczony wyłącznie do routingu poleceń, a nie do obsługi skryptów i programowania na dużą skalę, jak to robi Automatyzacja.)
IOleCommandTarget obsługuje następujące scenariusze:
Gdy obiekt jest aktywowany w miejscu, tylko paski narzędzi obiektu są zwykle wyświetlane, a paski narzędzi obiektu mogą mieć przyciski dla niektórych poleceń kontenera, takich jak Print, Print Preview, Save, New, Zoom i inne. Standardy aktywacji w miejscu zalecają, aby obiekty usuwały takie przyciski ze swoich pasków narzędzi lub przynajmniej je wyłączały. Ten projekt umożliwia włączenie tych poleceń i kierowanie ich do właściwej procedury obsługi. Obecnie nie ma mechanizmu wysyłania tych poleceń do kontenera przez obiekt.
Gdy aktywny dokument jest osadzony w aktywnym kontenerze dokumentów (takim jak binder pakietu Office), może być konieczne wysłanie poleceń takich jak Drukowanie, Konfiguracja strony, Właściwości i inne do zawartego aktywnego dokumentu.
Ten prosty routing poleceń można obsługiwać za pomocą istniejących standardów automatyzacji i IDispatch. Jednak nakład pracy związany z IDispatch jest większy niż to konieczne, więc IOleCommandTarget oferuje prostszy sposób na osiągnięcie tych samych celów.
interface IOleCommandTarget : IUnknown
{
HRESULT QueryStatus(
[in] GUID *pguidCmdGroup,
[in] ULONG cCmds,
[in,out][size_is(cCmds)] OLECMD *prgCmds,
[in,out] OLECMDTEXT *pCmdText);
HRESULT Exec(
[in] GUID *pguidCmdGroup,
[in] DWORD nCmdID,
[in] DWORD nCmdExecOpt,
[in] VARIANTARG *pvaIn,
[in,out] VARIANTARG *pvaOut);
}
Metoda QueryStatus w tym miejscu sprawdza, czy jest obsługiwany określony zestaw poleceń, zestaw identyfikowany z identyfikatorem GUID. To wywołanie wypełnia tablicę wartości OLECMD (struktur) z obsługiwaną listą poleceń, a także zwraca tekst opisujący nazwę polecenia i/lub informacje o stanie. Gdy obiekt wywołujący chce wywołać polecenie, może przekazać polecenie (i zestaw identyfikator GUID) do Exec wraz z opcjami i argumentami, aby otrzymać wartość zwrotną.