• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как проверить запущен ли KOMPAS встроенными средствами python?

Автор biomotor, 30.10.21, 16:19:33

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

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

biomotor

Как проверить запущен ли KOMPAS встроенными средствами python?
Можно ли как-то проверить запущен ли процесс с именем KOMPAS.exe?
(Проблема с тем что при запуске команды на питоне при выключенном процессе компаса, питон подгружает модули API5 и API7, и запускает компас в фоне, после этого питон пытается подключиться в фоновому компасу, а применяемые действия не срабатывают.)

Михаил88

30.10.21, 17:42:39 #1 Последнее редактирование: 30.10.21, 19:30:43 от Михаил88
pythoncom.connect('Kompas.Application.7')


Почитал так можно проверить существует ли окно по имени
если нет возвращается 0
если да то номер

import win32gui
print(win32gui.FindWindow(None, "КОМПАС-3D V18.1"))

так проверить запущен процесс или нет

import psutil
for proc in psutil.process_iter():
    name = proc.name()
    print(name)
    if name == "KOMPAS.Exe":
        print('ОК')
        break

biomotor

Михаил88, 'import psutil' естественно до этого нужно ввести pip install psutil...
Написал же встроенными средствами.

Есть конечно такой вариант, но он не устраивает тем что запускается tasklist в cmd, и окно вылетает на долю секунды.

import subprocess

#  Проверим запущен ли КОМПАС
def checkKompasRun():
    cmd = 'tasklist /FI "IMAGENAME eq %s" /FI "STATUS eq running"' % 'KOMPAS.Exe'
    status = subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout.read()
    return 'KOMPAS.Exe' in str(status)

if checkKompasRun() == True:

Вот бы его запустить в фоновом режиме....

Михаил88

Цитата: biomotor от 30.10.21, 20:49:01Михаил88, 'import psutil' естественно до этого нужно ввести pip install psutil...
Написал же встроенными средствами.

Одним из преимуществ python - большое количество библиотек на все случаи. По меньшей мере странно не пользоваться этим.

Vi2

Цитата: biomotor от 30.10.21, 16:19:33Как проверить запущен ли KOMPAS встроенными средствами python?
Можно ли как-то проверить запущен ли процесс с именем KOMPAS.exe?
В СОМе есть два стандартных механизма получения объекта - создание нового объекта и получение уже существующего объекта. Для этого в каждом языке существуют такие возможности. Например, в VB это CreateObject и GetObject, в С это CoCreateInstance и GetActiveObject. Только нужно найти правильные.

Поэтому запрашиваешь получение уже существующего Компаса, если объект вернулся, значит, Компас работает, если не вернулся, значит, Компас не работает. Никто новый экземпляр Компаса запускать не будет.

biomotor

Михаил88,
изначально я писал себе программу на PyQt5, мне это было удобно.
Потом захотелось написать для простого пользователя строго на tkinter, и использовать только встроенные средства.
Основная причина этому: это то, что встроенный питон компаса не позволяет устанавливать сторонние библиотеки. в нем отстутствует pip, а соответственно pip install... не работает.
Пытался установить pip в питон компаса, но ничего не вышло.
Для себя счел более удобным снести на...р встроенный питон и вместо него установить последнюю версию с офф сайта.
Резюме по tkinter. Библиотека хороша, но отсутствуют некоторые мелкие возможности, которые капец как напрягают... Например нет возможности отредактировать цвет границы меню/контекстного меню, и так во всем, мелкие недочеты все портят.
Изучая tkinter научился создавать свои стилизованные фреймы, кнопки и пр, наследуемые от tkinter.
Есть еще библиотека kivi, посмотрел видосик как писать на нем программу, но PyQt5 мне показался более удобным.
Резюмируя все вышесказанное, наверное нужно определиться для кого пишешь, для себя или для пользователя, да и использование сторонних библиотек не всегда так плохо, к тому же мне кажется в самом коде через try\except можно забить установку библиотек, если они отсутствуют.

Vi2,
я понимаю что нужно запросить, но встроенными средствами у меня этого сделать не получается, походу придется сторонними библиотеками.

maminagadost

Цитата: biomotor от 31.10.21, 15:29:04Михаил88,
изначально я писал себе программу на PyQt5, мне это было удобно.
Потом захотелось написать для простого пользователя строго на tkinter, и использовать только встроенные средства.
Основная причина этому: это то, что встроенный питон компаса не позволяет устанавливать сторонние библиотеки. в нем отстутствует pip, а соответственно pip install... не работает.
Пытался установить pip в питон компаса, но ничего не вышло.
Для себя счел более удобным снести на...р встроенный питон и вместо него установить последнюю версию с офф сайта.
Резюме по tkinter. Библиотека хороша, но отсутствуют некоторые мелкие возможности, которые капец как напрягают... Например нет возможности отредактировать цвет границы меню/контекстного меню, и так во всем, мелкие недочеты все портят.
Изучая tkinter научился создавать свои стилизованные фреймы, кнопки и пр, наследуемые от tkinter.
Есть еще библиотека kivi, посмотрел видосик как писать на нем программу, но PyQt5 мне показался более удобным.
Резюмируя все вышесказанное, наверное нужно определиться для кого пишешь, для себя или для пользователя, да и использование сторонних библиотек не всегда так плохо, к тому же мне кажется в самом коде через try\except можно забить установку библиотек, если они отсутствуют.

Vi2,
я понимаю что нужно запросить, но встроенными средствами у меня этого сделать не получается, походу придется сторонними библиотеками.

Вместо подгрузки библиотек, я бы скомпилировал скрипт в фаил. Подобная проблема была. Для переноса на машину коллег.
По поводу фреймворка для GUI я юзаю PySimpleGui в нём инклюзивно используются Tkinter, wxPython и PyQT.

biomotor

maminagadost, скомпилировать я тоже об этом думал,
но есть одно но... при компиляции библиотеки самого питона находятся внутри exe файла, и при запуске какой-либо команды все дико тормозит.
остается вариант каким-то макаром 'встроить' файлы питона в ту же директорию что и программа, и поставлять вместе с ней, без установки самого питона.
вроде как это где-то встречал, но не помню где... Pyinstaller или Nuitka может...