Hallo Stelli!
Das Problem konnte ich nach viel Kopfschmerzen selber lösen
Zu deinen Fragen:
VB2005 = VB.NET 2005 was anderes gibt's nicht (meines wissens)
Zugriff kann in dem Fall nur uber COM-Objekte gehen.
Und ACAD-Events können nur mit WithEvents abgefangen werden.
Die Lösung (falls von Interesse):
Das Problem ist, das .NET keine threadübergreifenden Vorgänge zulässt. Mit einem kleinen Trick, kann man sich aber behelfen.
Private WithEvents ACEvents As Autodesk.AutoCAD.Interop.AcadApplication
Private Delegate Sub BeginFileDropDelegate(ByVal FileName As String)
Private BeginFileDrop As New BeginFileDropDelegate(AddressOf SetFileName)
Private Sub ACEvents_BeginFileDrop(ByVal FileName As String, ByRef Cancel As Boolean) Handles ACEvents.BeginFileDrop
Dim obj(0) As Object
obj(0) = FileName
'**** hier wird der Event, der von eimem fremden Tread ausgelöst wurde, an den Hauptthread (mein Programm) übergeben
Invoke(BeginFileDrop, obj(0))
End Sub
Private Sub SetFileName(ByVal FileName As String)
FileName = Strings.Right(FileName, Strings.Len(FileName) - Strings.InStrRev(FileName, "\")) '**** Pfad entfernen
FileName = Strings.Left(FileName, Strings.Len(FileName) - 4) '**** Erweiterung entfernen
Me.Label1.Text = FileName
End Sub
Gruß,
BJ
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP