はじめまして。
いま壁紙を変更するプログラムを作っているのですが、
・アクティブデスクトップが有効か無効かをチェックする
・有効であればビットマップ以外でも壁紙に指定可能とし、無効ならばビットマップのみ指定可能とする
というような処理を行いたいと思っています。
そこで以下のIsEnableActiveDesktop関数を作成しチェックを行ってみたのですが、
アクティブデスクトップが有効で画面のプロパティではJPEGなどのビットマップ以外の画像を指定できる状況でも
IsEnableActiveDesktop関数はfalseを返し、デスクトップ上にWEB項目?を表示させている状態だとtrueを返しました。
単純にアクティブデスクトップが有効でJPEGなどを壁紙に設定できる状態かどうかを取得するにはどうしたらいいのでしょうか?
/*
* アクティブデスクトップが有効かどうかを調べる
* 戻り値:
* true 有効
* false 無効もしくはエラー
*/
bool IsEnableActiveDesktop()
{
LPACTIVEDESKTOP psl;
COMPONENTSOPT com;
if( CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void **)&psl) == S_OK )
{
ZeroMemory(&com, sizeof(com));
com.dwSize = sizeof(COMPONENTSOPT);
if( psl->GetDesktopItemOptions(&com, 0) == S_OK )
{
psl->Release();
if( com.fActiveDesktop )
{
return true;
}
else
{
return false;
}
}
}
return false;
}
ツイート | ![]() |