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 |
Nummer 04 API-Calls nutzen |
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
Kritik und Anregungen bitte an Stefan Berlitz. Letzte Änderung dieser Seite am Freitag, 21. Dezember 2007 13:19 |