#windows #delphi #tablet
#Windows #delphi #планшет
Вопрос:
У меня проблема в том, что я хочу включить одно приложение в другое.
В обычном режиме это работает без проблем. В Delphi (VCL) я удаляю рамку окна и устанавливаю панель контейнера основного приложения A в качестве родительского приложения B.
using WinApi.Windows;
var
A: TPanel;
B: TWinProcInfo;
SetParent(B.HWND, A.Handle);
// remove title bar and window frame
aWindowStyle := GetWindowLong(B.HWND, GWL_STYLE);
SetWindowLong(B.HWND, GWL_STYLE, aWindowStyle and (not WS_CAPTION) and (not WS_THICKFRAME));
// set position/size inside A
SetWindowPos(B.HWND, 0, 0, 0, A.width, A.height, SWP_NOSIZE)
К сожалению, в режиме планшета, тем не менее, приложение B отображается развернутым, и теперь я также не могу перейти к основному приложению A, потому что оно является родительским для B (поэтому B накладывает A).
Но: не каждое приложение максимизируется в режиме планшета!
Если я установлю Application.MainFormOnTaskbar := False;
демонстрационное приложение Delphi, это приложение можно свободно перемещать и изменять его размер даже в режиме планшета. Если я правильно понимаю документы, это устанавливает, какая форма подключена к значку панели задач.
Если значение MainFormOnTaskBar равно True, кнопка на панели задач представляет основную форму приложения и отображает ее заголовок. Если значение равно False, кнопка на панели задач представляет собой (скрытое) главное окно приложения и содержит заголовок приложения. Для использования эффектов Windows Vista или Windows 7 Aero, включая эскизы панели задач в реальном времени, динамические окна, Windows Flip и Windows Flip 3D, значение MainFormOnTaskBar должно иметь значение True.
Теперь моя проблема: как я могу сделать это для внешнего приложения? Потому что B не мой собственный (кстати, его UltraVNC).
Существует ли какой-либо winapi, подобный приведенному выше стилю, для достижения этой цели?
Комментарии:
1. Чтобы восстановить окно из его развернутого состояния, используйте
ShowWindow( hWnd, SW_RESTORE )
.2. @AmigoJack Нет, в режиме планшета это не так.