# [VB 6] Parameterübergabe zur Laufzeit?



## Pauke (18. August 2008)

Hallo,
ich habe ein kleines Problem bezüglich einer bestimmten Funktion, die mein Programm können soll. Kurze Beschreibung wie es immoment ausschaut:

Ich habe ein Modul welches in PL/SQL und Forms Builder programmiert wurde. In diesem ist es möglich verschiedene Dateien auszuwählen. Beim Drücken eines Buttons wird daraufhin ein host Befehl ausgeführt der über die Kommandozeile mein VB6 Programm aufruft. Hierbei werden mehrere Parameter übergeben die ich in VB mit Command$ auslese und auftrenne. Soweit funktioniert auch alles.
Nun möchte ich aber, dass mein Programm geöffnet bleibt und nicht geschlossen wird. Wenn ich nun über das PL/SQL Modul eine neue Datei auswähle und auf den Button drücke, soll das bereits geöffnete Programm von mir eine "Nachricht/Parameter" (was auch immer) erhalten und darauf reagieren... also die neue Datei laden in dem bereits geöffneten Programm laden OHNE dabei das Programm komplett erneut zu starten.

Ich weiss nicht genau wie ich das ganze realisieren soll. Parameterübergabe zur laufzeit wäre von mir ein Stichwort gewesen. Leider finde ich dazu nichts, was bedeutet, dass es nicht möglich ist. Gibt es eine andere Möglichkeit und mir fällt sie nur nicht ein?
Wäre super wenn ihr mir helfen könntet.

Schöne Grüße


----------



## Zvoni (18. August 2008)

So, bin wieder aus dem Urlaub zurück!

Pauke, so aus dem Bauch heraus:

1. Im PL/SQL-Modul prüfen, ob bereits eine Instanz des VB-Programms läuft.
Falls Nein: Aufruf wie bisher per Kommandozeile usw.
Falls Ja: Event im VB-Programm triggern inkl. Parameter-Übergabe.

2. Im Falle von Ja gilt es noch zu prüfen: Ist das PL/SQL-Modul COM-fähig?
Falls Ja: Im VB-Programm als ActiveX-Server hinzufügen, und das entsprechende Event coden (Neu kompilieren usw.). Hierzu muss eventuell das PL/SQL-Modul um das Event erweitert werden.
Falls Nein: Keine Ahnung


----------



## Pauke (19. August 2008)

Hey Zvoni,

danke für deine Antwort. Ich habe das Problem bereits gelöst. Zwar vielleicht nicht gerade auf dem direktesten weg aber egal. Es funktioniert! 

Was du dort vorschlägst habe ich mir auch irgendwie so ähnlich vorgestellt, bin leider ein ziemlicher neuling in sachen programmieren, daher hab ich das so nicht hinbekommen mit ActiceX-Server und in PL/SQL kenn ich mich auch nicht soo toll aus 
Hab gehofft es gäbe eine einfachere Lösung.

Naja falls es ein paar Leute interessiert ich habe es so gelöst:

1. Ein zweites kleines Programm geschrieben was die Parameterübergabe und weiterleitung übernimmt (auch in VB6)

2. Das Programm in PL/SQL starten lassen (wie zuvor mein altes Programm) und diesem die Parameter übergeben

3. Die Parameter mit Command$ abfangen und per sendMessage an mein bereits laufendes Programm weiterleiten. Vorher natürlich überprüfen ob er wirklich läuft, wenn nicht --> starten.

4. Im mein Programm was bereits läuft noch ein Modul mit getMessage implementiert und die Parameter abhandlung.

Das neue kleine Programm wird einfach gestartet, die Parameter werden weitergesendet und dann wieder beendet. Wird also überhaubt nicht angezeigt und der Nutzer merkt den Aufruf gar nicht. Meine Software übernimmt dann zur Laufzeit über getMessage den String und arbeitet die Parameter ab. Vielleicht nicht die tollste Lösung aber funktioniert und ist schön schnell ;p

Danke trotzdem für die Hilfe @ Zvoni 

Edit:

Links die gut hilfestellung leisten:
http://support.microsoft.com/kb/q176058
http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx


----------

