Редактировать: дополнительная информация
Я сузил его до определенных приложений на определенных компьютерах. Я пытаюсь запустить Chrome в полноэкранном режиме на определенном мониторе. Это прекрасно работает на большинстве систем, которые я тестировал, однако мы столкнулись с набором компьютеров под управлением Windows 7 Pro 32bit, которые перемещаются и изменяют размеры правильно, но их границы и кнопки остаются нетронутыми.
Я понимаю, что все окна Chrome порождаются в рамках одного процесса Chrome и что их жизненный цикл является изменчивым, но мы смогли обойти это, используя отдельный каталог данных, в котором каждый экземпляр Chrome запускается таким образом в своем собственном родительском процессе. Похоже, что Chrome - единственное приложение, у нас проблемы с запуском полноэкранного режима только на одном компьютере. Например, при запуске calc.exe он максимизирует и удаляет границы без проблем во всех протестированных нами системах. Я подтвердил, что версия Chrome, работающая на каждой системе, одинакова. Я был бы очень признателен, если бы у кого-то было больше понимания либо этой проблемы, либо способов дальнейшего устранения проблемы.
Я пытаюсь запустить приложение в полноэкранном режиме, используя SetWindowLong, и оно прекрасно работало до последнего компьютера, на котором я его пробовал. Я в основном использую код, указанный в этом вопросе: Удаление границы окна?
Это прекрасно работает как на моих ноутбуках (Windows 7 Ultimate), так и на нескольких рабочих боксах, на которых я его протестировал (Windows 7 POS Embedded), но не работает на другом компьютере на работе (Windows 7 Professional). Вызов SetWindowLong возвращает ожидаемое значение, которое указывает мне, что оно должно работать, и вызов SetWindowPos работает нормально, так как корректно изменяет размер окна, но граница и кнопки все еще там! Он работает так, как будто не было никакого вызова SetWindowLong вообще. Я был бы очень признателен за некоторую помощь, поскольку у меня нет идей на данный момент.
Редактировать: Вот код во всей красе с 1:00. Практически прямая копия связанного вопроса.
int lStyle = GetWindowLong(process.MainWindowHandle, GWL_STYLE);
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
_logger.Debug(String.Format("Style: {0}", lStyle)); // 369295360
var swlResult = SetWindowLong(process.MainWindowHandle, GWL_STYLE, lStyle);
_logger.Debug(String.Format("SetWindowLong: {0}", swlResult)); // 382664704
int lExStyle = GetWindowLong(process.MainWindowHandle, GWL_EXSTYLE);
lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE);
SetWindowLong(process.MainWindowHandle, GWL_EXSTYLE, lExStyle);
Screen screen = GetDisplay(display);
return SetWindowPos(
process.MainWindowHandle,
HWND_TOPMOST,
screen.WorkingArea.Left,
screen.WorkingArea.Top,
screen.WorkingArea.Width,
screen.WorkingArea.Height,
SetWindowPosFlags.SWP_FRAMECHANGED);