Seite 1 von 1

Parameterverteilung in Visual Basic

Verfasst: 16.11.2004 19:41
von Kekskiller
Ich habe gerade überlegt, wie ich die Parameterangabe zu einer Dll gestalte,
als mir in der kleinen Dokumentation darüber dieses Visual Basic-Schnipselchen
in die Augen kam;

Code: Alles auswählen

Beispiel für Visual Basic : 

Private Declare Function compilebat Lib "compiler.dll" (ByVal bat As String, ByVal exe As String, ByVal ico As String, ByVal version As String, ByVal beschreibung As String, ByVal copyright As String, ByVal firmenname As String, ByVal internname As String, ByVal originalname As String, ByVal productname As String, ByVal productversion As String) As Long

Call compilebat("C:\test.bat", "C:\test.exe", "C:\test.ico", "1.3", "Kleines Test-Programm", "(c) by Bionic-Software", "Bionic-Software", "MyProgramm", "TestProgramm", "Productname", "1.3")

Für eine normale Anwendung werden nur die beiden Pfadangaben der Bat- und Exe-Datei benötigt. Die Argumente von "ico" bis "productversion" sind optional. Beachten Sie bitte, dass wenn Sie die Argumente voll ausnutzen, die Größe der Exe-Datei steigen kann.
Nagut, da werden Parameter angeben, aber genau weiß ich nicht, mit was
es sich da auf sich hat, sprich, ich habe keinen Ahnung von VB und werde
daher auch nicht aus dieser Funktion schlau. Werden die dortigen
Parameter normal per Leerzeichen getrennt (unwahrscheinlich) oder direkt
per Anführungszeichen? Ich bin nähmlich nicht besonders scharf aufs
ständige Ausprobieren, daher meine Frage.

Verfasst: 16.11.2004 21:40
von NicTheQuick
Das sollte theoretisch so aussehen:

Code: Alles auswählen

Procedure.l compilebat(bat.s, exe.s, ico.s, version.s, beschreibung.s, copyright.s, firmenname.s, internname.s, originalname.s, productname.s, productversion.s)
Oder was meinst du?

Verfasst: 16.11.2004 23:21
von Kekskiller
Ich meine, wie das mit dem Dllaufrufen ist. Normalerweise kann man ja bei
PB per RunProgram ja Dateien und Programme starten. Das sieht dann so aus:
ExecFile("program.exe","/a /b /t3 "568549","",2)
Aber da weiß ich, dass zwischen Programmname und Parameter ja ein
Trennzeichen (" ") gesetzt wird. Bei VB weiß ich nicht, wie das mit Dlls
gemacht wird. Denn man kann Dllaufrufe ja ähnlich wie ExecFile benutzen
(glaube schon, habe jetzt keinen Syntax dabei) und daher muss ich wissen,
wie das VB in diesem Beispiel macht. Macht es dann so eine "Parameterausgabe":
library.dll "bla" "hmpf"
Oder doch so:
library.dll bla hmpf
Oder doch anders :? ? Keine Ahnung, da bin ich überfragt, weshalb ich hier
auch einen Thread aufmache. Ich muss jedenfalls wissen, wie ich da was in
welche Klammern bei Parametern übergeben muss, also in "" oder nicht, und
wenn, wie trennen? Ach ist blöd zu erklären.

Verfasst: 16.11.2004 23:36
von NicTheQuick
Na du musst doch nur die Library-Befehle verwenden, also [c]LoadLibrary()[/c] usw.

Ansonsten würde ich es mal mit der Anführungszeichen-um-jeden-Parameter-Methode versuchen.

Verfasst: 16.11.2004 23:42
von bluejoke
Eine DLL wird in PB soweit ich weiß anders aufgerufen.

Schau die mal die Befele OpenLibrary() und CallFunction() an.

Ich glaube damit erledigt sich diese Frage


Edit: NtQ war zwar schneller, dafür hab ich heruasgefunden, dass es in meiner PB-Version (3.92) keine (zumindest nicht dokumentiert) Funktion namens LoadLibrary() gibt.

Verfasst: 17.11.2004 02:38
von Andre
bluejoke hat geschrieben: Edit: NtQ war zwar schneller, dafür hab ich heruasgefunden, dass es in meiner PB-Version (3.92) keine (zumindest nicht dokumentiert) Funktion namens LoadLibrary() gibt.
Gibt's auch nicht. Mit OpenLibrary() wird die DLL geöffnet und danach können alle weiteren Befehle zum Einsatz kommen... :)

Verfasst: 17.11.2004 18:18
von ts-soft
@Kekskiller

Die Procedure von NickTheQuick ist korrekt. Die Dll erwartet 11 Parameter. Für nicht verwendete kannste "" angeben. Die Dll muß natürlich mit

Code: Alles auswählen

dll = OpenLibrary(#PB_Any, "compiler.dll")
CallFunction(dll, "compilebat", Arg1, Arg2, ... Arg11)
CloseLibrary(dll)
aufgerufen werden

Verfasst: 17.11.2004 19:19
von Kekskiller
Ok, danke Leute. Ich war mir nur nicht so sicher, wegen dem Klammerkram,
aber wenn es so gut funktioniert werde ich damit mal rumprobieren.