Как войти в режим Windows Flip 3D в Windows Vista и более поздних версиях?

Можно ли активировать Flip 3D mode на Windows Vista выше систем программно?

введите здесь описание изображения

Это так же, как если бы вы вручную нажимали CTRL + WIN + TAB


person TLama    schedule 24.11.2011    source источник
comment
Я разместил это только для того, чтобы поделиться. Я не знаю его реального практического использования (даже если мне нравится этот режим :)   -  person TLama    schedule 24.11.2011
comment
Обратите внимание, что эта функция отсутствует в Windows 8.   -  person Deanna    schedule 28.09.2012
comment
@Deanna, как и весь Aero... От земли до деревьев.   -  person TLama    schedule 28.09.2012


Ответы (1)


Shell объект имеет WindowSwitcher метод, который может вызывать этот режим.

Вот пример кода Delphi:

uses
  ComObj;

procedure EnterWindowSwitcherMode;
var
  Shell: OleVariant;
begin
  try
    Shell := CreateOleObject('Shell.Application');
    Shell.WindowSwitcher;
  finally
    Shell := Unassigned;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Win32MajorVersion >= 6 then // are we at least on Windows Vista ?
  begin
    try
      EnterWindowSwitcherMode;
    except
      on E: Exception do
        ShowMessage(E.ClassName + ': ' + E.Message);
    end;
  end;
end;


Обновление:

Или, как упоминал здесь Норберт Вильгельм, существует также IShellDispatch5 объектный интерфейс, который фактически представляет WindowSwitcher. Итак, вот еще одна версия того же...

Для следующего фрагмента кода требуется модуль Shell32_TLB.pas, который вы можете создать в Delphi таким образом (обратите внимание, что у вас должна быть как минимум Windows Vista, где IShellDispatch5 был использован в первый раз):

  • перейдите в меню Компонент/Импорт компонента
  • продолжить с выбранным Импорт библиотеки типов
  • выберите Элементы управления и автоматизация Microsoft Shell и завершите работу мастера.

И код:

uses
  Shell32_TLB;

procedure EnterWindowSwitcherMode;
var
  // on Windows Vista and Windows 7 (at this time :)
  // is Shell declared as IShellDispatch5 object interface
  AShell: Shell;
begin
  try
    AShell := CoShell.Create;
    AShell.WindowSwitcher;
  finally
    AShell := nil;
  end;
end;
person TLama    schedule 24.11.2011
comment
Существует также IShellDispatch5. - person Norbert Willhelm; 24.11.2011