Вопрос к знатокам.
КОМПАС не сохраняет размеры своего окна (формы), при закрытии программы :(
Как средствами API получить размеры текущие размеры окна КОМПАС?
Через хендл окна пробовал, но нет доступа к этим свойствам...
ЦитироватьЧерез хендл окна пробовал, но нет доступа к этим свойствам
Добрый день.
GetWindowRect принимает хендл окна и возвращает размеры окна. Ниже тест (Python):
import pythoncom
from win32com.client import Dispatch, gencache
from win32gui import GetWindowRect
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
handle = kompas_object.ksGetHWindow()
rect = GetWindowRect(handle)
print(rect)
Спасибо, Slaviation!
Я, примерно, так и пробовал..., получать то получал, а вот изменить не удавалось.
Методом проб, задачу решил не через Windows.API а через System.Diagnostics.Process так:
using System;
using System.Linq;
using System.Threading;
using System.Diagnostics;
using System.Windows.Automation;
...
AutomationElement window = null;
var kompasProcess = Process.GetProcessesByName("KOMPAS").FirstOrDefault();
if (kompasProcess != null)
{
window = AutomationElement.FromHandle(kompasProcess.MainWindowHandle);
var transformPattern = (TransformPattern)window.GetCurrentPattern(TransformPattern.Pattern);
transformPattern.Move(0,0);
transformPattern.Resize(1400, 1050);
}