Freigeben über


CAtlExeModuleT-Klasse

Diese Klasse stellt das Modul für eine Anwendung dar.

Syntax

template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>

Parameter

T
Ihre klasse abgeleitet von CAtlExeModuleT.

Member

Öffentliche Konstruktoren

Name Beschreibung
CAtlExeModuleT::CAtlExeModuleT Der Konstruktor.
CAtlExeModuleT::~CAtlExeModuleT Der Destruktor.

Öffentliche Methoden

Name Beschreibung
CAtlExeModuleT::InitializeCom Initialisiert COM.
CAtlExeModuleT::P arseCommandLine Analysiert die Befehlszeile und führt bei Bedarf eine Registrierung durch.
CAtlExeModuleT::P ostMessageLoop Diese Methode wird unmittelbar nach dem Beenden der Nachrichtenschleife aufgerufen.
CAtlExeModuleT::P reMessageLoop Diese Methode wird unmittelbar vor dem Eingeben der Nachrichtenschleife aufgerufen.
CAtlExeModuleT::RegisterClassObjects Registriert das Klassenobjekt.
CAtlExeModuleT::RevokeClassObjects Widerruft das Klassenobjekt.
CAtlExeModuleT::Run Diese Methode führt Code im EXE-Modul aus, um die Nachrichtenschleife zu initialisieren, auszuführen und zu bereinigen.
CAtlExeModuleT::RunMessageLoop Diese Methode führt die Nachrichtenschleife aus.
CAtlExeModuleT::UninitializeCom Hebt COM-Initialisierung auf.
CAtlExeModuleT::Unlock Erhöht die Sperranzahl des Moduls.
CAtlExeModuleT::WinMain Diese Methode implementiert den code, der zum Ausführen einer EXE erforderlich ist.

Öffentliche Datenmember

Name Beschreibung
CAtlExeModuleT::m_bDelayShutdown Ein Kennzeichen, das angibt, dass es eine Verzögerung beim Herunterfahren des Moduls geben sollte.
CAtlExeModuleT::m_dwPause Ein Pausenwert, der verwendet wird, um sicherzustellen, dass alle Objekte vor dem Herunterfahren freigegeben werden.
CAtlExeModuleT::m_dwTimeOut Ein Timeoutwert, der verwendet wird, um die Entladung des Moduls zu verzögern.

Hinweise

CAtlExeModuleT stellt das Modul für eine Anwendung (EXE) dar und enthält Code, der das Erstellen einer EXE unterstützt, die Befehlszeile verarbeitet, Klassenobjekte registriert, die Meldungsschleife ausgeführt und beim Beenden bereinigt wird.

Diese Klasse wurde entwickelt, um die Leistung zu verbessern, wenn COM-Objekte auf dem EXE-Server ständig erstellt und zerstört werden. Nachdem das letzte COM-Objekt freigegeben wurde, wartet die EXE-Datei auf eine vom CAtlExeModuleT::m_dwTimeOut-Datenmemmemm angegebene Dauer. Wenn während dieses Zeitraums keine Aktivität vorhanden ist (d. h., es werden keine COM-Objekte erstellt), wird der Herunterfahrensprozess initiiert.

Das CAtlExeModuleT::m_bDelayShutdown-Datenelement ist ein Flag, das verwendet wird, um festzustellen, ob die EXE den oben definierten Mechanismus verwenden soll. Wenn sie auf "false" festgelegt ist, wird das Modul sofort beendet.

Weitere Informationen zu Modulen in ATL finden Sie unter ATL-Modulklassen.

Vererbungshierarchie

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

Anforderungen

Kopfzeile: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

Der Konstruktor.

CAtlExeModuleT() throw();

Hinweise

Wenn das EXE-Modul nicht initialisiert werden konnte, wird WinMain sofort ohne weitere Verarbeitung zurückgegeben.

CAtlExeModuleT::~CAtlExeModuleT

Der Destruktor.

~CAtlExeModuleT() throw();

Hinweise

Gibt alle zugeordneten Ressourcen frei.

CAtlExeModuleT::InitializeCom

Initialisiert COM.

static HRESULT InitializeCom() throw();

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Hinweise

Diese Methode wird vom Konstruktor aufgerufen und kann überschrieben werden, um COM auf eine andere Weise als die Standardimplementierung zu initialisieren. Die Standardimplementierung ruft entweder aufruft CoInitializeEx(NULL, COINIT_MULTITHREADED) oder CoInitialize(NULL) abhängig von der Projektkonfiguration auf.

Das Überschreiben dieser Methode erfordert normalerweise das Überschreiben von CAtlExeModuleT::UninitializeCom.

CAtlExeModuleT::m_bDelayShutdown

Ein Kennzeichen, das angibt, dass es eine Verzögerung beim Herunterfahren des Moduls geben sollte.

bool m_bDelayShutdown;

Hinweise

Weitere Informationen finden Sie in der CAtlExeModuleT-Übersicht .

CAtlExeModuleT::m_dwPause

Ein Pausenwert, der verwendet wird, um sicherzustellen, dass alle Objekte vor dem Herunterfahren nicht mehr vorhanden sind.

DWORD m_dwPause;

Hinweise

Ändern Sie diesen Wert nach dem Aufruf von CAtlExeModuleT::InitializeCom , um die Anzahl von Millisekunden festzulegen, die als Pausenwert zum Herunterfahren des Servers verwendet wird. Der Standardwert ist 1000 Millisekunden.

CAtlExeModuleT::m_dwTimeOut

Ein Timeoutwert, der verwendet wird, um die Entladung des Moduls zu verzögern.

