Anderes Programm mit SendKeys im Hintergrund steuern

  • VB6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von _PASCAL_.

    Anderes Programm mit SendKeys im Hintergrund steuern

    Hi,

    ich bin gerade dabei eine Messsystem-Software welche in VB6 geschrieben ist etwas zu modifizerien. Dabei wird ein Messschrank gesteuert in dem sich die Module befinden.

    Die einzelnen Steckplätze werden mit einem Quancom Multiplexer angesprochen.

    Die eigentliche Messung wird von einer anderen Software gemacht welche mittels SendKeys gesteuert wird. Also richtig doof eig das ganze. Noch dazu kommt dass die anderen Fenster alle fröhlich aufpoppen wären der Messung und den ganzen PC in beschlag nehmen. Also sehr unelegant.

    Jetzt möchte ich das ganze gerne in einen Background Thread stecken. Ich weis dass dazu VB.NET 2010 wahrscheinlich wesentlich besser geeignet ist aber kann ich das auch in VB 6 realisieren?

    Ich bin mir nicht sicher ob ich die andere Software im Hintergrund steuern kann mittels SendKeys wenn es nicht das aktuelle Fenster ist ...

    Sind meine Befürchtungen begründet ?
    Wenn Du die Wahl hast zwischen VS 2010 und VB6 - 2010 ist größer als 6. :thumbsup:
    SendKeys --> API.SendMessage
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    _PASCAL_ schrieb:

    Unter VB6 keine chance ?

    Ich würde sagen ja, denn VB6 ist einfach nicht dafür ausgelegt, da seine Objekte explizit in einem Single-Threaded Apartement laufen. Native Unterstützung gibt es eh nicht, Du musst alles über die APIs CreateThread und Marshalling APIs machen.

    Erklärungen findest Du hier [ActiveVB] CreateThread und in Details -> A Thread to Visual Basic: Multi-Threading In VB5 and VB6.

    Allgemeines Fazit: lass die Finger davon.

    Vermutlich dürfte es einfacher und mit weniger Frust verbunden sein Deine Anwendung auf .NET zu portieren, als diese Büchse der Pandora aufzumachen.

    Falls Du mutig ( oder beratungsresistent ) genug oder masochistisch veranlagt bist, so enthält der 2.Link oben eine Beschreibung wie es theoretisch doch gehen könnte.
    ok ich hab schon verstanden :D

    hab das Projekt in VS 2008 importiert ... hatte dann erst mal um dei 1500 Fehler weil zb ein mehrdimensionales array nicht mit array(x,y) sondern array(x)(y) angesprochen wird ... ka warum das der konverter nicht weis ...

    jetzt hab ich noch 12 hartnäckige fehler mit einer dummen dll die anscheined nicht mit .NET harmoniert ...
    dabei handelt es sich um einen Keithley Multiplexer aber da werd ich mal im entsprechenden Forum nachfragen ... so wie ich das sehe bekomm ich da aber probleme, da der treiber welcher mit .NET arbeiten würde XP SP3 verlangt ... auf dem dummen Messrecher ist aber nur einen CF Karte mit 3,5GB als SystemHDD verbaut was eng wird :(