Я разработал простое приложение для создания оконных форм для захвата окон приложения видеочата (входящего, удаленного, и исходящего, локального).Для этого я использую неуправляемый код Windows API.Вот код захвата:
// Set Local Window
localHandle = FindWindow(null, "local");
// Backup parent window for local
prevLocalHandle = GetParent(localHandle);
SetParent(localHandle, this.pBoxLocal.Handle);
SetWindowLong(localHandle, GWL_STYLE, WS_VISIBLE + (WS_MAXIMIZE | WS_BORDER | WS_DISABLED));
MoveWindow(localHandle, 0, -TOP_BAR_HEIGHT, this.pBoxLocal.Width, this.pBoxLocal.Height + LOWER_BAR_HEIGHT, true);
// Set Remote Window
remoteHandle = FindWindow(null, "remote");
// Backup parent window for remote
prevRemoteHandle = GetParent(remoteHandle);
SetParent(remoteHandle, this.pBoxRemote.Handle);
SetWindowLong(remoteHandle, GWL_STYLE, WS_VISIBLE + (WS_MAXIMIZE | WS_BORDER | WS_DISABLED));
MoveWindow(remoteHandle, 0, -TOP_BAR_HEIGHT, this.pBoxRemote.Width, this.pBoxRemote.Height + LOWER_BAR_HEIGHT, true);
Вот код возврата:
// Return Windows
SetParent(localHandle, prevLocalHandle);
SetWindowLong(localHandle, GWL_STYLE, (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX));
MoveWindow(localHandle, 0, 0, NORMAL_WIDTH, NORMAL_HEIGHT, true);
SetParent(remoteHandle, prevRemoteHandle);
SetWindowLong(remoteHandle, GWL_STYLE, (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX));
MoveWindow(remoteHandle, 0, 0, NORMAL_WIDTH, NORMAL_HEIGHT, true);
Цель состоит в том, чтобы перейти от этого:
К этому:
А потом снова!:)
В настоящее время у меня есть две проблемы с моим подходом:
прежде всего, когда я возвращаю окна в приложение видеочата, иногда черноеПрямоугольник слева в моем верхнем левом углу экрана.Он исчезает, когда я обновляю область.
секунда и, самое главное, бывают случаи, когда при захвате окна приложения я также фиксирую его панели инструментов (хотя измеренияпоставка только те, которые касаются области видео окна).
Есть ли лучший способ сделать это?Даже если это просто лучшие функции!Помните: я хочу получить окна приложения видеочата и впоследствии вернуть их.
Заранее благодарен за любые советы!