2010-07-01 17 views
7

Pliki pomocy Minitab zapewniają wsparcie w tym zakresie w ograniczonym zakresie, a wszystkie przykłady są w języku VB. Jestem nowicjuszem .NET, ale bardzo szybko go odbieram. Jest to coś w składni polecenia.Jak mogę wykonać polecenie Minitab przez .NET?

Zapewniają one ten przykład w VB:

Dim MtbApp As New mtb.Application 
Dim MtbProj As mtb.Project 
Dim MtbCom As mtb.Command 
Dim i, j As Integer 

MtbApp.UserInterface.Visible = True 
Set MtbProj = MtbApp.ActiveProject 
MtbProj.ExecuteCommand "RANDOM 30 C1 - C2" 
MtbProj.ExecuteCommand "REGRESS C1 1 C2" 

i mój kod wygląda to w C#

var MtbApp = new Mtb.Application(); 
var MtbProj = new Mtb.Project(); 
MtbProj = MtbApp.ActiveProject; 
MtbApp.UserInterface.Visible = true; 
MtbProj.ExecuteCommand(<command>); 

co ja spodziewałem powinno zdarzyć się Minitab należy otworzyć, a komenda powinna wykonać . Jednakże, co się dzieje, jest to, że dwa wystąpienia Minitaba są otwierane i nie wyświetlają interfejsu użytkownika, muszę je znaleźć w procesach.

+0

Nie ma czegoś takiego jak "C# .NET". Język jest po prostu C#, a Framework jest po prostu .NET. –

Odpowiedz

10

Zakładając, że dodaliśmy odniesienie do Minitab COM, to powinno Ci zacząć:

Mtb.Application MtbApp = null; 
Mtb.Project MtbProj = null; 
Mtb.UserInterface MtbUI = null; 

MtbApp = new Mtb.Application(); 
MtbProj = MtbApp.ActiveProject; 
MtbUI = MtbApp.UserInterface; 

MtbUI.Visible = true; 
MtbProj.ExecuteCommand("RANDOM 30 C1-C2", Type.Missing); //with C# optional params required 
MtbApp.Quit(); 

Marshal.ReleaseComObject(MtbUI); MtbUI = null; 
Marshal.ReleaseComObject(MtbProj); MtbProj = null; 
Marshal.ReleaseComObject(MtbApp); MtbApp = null; 

Używanie obiektów COM dla C# może być trudne. Zwłaszcza jeśli je zwalniasz, kiedy skończysz.

Pamiętaj, że z zasady nigdy nie podwajaj. Nie rób:

MtbApp.UserInterface.Visible = true; 

Zamiast:

Mtb.UserInterface MtbUI = null; 
MtbUI = MtbApp.UserInterface; 
MtbUI.Visible = true; 

więc przedmiotem MtbUI może być uwolniony później.

+0

Jako osoba pytająca i nowa w stackoverflow, najwyraźniej nie mogę przegłosować ani przegłosować, ale awansowałbym, gdybym mógł, to działało dla mnie, dziękuję. – xdumaine

+0

@roviuser, cieszę się, że zadziałało. Nawet jako nowy użytkownik, myślę, że nadal możesz zaakceptować odpowiedź (to jest znacznik wyboru). – Mark

+0

To fantastyczne wprowadzenie na temat rozpoczęcia pracy z automatyzacją Minitab. –

Powiązane problemy