VC6 ругается на IActiveDesktop* pIAD;
Что на 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;
__>error C2065: 'IActiveDesktop' : undeclared identifier
#include <shlobj.h>
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[2]: VC6 ругается на IActiveDesktop* pIAD;
Здравствуйте, UnrealAlex, Вы писали:
__>>error C2065: 'IActiveDesktop' : undeclared identifier
UA>#include <shlobj.h>
я его подключал 8(, не работает, и <wininet.h> тоже
Не пойму как инициализировать 8(, прям беда какая-то.
Re[3]: VC6 ругается на IActiveDesktop* pIAD;
#include <WinInet.h>
#include <shlobj.h>
именно в такой последовательности
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[2]: VC6 ругается на IActiveDesktop* pIAD;
Здравствуйте, UnrealAlex, Вы писали:
__>>error C2065: 'IActiveDesktop' : undeclared identifier
UA>#include <shlobj.h>
#include <shlobj.h>
#include "stdafx.h"
вот мои заголовки
Может кроме h-файла еще необходимо что-то подключить?
Re[4]: VC6 ругается на IActiveDesktop* pIAD;
Здравствуйте, UnrealAlex, Вы писали:
UA>#include <WinInet.h>
UA>#include <shlobj.h>
UA>именно в такой последовательности
и так делал, но он какой-то упертый. По поиску находит. Такое ощушение, что какие-то #ifdef стоят, и он IActiveDesktop просто не видит, пропускает.
Re[3]: VC6 ругается на IActiveDesktop* pIAD;
#include "stdafx.h"
#include <WinInet.h>
#include <shlobj.h>
Невозможное мы сделаем сегодня — чудо займет немного больше времени. /Аноним/
Re[4]: VC6 ругается на IActiveDesktop* pIAD;
Здравствуйте, UnrealAlex, Вы писали:
UA>UA>#include "stdafx.h"
UA>#include <WinInet.h>
UA>#include <shlobj.h>
UA>
Сделал все, как ты написал. Ноль эмоций. Таже ошибка.
А IUnknown видит нормально. 8(
Re[4]: VC6 ругается на IActiveDesktop* pIAD;
Здравствуйте, UnrealAlex, Вы писали:
UA>UA>#include "stdafx.h"
UA>#include <WinInet.h>
UA>#include <shlobj.h>
UA>
может что-то связано с WINVER или _WIN32_IE?
Re[5]: VC6 ругается на IActiveDesktop* pIAD;
Здравствуйте, __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;
Здравствуйте, 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, Вы писали:
__>Что на 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);
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить