vb6-exe nach vb6-exe: text schicken
lima-city → Forum → Programmiersprachen → Basic
abfrage
ansatz
anwendung
bieten
code
datum
form
funktion
instanz
kommunikation
lade
lokale netzwerk
parallel laufen
parameter
problem
programm
realisieren
starten
tollen extras
zweite instanz
-
hallo,
ich habe ein Programm programmiert mit vielen tollen Extras. Jetzt wollte ich euch fragen, ob es eine möglichkeit gäbe, dass wenn man das programm 2x aufmacht (was eigentl. nicht vorgesehen wäre), das andere Programm etwas macht (zb. ein label anzeigt)
ich hoffe, ihr wisst was ich meine
lg
vali -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Klar... ich gebe dir ne Antwort für VB.NET:
Als erstes musst du die Prozesse überwachen:
Dim MyProcessName As String Dim Proc As Process Dim Processes() As Process MyProcessName = My.Application.Info.AssemblyName Processes = Process.GetProcessesByName(MyProcessName) If Processes.Length > 1 Then MessageBox.Show("Sie haben bereits eine Instanz von <PROGRAMMNAME> gestartet, die zuletzt gestartete Instanz wird nun beendet.", "Mehr als eine Instanz gestartet...", MessageBoxButtons.OK, MessageBoxIcon.Error) For Each Proc In Processes Proc.Kill() Next End If
Dieser Code kann nun entweder in eine Schleife oder wenn das Programm gestartet wird (Form.Load()) eingefügt werden.
ACHTUNG: Diese mögliche Lösung des Problems ist für VB.NET bestimmt! -
Sorry lccserver, aber hier muss man zwischen den einzelnen Versionen noch genauer unterscheiden:
In VB .NET 2002, 2003 ist die von lccserver gepostete Möglichkeit in Ordnung, um abzufragen, ob eine weitere Instanz deiner Anwendung geöffnet ist. Zum Übermitteln von Parametern bzw. Text gibt es hier keine eingebaute Methode, du musst dir hier selbst etwas zusammen bauen, z.B. dass eine Nachricht über das lokale Netzwerk an die andere Instanz geschickt wird.
In VB .NET 2005 ist das automatisiert worden, es gibt dazu bei den Anwendungsereignissen das Ereignis "StartupNextInstance". Vorher kannst du noch festlegen, ob deine Anwendung SingleInstance oder MultiInstance sein soll, also ob mehrere Instanzen parallel laufen dürfen oder nicht. Das kannst du bei den Eigenschaften des Windows-Anwendungsframeworks ändern. Wenn du also eine Einzelinstanzanwendung erstellst, wird, wenn du versuchst, deine Anwendung ein zweites Mal zu starten, das Event "StartupNextInstance" ausgelöst (hier können auch die neuen Parameter abgerufen werden). Was passieren soll, legst du selbst fest.
In VB 6 gibt es zwar die App.PrevInstance-Abfrage, aber keine weiteren Automatisierungen, das heißt, du musst dir wieder selbst etwas zusammen basteln. -
Naja, ich halte mehr davon, beim Start der Anwendung zu überprüfen und eventuell eine Meldung anzuzeigen. Dafür reicht es ja aus, den Code in Form.Load() einzufügen, wie gesagt.
-
das ist ja nicht das probelm, mit app.previnstance. das größere problem ist, dass wenn ich die 2. INstanz lade, dann zb. die erste instanz visible true wird. kann man das überhaupt realisieren? (diese funktion bieten doch eh sehr viele programme)
-
das ist ja nicht das probelm, mit app.previnstance. das größere problem ist, dass wenn ich die 2. INstanz lade, dann zb. die erste instanz visible true wird. kann man das überhaupt realisieren? (diese funktion bieten doch eh sehr viele programme)
Natürlich bieten das sehr viele Programme, da es sehr nützlich ist... Nur werden die meisten Programme auch nicht in Visual Basic geschrieben, erst recht nicht in VB 6.
Ab Visual Basic 2005 ist diese Funktion vollständig mit eingebaut, das heißt, wenn du deine Anwendung zum zweiten Mal starten willst, kannst du darauf reagieren und z.B. Daten an die erste Anwendung übermitteln und die zweite Instanz schließen.
Diese Funktion, dass nur eine Instanz deiner Anwendung laufen darf, heißt \"Einzelinstanz\" bzw. \"Single Instance Application\"
In VB 6 musst du dir eben selbst etwas zusammenbasteln, aber es geht bestimmt.
Beitrag geändert: 6.12.2007 17:02:35 von cbhp -
kannst du mir vl. einen ansatz geben, wie ich soetwas realisieren könnte. ich habe ka, wie ich das machen solte.
ty
lg
vali -
valuser schrieb:
kannst du mir vl. einen ansatz geben, wie ich soetwas realisieren könnte. ich habe ka, wie ich das machen solte.
ty
lg
vali
In welcher VB Version willst du es denn nun schreiben?
Soll es nur eine Abfrage sein, die prüft, ob deine Anwendung bereits gestartet ist und die 2. Instanz beendet oder sollen auch Daten übertragen werden? -
ich will es in vb6 schreiben. wichtig ist mir, dass ich daten von einer anwendung auf die andere schicken kann.
-
ich will es in vb6 schreiben. wichtig ist mir, dass ich daten von einer anwendung auf die andere schicken kann.
Hm, in VB 6 fällt mir spontan nur die Möglichkeit ein, dass die zweite Instanz als Client ein Datenpaket an die erste Instanz schickt über das lokale Netzwerk, ansonsten ist es kaum umsetzbar eine Kommunikation zwischen den beiden Anwendungen einzubauen.
Am einfachsten wäre es, wenn du gleich auf VB .NET umsteigen würdest, dort gibts dafür bereits eine fertige Funktion/ ein fertiges Ereignis. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage