Zabij SLDWorks.exe -Osadzanie

Witam

W VB.NET roku stworzyłem aplikację. Działa dobrze, ale koniec wykonania nie jest do końca czysty.

  1. Aplikacja loguje się do solidworks: swApp = New SldWorks
  2. Dzieje się bardzo dużo...
  3. Następnie zamykam dokument:    swApp.CloseDoc(sDocfilename)
  4. Wciąż dużo się dzieje, a program dobiega końca

Logicznie rzecz biorąc, mam puste okno solidworks, które pozostaje otwarte. Jeśli zamknę go ręcznie, widzę,  że proces SLDWORKS przechodzi następnie do listy "procesów działających w tle" z "-Embedding" w wierszu poleceń. To samo zjawisko zauważam, jeśli dodam w kodzie: swApp.ExitApp() .

Ta sesja solidworks działająca w tle powoduje awarię nowych sesji. Musisz więc zabić go ręcznie.

Jak się z tego wydostać?

Co to jest ta opcja -Embedding?

Pozdrowienia

Benedykt

 

Witam

Aby się z tego wydostać, możesz, na końcu programu, zrobić pętlę, która wyświetla listę wszystkich aktywnych procesów i "zabić" "SLDWORKS.exe" proces(y), co robię we wszystkich moich programach (C#), które napędzają Solidworks w tym czy innym czasie.

Pozdrowienia

1 polubienie

Zastanawiałem się, czy istnieje sposób, aby moja aplikacja wyświetliła listę tych procesów podrzędnych. Ale nie wygląda to na łatwe.

Zabijanie wszystkich procesów solidworks wydaje mi się nieco brutalne. Moja aplikacja jest uruchamiana jako zadanie (gdy dokument zostanie zatwierdzony) i szkoda byłoby zabić sesję użytkownika.

Aby wyświetlić listę procesów podrzędnych, istnieje funkcjonalne rozwiązanie napisane w języku C# ICI.

Wystarczy, że przełożysz to na VB.Net i dostosujesz do swoich potrzeb.

Pozdrowienia 

1 polubienie

Już to zauważyłem i wydawało mi się to skomplikowane. Miałem nadzieję na coś prostszego i bardziej nieskomplikowanego w  system.diagnostic.process lub coś w tym stylu.

Poświęcę więc trochę czasu, aby zagłębić się w ten przykład.

Dziękuję i życzę miłego wieczoru

 

Jeśli wydaje się to zbyt skomplikowane dla Twoich potrzeb i ponieważ można bezpiecznie założyć, że napotkasz problemy związane z uprawnieniami potrzebnymi do korzystania z tych funkcji, możesz być w stanie obejść to wszystko, wracając do pierwszej sugestii (Aby się z tego wydostać, możesz, na końcu programu, utwórz pętlę, która wyświetla listę wszystkich aktywnych procesów i "zabij" proces "SLDWORKS.exe", ale zabij tylko proces, którego "MainWindowTitle" zawiera pewną wartość, wartość, którą możesz zdefiniować, tworząc na przykład pokój o "dziwnej" nazwie przed zabiciem tego procesu. Pozwala to na pozostanie przy prostym i bezpośrednim dostępie w system.diagnostic.process.

Pozdrowienia

1 polubienie

W rzeczy samej.

  1. Uruchamianie solidworks
  2. Otwieram dokument
  3. Identyfikuję proces SolidWorks
  4. Dzieje się bardzo dużo
  5. Zabijam ten proces

Nie wydaje mi się to złe

1 polubienie