Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Eine dll aus einem .net Programm aufrufen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Eine dll aus einem .net Programm aufrufen (1746 mal gelesen)
little_ug
Mitglied
CAX/PDM Admin / PM


Sehen Sie sich das Profil von little_ug an!   Senden Sie eine Private Message an little_ug  Schreiben Sie einen Gästebucheintrag für little_ug

Beiträge: 389
Registriert: 20.03.2003

NX 7.5.4.4 mp1
Creo2 M020
TC UA 9.1.1.2

erstellt am: 14. Dez. 2009 13:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich habe ein .net Programm und will daraus eine andere dll aufrufen.
Habe dies gefunden:

Public Function Execute ( _
libName As String, _
className As String, _
methodName As String, _
inputArgs As Object() _
) As Object

Also über sess.Execute(....)

Nun verzweifle ich ein bisschen daran.
Hat jemand ein Beispiel?

Danke.

------------------
Gruß

Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jan Boettcher
Mitglied



Sehen Sie sich das Profil von Jan Boettcher an!   Senden Sie eine Private Message an Jan Boettcher  Schreiben Sie einen Gästebucheintrag für Jan Boettcher

Beiträge: 183
Registriert: 22.06.2005

erstellt am: 14. Dez. 2009 13:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für little_ug 10 Unities + Antwort hilfreich

Hallo Michael,

Willst Du eine Funktion aus einer .NET dll ausführen?

Dann funktioniert bei mir das folgende ganz hervorragend:

Code:

Assembly applicationLibAssy = Assembly.LoadFrom("<Pfad u. Name dll>"));
Type mainClass = applicationLibAssy.GetType("<Namespace u. Klassenname>");
mainClass.GetMethod("<Methodenname>").Invoke(null, new Object[] { <Argumente> });

(Sorry für's C#)

Gruß
Jan

------------------
Ingenieurbüro Jan Böttcher
www.ib-boettcher.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

little_ug
Mitglied
CAX/PDM Admin / PM


Sehen Sie sich das Profil von little_ug an!   Senden Sie eine Private Message an little_ug  Schreiben Sie einen Gästebucheintrag für little_ug

Beiträge: 389
Registriert: 20.03.2003

NX 7.5.4.4 mp1
Creo2 M020
TC UA 9.1.1.2

erstellt am: 15. Dez. 2009 11:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi habe jetzt folgendes probiert

        Dim dll As String = kr_konfig_dir & "\api\vb_dot_net\Einzelteilnummer.dll"
        Dim dummyobj(0) As Object
        dummyobj(0) = "1"

        Try
            sess.Execute(dll, "baseform", "", dummyobj)
        Catch ex As Exception
            lw.Open()
            lw.WriteLine(ex.Message)
        End Try


Das dummyobj ist weil ich keine iputArgs habe. Aber ohne geht es scheinbar nicht.

Jetzt bekomme ich folgende Exeption:
Exception while invoking method in managed code

Ideen? - Danke :-)

------------------
Gruß

Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hornauer
Mitglied
 


Sehen Sie sich das Profil von Hornauer an!   Senden Sie eine Private Message an Hornauer  Schreiben Sie einen Gästebucheintrag für Hornauer

Beiträge: 41
Registriert: 26.01.2001

erstellt am: 15. Dez. 2009 20:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für little_ug 10 Unities + Antwort hilfreich

Hallo little_ug,
mit ner *.exe funktioniert das Beispiel.
Vielleicht ja auch mit ner *.dll .
Habs nicht probiert.

"Learning by Doing" ist angesagt.

###############################################################################
Try
    'declare filename for Process()
    convertcmd.StartInfo.FileName = "*.exe"
    'declare arguments for Process()
    'convertcmd.StartInfo.Arguments = <MyArguments>
    'declare windowstyles for Process()
    convertcmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal

    'start Process()
    convertcmd.Start()
    'if error occurs, check for reasons...
        Catch e As Win32Exception
        '...if executable file is not found...
        If e.NativeErrorCode = ERROR_FILE_NOT_FOUND Then
          '...throw error-messagebox
          System.Windows.Forms.MessageBox.Show((e.Message + ". Check the path."))
        Else
          '...permissions to execute the translator...
  If e.NativeErrorCode = ERROR_ACCESS_DENIED Then
  '...throw error-messagebox
  System.Windows.Forms.MessageBox.Show((e.Message + ". You do not have permission to save the destination file."))
End If
    End If
End Try
'wait for exit of Process()
convertcmd.WaitForExit()
'theSession.Parts.Work.Close(False, Part.CloseModified.CloseModified, Nothing)

###############################################################################

Gruß

Rolf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

little_ug
Mitglied
CAX/PDM Admin / PM


Sehen Sie sich das Profil von little_ug an!   Senden Sie eine Private Message an little_ug  Schreiben Sie einen Gästebucheintrag für little_ug

Beiträge: 389
Registriert: 20.03.2003

NX 7.5.4.4 mp1
Creo2 M020
TC UA 9.1.1.2

erstellt am: 16. Dez. 2009 08:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Rolf,

funktioniert leider auch nicht....

------------------
Gruß

Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Fachinformatiker/in Systemintegration (m/w/d)

Als erfolgreiches, innovatives, hochtechnisches Unternehmen im Großraum Stuttgart, suchen wir Talente, die mit uns in die Zukunft gehen:

Für unsere Abteilung IT suchen wir derzeit eine/n engagierte/n Fachinformatiker/in Systemintegration, der/die uns bei der Umsetzung unserer innovativen Projekte unterstützt. Wenn Sie auf der Suche nach einer herausfordernden Stelle in einem zukunftsorientierten ...

Anzeige ansehenSystemadministration, Netzwerkadministration
mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 16. Dez. 2009 08:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für little_ug 10 Unities + Antwort hilfreich

Hallo Michael,

der dritte Parameter bei Session.execute() darf nicht leer sein. Da muß der Name einer Methode (Function oder Sub) drin stehen, die ausgeführt werden soll.
Daneben könnte es auch bei den Argumenten Probleme geben, wenn Typ und Anzahl nicht zur aufgerufenen Methode passen.

Der einfachste Weg ist jedoch, die dll zu referenzieren, genau so, wie es mit den NX- dll's geschieht. Referenz eintragen und über den Root- Namespace Klasse, Methode und gegebenenfalls die Argumente angeben, z.B.

Dim res As Rückgabetypderfunktion = root_namespace.class_name.function_name(arguments)

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz