IActiveDesktop
-
Welche Header / Libs muss man includen / linken um IActiveDesktop zu nutzen.
-
Header: shlobj.h
-
Das reicht bei mir nicht.
Fehler:
C2027: Verwendung des undefinierten Typs "IActiveDesktop"
C2079: 'IAD' verwendet undefiniertes struct 'IActiveDesktop'
-
Die Lib heisst wahrscheinlich shlobj.lib. Probiers damit mal aus.
-
Das reicht bei mir nicht.
Noch ein Zitat aus dem MSDN:
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).Dann würde ich auf jeden Fall mal das versuchen:
#define _WIN32_IE 0x0400
Ansonsten schau halt in den Header, warum der entsprechende Teil nicht mit eingebunden wird.
-
shlobj.lib gibt es bei mir nicht.
Diese habe ich schon gelinkt:
Shell32.lib Shlwapi.lib Wininet.lib
hilft aber nix.
-
Wozu denn bitte eine lib? Wo bekommst Du den Pointer den her, doch wohl von CoCreateInstance()? Dann heißt die lib ole32.lib.
Außerdem beschwert sich der Compiler und nicht der Linker mit 'unresolved externals'.
[edit]
Ich hab jetzt mal in den Header geschaut:#if (_WIN32_IE >= 0x400) // // We need to make sure that WININET.H is included before this interface is // used because the COMPONENT structure uses INTERNET_MAX_URL_LENGTH // #ifdef _WININET_ // // Flags and structures used by IActiveDesktop //
Das mit dem Define war also schon ganz richtig, zusätzlich muß aber *vorher* wininet.h eingebunden werden.
[/edit]
[ Dieser Beitrag wurde am 19.06.2002 um 19:34 Uhr von -King- editiert. ]
-
Ich habe es jetzt endlich geschafft. Danke für die Hinweise.
Entscheidend ist offenbar folgende Sequenz:#define _WIN32_IE 0x0400 // IE 4+
#include <afx.h>
#include <wininet.h>die auch noch an der richtigen Stelle eingebunden werden muß.
-
Ich benutze den BCB6, und da reicht es, shlobj.h einzubinden, damit er IActiveDesktop erkennt. Jedoch bekomme ich da ein zusätzliches Problem. Ich bekomme eine Fehler wie
[C++Fehler] Unit1.cpp(23): Cannot create instance of abstract class 'IActiveDesktop'.
[C++Fehler] Unit1.cpp(23): Class 'IActiveDesktop' is abstract because of '__stdcall IActiveDesktop::QueryInterface(const _GUID &,void *= 0'.
Hat wohl irgendwie mit virtuellen Funktionen zu tun. Ich versteh's aber nicht. Kann mir jemand weiterhelfen?
-
Sorry, hat sich erledigt. Siehe hier: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/activedesktop.asp . Wichtig ist, dass man vorher noch
CoInitialize(NULL);
und am Ende
CoUninitialize();
aufruft.