Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как проверить, включён ли ActiveDesktop 2

Delphi , Рабочий стол , Рабочий стол

Как проверить, включён ли ActiveDesktop 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   ComObj, ShlObj, ActiveX;

 // Check if Active Desktop is enabled (2) 
function IsActiveDesktopEnable: Boolean;
 const
   CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
 var
   ActiveDesk: IActiveDesktop;
   ComponentsOpt: TComponentsOpt;
   hr: HRESULT;
   dwReserved: DWORD;
 begin
   ZeroMemory(@ComponentsOpt, SizeOf(TComponentsOpt));
   ComponentsOpt.dwSize := SizeOf(TComponentsOpt);
   hr := CoCreateInstance(CLSID_ActiveDesktop, nil, CLSCTX_INPROC_SERVER,
     CLSID_ActiveDesktop, ActiveDesk);
   if SUCCEEDED(hr) then
   begin
     hr := ActiveDesk.GetDesktopItemOptions(ComponentsOpt, dwReserved);
     // ActiveDesk._Release; 
  end;
   Result := ComponentsOpt.fActiveDesktop;
 end;

Привет! Я переведу текст на русский язык.

Код Delphi для проверки включения Active Desktop (версии 2) на системе Windows:

Импорты

Код импортирует три модуля: ComObj, ShlObj и ActiveX. Эти модули используются для создания COM-объектов, манипуляции объектами оболочки и взаимодействия с контролем ActiveX соответственно.

Определение функции

Функция IsActiveDesktopEnable определена для возвращения булевого значения, указывающего, включен ли Active Desktop (версии 2). Функция не принимает параметров.

Константные определения

Две константы определены:

  • CLSID_ActiveDesktop: это класс ID (GUID) для объекта Active Desktop.
  • ComponentsOpt: это пустой экземпляр записи TComponentsOpt, который будет использоваться для хранения результата вызова метода GetDesktopItemOptions.

Объявление переменных

Три переменные объявлены:

  • ActiveDesk: интерфейсная переменная типа IActiveDesktop, которая будет содержать ссылку на объект Active Desktop.
  • hr: переменная HRESULT, которая будет хранить результат создания COM-объекта и вызова методов.
  • dwReserved: переменная DWORD, которая не используется в этом коде.

Выполнение кода

Функция выполняется следующим образом: 1. Она создает экземпляр записи TComponentsOpt с помощью функции ZeroMemory и устанавливает ее размер, соответствующий структуре записи. 2. Она вызывает функцию CoCreateInstance, чтобы создать экземпляр объекта Active Desktop, передавая в нее класс ID, null-указатель для интерфейсной переменной (поскольку мы не интересуемся raw-интерфейсом) и флаг CLSCTX_INPROC_SERVER для указания, что объект должен быть создан в-чase. 3. Если создание успешно, код вызывает метод GetDesktopItemOptions на объекте Active Desktop, передавая в него запись ComponentsOpt и резервное значение. 4. Функция затем проверяет, был ли результат вызова GetDesktopItemOptions успешен (т.е. переменная hr содержит код успеха). Если это так, она извлекает значение поля fActiveDesktop из записи ComponentsOpt, которое указывает, включен ли Active Desktop. 5. Функция возвращает значение fActiveDesktop, указывающее, включен ли Active Desktop.

Замечания

  • В этом коде строка ActiveDesk._Release комментирована, что означает, что ссылка на объект не будет освобождена после использования. Это может привести к ресурсным лагерям, если код выполняется повторно.
  • Метод GetDesktopItemOptions используется для запроса состояния Active Desktop. Этот метод возвращает значение, указывающее, включен ли Active Desktop.

Альтернативное решение

Если вам нужно проверить, включен ли Active Desktop (версии 2), и вы не хотите использовать COM-объекты, вы можете попробовать использовать функции Windows API, такие как SystemParametersInfo или SHGetDesktopItemOptions. Однако эти подходы могут быть более сложными и платформозависимыми.

Проверить включение ActiveDesktop 2 можно с помощью функции IsActiveDesktopEnable, которая использует интерфейс IActiveDesktop и проверяет флаг fActiveDesktop в структуре TComponentsOpt.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Рабочий стол ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:48:51/0.0059540271759033/1