Programm steuern

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Alex2000.

    Programm steuern

    Ich möchte gerne wissen wie ich mit meinen erstelleten Programm auf ein anderes
    Aktionen ausführen kann. Also zb bei Solitär dass ich dann mit den vb 2008 erstelleten
    Programm ein neues Spiel bei Solitär starten kann.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NeCriD“ ()

    Ja habe ich gemacht jetzt bei form load:

    Dim notepadID As Integer
    AppActivate("Solitär")
    notepadID = Shell("C:\WINDOWS\System32\sol.exe", AppWinStyle.NormalFocus)
    AppActivate(notepadID)

    aber wenn ich im Programm F2 drücke, startet er trotzdem kein neues spiel bei solitär.
    Wieso 2 mal AppActivate??

    Nun wenn du F2 drückst haste sicher das Send.Keys in deinem VB Projekt, also muss dieses Zunächst den Focus haben um den Tastendruck zu erkennen. Also was könnte man hier machen?

    Ach ja genau einfach BEVOR Send.Keys gesendet wird die den Focus an das andere Programm geben, also NACHDEM die Taste erkannt wurde.

    Oder die Tastendrücker Global abfragen, also nicht Aktiv mit einem Key.Press Event oder ähnlichem. Hierzu findest du genug, Stichwort GetKeyAsync oder so ählich heißt die API.
    Hab ich auch in einen anderen Teil diese Kombination.
    Aber was bringt das wenn ich abfrage ob es gedrückt wird?

    zb:

    Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim hotkey As Boolean
    3. hotkey = GetAsyncKeyState(Keys.F2)
    4. If hotkey = True Then
    5. Dim notepadID As Integer
    6. ' Activate a running Notepad process.
    7. ' AppActivate can also use the return value of the Shell function.
    8. ' Shell runs a new instance of Notepad.
    9. notepadID = Shell("C:\WINDOWS\System32\sol.exe", AppWinStyle.NormalFocus)
    10. ' Activate the new instance of Notepad.
    11. AppActivate(notepadID)
    12. End If
    13. End Sub


    Dann wird immer das Programm gestartet aber nicht Neues Spiel jetzt wegen F2.

    Also was ich damit fragen will is ob es bei einer Abfrage gehen muss was in diese Abfrage dann rein muss.
    Nun ist ja auch Logisch ... mensch nun DENK doch einfach mal nach -.-

    Du startest das Spiel ja auch bei jedem Tastendruck. Willst du das? NEIN!

    Also wird das Spiel nur EINMAL gestartet, z.b. im Form_Load Event oder bei einem Button_Click Event. Die Prozess ID wird Global gespeichert und NUR das aktivieren der Applikation geschieht in der If Bedingung.

    Hier mal wieder ein wunderbares Beispiel von Copy und Paste, NULL Ahnung was man da macht, einfach alles zusammen kopiert und wundern wieso es nicht geht.
    Ja sage ich das ich übelster no life pro bin?

    Nein. Ich mache das zum Hobby/Abwechselung und gammel nicht die ganze Zeit vorm PC.
    Ich habe auch keine zeit es zu lernen denn ich studiere.
    In nem thread den ich als erstes eröffnet habe, habe ich das auch erläutert.
    Aber ich musste ja nen neuen Thread öffnen.

    Und ja ich habe doch gesagt dass ich es in Form_Load reinpacke das es gestartet wird
    Was ich dann mache, dass weiß ich ja nicht...
    Nein das musst du nicht, aber OHNE Lernen kommste hier nicht weiter. Das solltest gerade wissen wenn du bereits Studierst.

    Wenn keine Zeit hast dich mit VB zu beschäftigen, dann solltest es lassen. Wenn du ein Programm brauchst, was dies und das können muss, stell eine Anfrage in den Marktplatz rein und bezahle jemand für diese Aufgabe. Willst du es selber machen MUSS man sich mit der Materie einfach auseinander setzten.

    PseudoCode bekommste aber kein fertigen C&P Code

    Quellcode

    1. Globale Variable processID
    2. Form Load
    3. processID = start(Programm)
    4. Timer
    5. Wenn F2 gedrückt wurde
    6. Applikation aktivieren (processID)
    7. SendKeys(für neues spiel)
    So also ich hab es jetzt so gemacht und wenn ich F2 drücke werde ich nur in das Solitär geleitet also
    das Fenster wird aktiv. Aber F2 wird nicht gedrückt, also im Programm von vb wird es gedrückt
    und das Solitär fenster öffnet sich, aber ich muss nochmal F2 drücken damit es Neues Spiel startet.
    Ja stimmt.

    Quellcode

    1. Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer5.Tick
    2. Dim hotkey As Boolean
    3. hotkey = GetAsyncKeyState(Keys.F2)
    4. If hotkey = True Then
    5. AppActivate(notepadID)
    6. SendKeys.Send(Keys.F2)
    7. End If
    8. End Sub
    Dodo muß ich schon recht geben !
    Ich gib dir ein gedankenstoß:
    1. Mit API GetForeGroundWindow kannst du ermitteln aktives Fenster(handle)
    2. Mit API keybd_event kannst duTasten/Maus Erreignisse Systemweit abfragen/auslösen(schau dir Tasten konstanten an)
    3. Mit API SendKeyStroke der ausgelöste/abgefragte taste an die ermittelte Fensterhandle senden