Как загрузить КОМПАС-3D в свернутом виде?

Автор lavgirb, 29.04.25, 11:10:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

lavgirb

Как загрузить КОМПАС-3D в свернутом виде? Или быстро свернуть?
Возможно ли? Если возможно, то как?
С помощью ShowWindow, например, не получается.

UU

#1
Так загрузите в невидимом режиме.
Kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
if Kompas<>nil then Kompas.Visible:=False;
Нормально оно скрывается без проблем.
ShowWindow(Kompas.ksGetHWindow,SW_HIDE);


Lemieux

Цитата: lavgirb от 29.04.25, 11:10:32С помощью ShowWindow, например, не получается.
Покажите вот эту часть кода? Окно получаете через HwdSource?

lavgirb

Цитата: Lemieux от 29.04.25, 11:21:21Покажите вот эту часть кода? Окно получаете через HwdSource?

Вот это не приводит к желаемому результату. Появляется ошибка.
     
moKO5.Visible = True
moKO7 = moKO5.ksGetApplication7     
Try
   ShowWindow(moKO5.ksGetHWindow, SW_MINIMIZED)
Catch ex As Exception
End Try
Try
   ShowWindow(moKO7.MainWindowHandle, SW_MINIMIZED)
Catch ex As Exception
End Try

lavgirb

Цитата: UU от 29.04.25, 11:12:15Так загрузите в невидимом режиме.
Kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
if Kompas<>nil then Kompas.Visible:=False;
Нормально оно скрывается без проблем.
ShowWindow(Kompas.ksGetHWindow,SW_HIDE);
Задача загрузить свернутым или свернуть)

Lemieux

Цитата: lavgirb от 29.04.25, 12:15:47Вот это не приводит к желаемому результату. Появляется ошибка.
     
moKO5.Visible = True
moKO7 = moKO5.ksGetApplication7     
Try
   ShowWindow(moKO5.ksGetHWindow, SW_MINIMIZED)
Catch ex As Exception
End Try
Try
   ShowWindow(moKO7.MainWindowHandle, SW_MINIMIZED)
Catch ex As Exception
End Try

ksGetHWindow а почему Вы int не приводите к IntPtr?

UU

Цитата: lavgirb от 29.04.25, 12:17:33Задача загрузить свернутым или свернуть)
Взял и свернул.


Михаил88

#7
Я тоже попробовал все работает нормально.

# -*- coding: utf-8 -*-
import pythoncom
import win32con
from win32com.client import Dispatch, gencache
import win32gui

#  Получи API интерфейсов версии 5
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))
if kompas_object is not None:
    kompas_object.Visible = True
    hwnd = kompas_object.ksGetHWindow()
    win32gui.SetForegroundWindow(hwnd)
    win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)

UU

#8
Цитата: Михаил88 от 29.04.25, 13:20:31Я тоже попробовал все работает нормально.
У вас, Компас запущен?
У меня программа запускает Компас.
Можете играться.
KompasWindows.zip

Lemieux


UU

Цитата: Lemieux от 29.04.25, 14:10:18Кто функции сделал обрезание?
Я, там есть архив приложения, запустите и смотрите.

Михаил88

#11
Цитата: lavgirb от 29.04.25, 11:10:32Как загрузить КОМПАС-3D в свернутом виде? Или быстро свернуть?
Возможно ли? Если возможно, то как?
С помощью ShowWindow, например, не получается.

Посмотрите такой пример. У меня работает данный код. Меня, как то давно просили написать. Я на vba особо не пишу так, что сильно не пинайте. Где то тоже и сети нашел и немного дописал.

Видео о результате работы
https://disk.yandex.ru/i/JQO8OoBlvnWSzg

Public Const SW_MINIMIZE = 6

Public Declare PtrSafe Function apiShowWindow Lib "user32" _
Alias "ShowWindow" (ByVal hWnd As Long, _
ByVal nCmdShow As Long) As Long

Public Declare PtrSafe Function CloseWindow Lib "user32" (ByVal hWnd As Long) As Long

Public Function fSetWindow(nHwnd As Long, nCmdShow As Long) As Long


On Error GoTo Err_fSetWindow

    fSetWindow = apiShowWindow(nHwnd, nCmdShow)

Exit_fSetWindow:

   Exit Function

Err_fSetWindow:

    MsgBox Err.Description

    Resume Exit_fSetWindow

End Function

Sub Test()

Dim kompasObject As Kompas6API5.Application
Dim hWnd As Long
Dim challenge As Integer

 
Set kompasObject = CreateObject("KOMPAS.Application.5")
kompasObject.Visible = True

hWnd = kompasObject.ksGetHWindow()
challenge = fSetWindow(hWnd, SW_MINIMIZE)

End Sub

Михаил88

Цитата: UU от 29.04.25, 13:55:55У вас, Компас запущен?
У меня программа запускает Компас.
Можете играться.
KompasWindows.zip


В момент запуска кода у меня компас не запущен. Это касается 2х примеров, которые я здесь написал. Получается запускаю компас, делаю его видимым и сворачиваю. Я так понял ТС это и хотел.

lavgirb

Все попробую вечером.
Возможно, причина в SW_MINIMIZE. В интернете, где 2, где 6. :%:

Цитата: Михаил88 от 29.04.25, 15:03:32В момент запуска кода у меня компас не запущен. Это касается 2х примеров, которые я здесь написал. Получается запускаю компас, делаю его видимым и сворачиваю. Я так понял ТС это и хотел.
Да, правильно.
В идеале, хотелось бы запускать уже свернутым.
Не заполняя собой экран, хотя бы и на миг. Хотя, как происходит, сам еще не видел.

UU

Цитата: lavgirb от 29.04.25, 15:24:25Все попробую вечером.
Возможно, причина в SW_MINIMIZE. В интернете, где 2, где 6. :%:
Да, правильно.
В идеале, хотелось бы запускать уже свернутым.
Не заполняя собой экран, хотя бы и на миг. Хотя, как происходит, сам еще не видел.
Запустите программу из моего архива и посмотрите, как происходит.

Михаил88



Когда запускаю, окно компас вообще не появляется, окно сразу отображается в свернутом виде. На видео видно.

UU

Цитата: Михаил88 от 29.04.25, 15:46:16Когда запускаю, окно компас вообще не появляется, окно сразу отображается в свернутом виде. На видео видно.
Нарушение правил, сейчас нужно спрашивать о размещении видео, у меня удалили.

Lemieux

Цитата: UU от 29.04.25, 15:48:42Нарушение правил, сейчас нужно спрашивать о размещении видео, у меня удалили.
Сурово  :laugh: Долина отчаяния!

UU

#18
Цитата: Михаил88 от 29.04.25, 14:34:11Видео о результате работы
https://disk.yandex.ru/i/JQO8OoBlvnWSzg
Цитата: Lemieux от 29.04.25, 16:26:42Сурово  :laugh: Долина отчаяния!
Я не отчаиваюсь, ссылка на видео - https://youtu.be/gIfgxqiQVnE

Student2025

Одна из причин по которой ShowWindow не может работать это когда окно программы еще не прорисовалось. Но это было давно и сейчас нет таких проблем.