Убедитесь, что вы включили
Проверка с помощью devtools в Chrome бессмысленна, так как devtools уменьшает доступный размер страницы для приложения, поэтому карта будет уменьшена. Но вы можете проверить с помощью Edge:
1680 x 977, как и ожидалось, на дисплее 1680 x 1050 с учетом верхних полос
Обычный способ получить его - изменить заголовок Word на что-то уникальное и перемещаться по списку окон верхнего уровня, пока не найдете его (EnumWindows).
Нет, к сожалению, нет способа связать экземпляр ApplicationClass с запущенным процессом Word.
Зачем вам нужно убивать экземпляр Word? Не могли бы вы просто попросить его закрыть все свои документы, а затем просто прекратить использование этого экземпляра? Если вы удалите все ссылки на класс, со временем GC сработает и отключит сервер COM .
http : //www.codekeep.net/snippets/7835116d-b254-466e-ae66-666e4fa3ea5e.aspx
///Return Type: DWORD->unsigned int
///hWnd: HWND->HWND__*
///lpdwProcessId: LPDWORD->DWORD*
[System.Runtime.InteropServices.DllImportAttribute( "user32.dll", EntryPoint = "GetWindowThreadProcessId" )]
public static extern int GetWindowThreadProcessId ( [System.Runtime.InteropServices.InAttribute()] System.IntPtr hWnd, out int lpdwProcessId );
private int _ExcelPID = 0;
Process _ExcelProcess;
private Application _ExcelApp = new ApplicationClass();
GetWindowThreadProcessId( new IntPtr(_ExcelApp.Hwnd), out _ExcelPID );
_ExcelProcess = System.Diagnostics.Process.GetProcessById( _ExcelPID );
...
_ExcelProcess.Kill();
Возможно, в файле Word есть ошибка. В результате, когда вы откроете файл методом Word.ApplicationClass.Documents.Open ()
, появится диалоговое окно, и процесс зависнет.
Используйте вместо него Word.ApplicationClass.Documents.OpenNoRepairDialog ()
. Я обнаружил, что проблема решена.