Дескриптор меню

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Дескриптор меню

Eugie » 16 дек 2004, 13:59

Ну предположим в Delphi нет смартпоинтеров (в чём я сомневаюсь)
Нет smart pointers, подтверждаю
var
pDesktop : ^IShellFolder;
pMenu: ^IContextMenu;
Указатели не нужны, соотв.параметры просто объявлены как var

Romeo » 13 дек 2004, 18:50

Shell везде одинаковый так же, как и API. Ну предположим в Delphi нет смартпоинтеров (в чём я сомневаюсь), тогда код будет выглядить следующим образом:

Код: Выделить всё

var
   pDesktop : ^IShellFolder;
   pMenu: ^IContextMenu;

   ...

   SHGetDesktopFolder(pDesktop);
   ^pDesktop.CreateViewObject(NULL, IID_IContextMenu, @pMenu); 

   ...   

   {некие манипуляции}

  ...

  pMenu->Release;
  pDesktop->Release;
P.S. Могу и ошибаться: ни разу не писал под COM на Delphi. Да и вообще советую открыть стандартный делфийский help и найти там описание COM-интнерфейса IShellFolder.

OTELLO » 13 дек 2004, 18:06

Спасибки что откликнулся на просьбу, но не мог бы ты на Дельфе код написать, я не знаю Си =(( Или просто суть указать, я далее сам напишу. Заранее Спасиб!..

Romeo » 13 дек 2004, 14:48

Код: Выделить всё

   IShellFolderPtr spDesktop;
   SHGetDesktopFolder(spDesktop);

   IContextMenu spMenu;
   spDesktop->CreateViewObject(NULL, IID_IContextMenu, (void **)&spMenu);

   // далее можно манипулировать этим контекстным меню
P.S. Прямого способа получения хэндла не существует по той причине, что меню всякий раз заново создаётся перед тем, как показаться. Единственный выход - работать с ним через Shell.

Дескриптор меню

OTELLO » 11 дек 2004, 12:04

Народ, помогите плиз, как можно получить дескриптор контекстного меню рабочего стола?

Вернуться к началу