VC6 ругается на IActiveDesktop* pIAD;
От: __boolean Россия  
Дата: 27.10.03 11:00
Оценка:
Что на VC6 нужно подключить, чтобы следующий код работал:
IActiveDesktop* pIAD;
CoInitialize ( NULL );
hr = CoCreateInstance ( CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,
IID_IActiveDesktop,(void**)&pIAD );
и т.д.

пишет
error C2065: 'IActiveDesktop' : undeclared identifier
Re: VC6 ругается на IActiveDesktop* pIAD;
От: UnrealAlex Россия  
Дата: 27.10.03 11:05
Оценка:
__>error C2065: 'IActiveDesktop' : undeclared identifier
#include <shlobj.h>
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[2]: VC6 ругается на IActiveDesktop* pIAD;
От: __boolean Россия  
Дата: 27.10.03 11:12
Оценка:
Здравствуйте, UnrealAlex, Вы писали:

__>>error C2065: 'IActiveDesktop' : undeclared identifier

UA>#include <shlobj.h>

я его подключал 8(, не работает, и <wininet.h> тоже
Не пойму как инициализировать 8(, прям беда какая-то.
Re[3]: VC6 ругается на IActiveDesktop* pIAD;
От: UnrealAlex Россия  
Дата: 27.10.03 11:24
Оценка:
#include <WinInet.h>
#include <shlobj.h>

именно в такой последовательности
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[2]: VC6 ругается на IActiveDesktop* pIAD;
От: __boolean Россия  
Дата: 27.10.03 11:26
Оценка:
Здравствуйте, UnrealAlex, Вы писали:

__>>error C2065: 'IActiveDesktop' : undeclared identifier

UA>#include <shlobj.h>

#include <shlobj.h>
#include "stdafx.h"

вот мои заголовки
Может кроме h-файла еще необходимо что-то подключить?
Re[4]: VC6 ругается на IActiveDesktop* pIAD;
От: __boolean Россия  
Дата: 27.10.03 11:31
Оценка:
Здравствуйте, UnrealAlex, Вы писали:

UA>#include <WinInet.h>

UA>#include <shlobj.h>

UA>именно в такой последовательности

и так делал, но он какой-то упертый. По поиску находит. Такое ощушение, что какие-то #ifdef стоят, и он IActiveDesktop просто не видит, пропускает.
Re[3]: VC6 ругается на IActiveDesktop* pIAD;
От: UnrealAlex Россия  
Дата: 27.10.03 11:32
Оценка:
#include "stdafx.h"
#include <WinInet.h>
#include <shlobj.h>
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[4]: VC6 ругается на IActiveDesktop* pIAD;
От: __boolean Россия  
Дата: 27.10.03 11:38
Оценка:
Здравствуйте, UnrealAlex, Вы писали:

UA>
UA>#include "stdafx.h"
UA>#include <WinInet.h>
UA>#include <shlobj.h>
UA>



Сделал все, как ты написал. Ноль эмоций. Таже ошибка.
А IUnknown видит нормально. 8(
Re[4]: VC6 ругается на IActiveDesktop* pIAD;
От: __boolean Россия  
Дата: 27.10.03 11:41
Оценка:
Здравствуйте, UnrealAlex, Вы писали:

UA>
UA>#include "stdafx.h"
UA>#include <WinInet.h>
UA>#include <shlobj.h>
UA>


может что-то связано с WINVER или _WIN32_IE?
Re[5]: VC6 ругается на IActiveDesktop* pIAD;
От: UnrealAlex Россия  
Дата: 27.10.03 11:41
Оценка:
Здравствуйте, __boolean, Вы писали:

__>Здравствуйте, UnrealAlex, Вы писали:


UA>>#include <WinInet.h>

UA>>#include <shlobj.h>

UA>>именно в такой последовательности

__>и так делал, но он какой-то упертый. По поиску находит. Такое ощушение, что какие-то #ifdef стоят, и он IActiveDesktop просто не видит, пропускает.
#include "stdafx.h"
#define _WIN32_IE 0x400
#include <WinInet.h>
#include <shlobj.h>
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[6]: VC6 ругается на IActiveDesktop* pIAD;
От: George Seryakov Россия  
Дата: 27.10.03 15:12
Оценка:
Здравствуйте, UnrealAlex, Вы писали:

У меня компилится:

#include "stdafx.h"
#include <COMDEF.H>

int main(int argc, char* argv[])
{
    ::CoInitialize(NULL);
    {
        IActiveDesktop* pIAD;
        HRESULT hr = CoCreateInstance ( __uuidof(ActiveDesktop),NULL,CLSCTX_INPROC_SERVER,
            __uuidof(IActiveDesktop),(void**)&pIAD );

  }
    ::CoUninitialize();
    return 0;
}
GS
Re: VC6 ругается на IActiveDesktop* pIAD;
От: __boolean Россия  
Дата: 28.10.03 04:19
Оценка:
Здравствуйте, __boolean, Вы писали:

__>Что на VC6 нужно подключить, чтобы следующий код работал:

__>IActiveDesktop* pIAD;
__>CoInitialize ( NULL );
__>hr = CoCreateInstance ( CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,
__> IID_IActiveDesktop,(void**)&pIAD );
__>и т.д.

__>пишет

__>error C2065: 'IActiveDesktop' : undeclared identifier

В общем заработало, когда я создал dll без MFC. Кому надо, вот функция.

#include "stdafx.h"
#include <wininet.h>
#include <shlobj.h>

VOID WINAPI ChangeDesktop(LPSTR pszName)
{
    if(pszName != NULL && strlen(pszName))
    {
        LPWSTR pwStr;
        HANDLE hHeap = ::GetProcessHeap();
        INT nSize = MultiByteToWideChar(CP_ACP, 0, pszName, -1, NULL, 0);
        if(((LPVOID&)pwStr = HeapAlloc(hHeap, 0, nSize * sizeof(WCHAR))) == NULL) return;
        MultiByteToWideChar(CP_ACP, 0, pszName, -1, pwStr, nSize);

        IActiveDesktop* pIAD;
        CoInitialize ( NULL );
        HRESULT hr = CoCreateInstance ( CLSID_ActiveDesktop,
                            NULL,
                        CLSCTX_INPROC_SERVER,
                        IID_IActiveDesktop,
                        (void**) &pIAD );

        if (SUCCEEDED(hr))
        {
            WALLPAPEROPT opt = {sizeof(WALLPAPEROPT), WPSTYLE_CENTER};
            hr = pIAD->SetWallpaperOptions(&opt, 0);
            if (SUCCEEDED(hr))
            {
                hr = pIAD->SetWallpaper(pwStr, 0);
                pIAD->ApplyChanges(AD_APPLY_REFRESH|AD_APPLY_SAVE);
            }
            pIAD->Release();
        }
        CoUninitialize();
        HeapFree(hHeap, 0, pwStr); 
    }
}



Кстати, обои можно сменить и вот так

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pszWallpaperPath,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.