DWORD m_dwTimeOut;

Hinweise

Ändern Sie diesen Wert nach dem Aufruf von CAtlExeModuleT::InitializeCom , um die Anzahl von Millisekunden zu definieren, die als Timeoutwert zum Herunterfahren des Servers verwendet wird. Der Standardwert ist 5000 Millisekunden. Weitere Details finden Sie in der CAtlExeModuleT-Übersicht .

CAtlExeModuleT::P arseCommandLine

Analysiert die Befehlszeile und führt bei Bedarf eine Registrierung durch.

bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();

Parameter

lpCmdLine
Die Befehlszeile, die an die Anwendung übergeben wird.

pnRetCode
Das HRESULT, das der Registrierung entspricht (sofern die Registrierung erfolgt ist).

Rückgabewert

Gibt "true" zurück, wenn die Anwendung weiterhin ausgeführt werden soll, andernfalls "false".

Hinweise

Diese Methode wird von CAtlExeModuleT::WinMain aufgerufen und kann überschrieben werden, um Befehlszeilenoptionen zu verarbeiten. Die Standardimplementierung überprüft auf /RegServer- und /UnRegServer-Befehlszeilenargumente und führt Registrierung oder Registrierung durch.

CAtlExeModuleT::P ostMessageLoop

Diese Methode wird unmittelbar nach dem Beenden der Nachrichtenschleife aufgerufen.

HRESULT PostMessageLoop() throw();

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Hinweise

Überschreiben Sie diese Methode, um eine benutzerdefinierte Anwendungsbereinigung durchzuführen. Die Standardimplementierung ruft CAtlExeModuleT::RevokeClassObjects auf.

CAtlExeModuleT::P reMessageLoop

Diese Methode wird unmittelbar vor dem Eingeben der Nachrichtenschleife aufgerufen.

HRESULT PreMessageLoop(int nShowCmd) throw();

Parameter

nShowCmd
Der Als nShowCmd-Parameter in WinMain übergebene Wert.

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Hinweise

Überschreiben Sie diese Methode, um benutzerdefinierten Initialisierungscode für die Anwendung hinzuzufügen. Die Standardimplementierung registriert die Klassenobjekte.

CAtlExeModuleT::RegisterClassObjects

Registriert das Klassenobjekt mit OLE, damit andere Anwendungen eine Verbindung damit herstellen können.

HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();

Parameter

dwClsContext
Gibt den Kontext an, in dem das Klassenobjekt ausgeführt werden soll. Mögliche Werte sind CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER oder CLSCTX_LOCAL_SERVER.

dwFlags
Bestimmt die Verbindungstypen mit dem Klassenobjekt. Mögliche Werte sind REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE oder REGCLS_MULTI_SEPARATE.

Rückgabewert

Gibt S_OK bei Erfolg zurück, S_FALSE, wenn keine Klassen registriert werden sollen, oder ein HRESULT-Fehler beim Fehler.

CAtlExeModuleT::RevokeClassObjects

Entfernt das Klassenobjekt.

HRESULT RevokeClassObjects() throw();

Rückgabewert

Gibt S_OK bei Erfolg zurück, S_FALSE, wenn keine Klassen registriert werden sollen, oder ein HRESULT-Fehler beim Fehler.

CAtlExeModuleT::Run

Diese Methode führt Code im EXE-Modul aus, um die Nachrichtenschleife zu initialisieren, auszuführen und zu bereinigen.

HRESULT Run(int nShowCmd = SW_HIDE) throw();

Parameter

nShowCmd
Gibt an, wie das Fenster angezeigt werden soll. Dieser Parameter kann einer der werte sein, die im Abschnitt "WinMain " erläutert werden. Standardmäßig wird SW_HIDE.

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Hinweise

Diese Methode kann überschrieben werden. In der Praxis ist es jedoch besser, CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop oder CAtlExeModuleT::P ostMessageLoop zu überschreiben.

CAtlExeModuleT::RunMessageLoop

Diese Methode führt die Nachrichtenschleife aus.

void RunMessageLoop() throw();

Hinweise

Diese Methode kann überschrieben werden, um das Verhalten der Nachrichtenschleife zu ändern.

CAtlExeModuleT::UninitializeCom

Hebt COM-Initialisierung auf.

static void UninitializeCom() throw();

Hinweise

Standardmäßig ruft diese Methode einfach CoUninitialize auf und wird vom Destruktor aufgerufen. Überschreiben Sie diese Methode, wenn Sie CAtlExeModuleT::InitializeCom überschreiben.

CAtlExeModuleT::Unlock

Erhöht die Sperranzahl des Moduls.

LONG Unlock() throw();

Rückgabewert

Gibt einen Wert zurück, der für Diagnosen oder Tests nützlich sein kann.

CAtlExeModuleT::WinMain

Diese Methode implementiert den code, der zum Ausführen einer EXE erforderlich ist.

int WinMain(int nShowCmd) throw();

Parameter

nShowCmd
Gibt an, wie das Fenster angezeigt werden soll. Dieser Parameter kann einer der werte sein, die im Abschnitt "WinMain " erläutert werden.

Rückgabewert

Gibt den Rückgabewert der ausführbaren Datei zurück.

Hinweise

Diese Methode kann überschrieben werden. Wenn das Überschreiben von CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop oder CAtlExeModuleT::RunMessageLoop nicht genügend Flexibilität bietet, ist es möglich, die WinMain Funktion mithilfe dieser Methode außer Kraft zu setzen.

Siehe auch

ATLDuck-Beispiel
CAtlModuleT-Klasse
CAtlDllModuleT-Klasse
Klassenübersicht