kostenloser Webspace werbefrei: lima-city


vb6-exe nach vb6-exe: text schicken

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    merde4

    merde4 hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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&#252;gt werden.


    ACHTUNG: Diese m&#246;gliche L&#246;sung des Problems ist f&#252;r VB.NET bestimmt!
  4. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Sorry lccserver, aber hier muss man zwischen den einzelnen Versionen noch genauer unterscheiden:

    In VB .NET 2002, 2003 ist die von lccserver gepostete M&#246;glichkeit in Ordnung, um abzufragen, ob eine weitere Instanz deiner Anwendung ge&#246;ffnet ist. Zum &#220;bermitteln von Parametern bzw. Text gibt es hier keine eingebaute Methode, du musst dir hier selbst etwas zusammen bauen, z.B. dass eine Nachricht &#252;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&#252;rfen oder nicht. Das kannst du bei den Eigenschaften des Windows-Anwendungsframeworks &#228;ndern. Wenn du also eine Einzelinstanzanwendung erstellst, wird, wenn du versuchst, deine Anwendung ein zweites Mal zu starten, das Event "StartupNextInstance" ausgel&#246;st (hier k&#246;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&#223;t, du musst dir wieder selbst etwas zusammen basteln.
  5. Naja, ich halte mehr davon, beim Start der Anwendung zu &#252;berpr&#252;fen und eventuell eine Meldung anzuzeigen. Daf&#252;r reicht es ja aus, den Code in Form.Load() einzuf&#252;gen, wie gesagt.
  6. 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)
  7. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.


    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
  8. kannst du mir vl. einen ansatz geben, wie ich soetwas realisieren könnte. ich habe ka, wie ich das machen solte.
    ty

    lg
    vali
  9. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    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?
  10. ich will es in vb6 schreiben. wichtig ist mir, dass ich daten von einer anwendung auf die andere schicken kann.
  11. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.


    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.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!