SolidWorks MakroMania - API-Calls nutzen

SolidWorks MakroMania ist eine Beispielsammlung einiger Makros, die Ihnen eine Vorstellung davon geben soll, was man auch schon mit Makros in SolidWorks alles anstellen kann. Der Code des Makros sollte so gut dokumentiert sein, dass Sie damit ohne weitere Anleitung verstehen, was gemacht wird.

< voriges
MakroMania
Übersicht


nächstes >

Nummer 04
API-Calls nutzen

Download
ZIP, 1 KB

Ich übernehme keine Haftung für die korrekte Funktion der Routinen oder irgendwelcher Schäden bei der Anwendung dieser Beispiele. Das gesamte Risiko trägt der Benutzer selbst. - Sorry, muss sein.

Immer wider taucht die Frage auf, wie man z.B. den Usernamen des eingeloggten Benutzers ermitteln kann. Dieses und noch viel mehr kann man mit den diversen API-Calls der Windows Umgebung tun. Um zu zeugen wie diese Technik auch in SolidWorks Makros angewendet werden kann hier ein Beispiel:

' **********************************************************************
' * Makro liest per Windows API den eingeloggten Benutzer und als
' * weiteres Beispiel den Pfad zum TEMP-Verzeichnis aus. Dies ist
' * nur ein Beispiel um zu demonstrieren wie API-Calls in SolidWorks
' * Makros benutzt werden können.
' *
' * 19.11.2000 Stefan Berlitz (stefan.berlitz@solidworks.cad.de)
' * http://solidworks.cad.de
' * http://swtools.cad.de
' **********************************************************************

' Vor dem Aufruf müssen die API deklariert werden. Die Deklarationen
' von API-Calls entnehmen Sie bitte der jeweiligen Dokumentation :-))
' Im Ernst, viele Deklarationen der Windows-API können Sie in dem
' hervorragenden Tool API-Guide mit Beispielprogrammen einsehen.
' Dieses Freewaretool und viele Beispiele, Tipps und Tricks zu VB
' können sie auf http://www.allapi.net/ herunterladen (englisch)

' ACHTUNG, die Deklarationen entweder in einer Zeile schreiben
' ansonsten VB typisch mit _ am Zeilenende

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal _
nBufferLength As Long, ByVal lpBuffer As String) As Long

' dann noch ein paar Variablen die benutzt werden
Dim strTemp As String
Dim strUserName As String
Dim strMessage As String
Dim retval As Long

Sub Main()

    ' die Beispielfunktionen geben einen "Nullbyte-terminierten String"
    ' wie in C üblich zurück, also müssen wir uns in VB etwas behelfen
    ' dazu erst mal einen Puffer vorbereiten, der nur aus CHR$(0) besteht
    strTemp = String(100, Chr$(0))

    ' dann die API aufrufen um das TEMP-verzeichnis zu ermitteln
    retval = GetTempPath(100, strTemp)

    ' und den Rest des Buffers abtrennen, da in VB nicht gebraucht
    strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)

    ' und dasselbe Spielchen für den User
    strUserName = String(100, Chr$(0))
    retval = GetUserName(strUserName, 100)
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)

    ' im Beispiel werden jetzt einfach die beiden Informationen
    ' in einer Messagebox ausgegeben
    strMessage = "Hallo " + strUserName + Chr$(13)
    strMessage = strMessage + "eingestelltes TEMP ist: " + strTemp

    MsgBox strMessage

End Sub

Zurück zum Seitenanfang

hr.gif (4491 Byte)

counter Kritik und Anregungen bitte an Stefan Berlitz. Letzte Änderung dieser Seite am Freitag, 21. Dezember 2007 13:19