Mit einer Taste zwei Tasten drücken

  • Hallo, ich bin grad dabei mir einen MAME Arcade Automat zu bastel. Ich habe mir ein Controlerpannel gebastelt mit dem ich alles steuern möchte, da ich nur begrenzt Buttons zur verfügung habe will ich 2 funktionen auf einen button legen und zwar die coin insert taste (5) und die start player one (1). Die send funktion wird nicht erkannt gibt es da noch andere befehle? Vll in verbindung mit einem hotkey tool. Bin über jede hilfe dankbar. Mfg LoZe

  • Nein es ist kein spiel bot! Nur die ersparniss eines speraten coin button oder eines richtigen münzeinwurf. Es ist eine art freeplay für den MAME Emulator. Da sich nich jedes Rom auf Freeplay stellen lässt.

    Autoit ist doch eine automatisierungs software?!

    Einmal editiert, zuletzt von LoZe (21. April 2010 um 20:07)

  • vllt ja so?

    [autoit]


    Sleep(1000)
    Send("{5}")
    Sleep(2000)
    Send("{1}")

    [/autoit]


    oder

    [autoit]


    Sleep(1000)
    Send("5",1)
    Sleep(2000)
    Send("1",1)
    ; keys Die Folge von Tastendrücken, die gesendet werden soll. flag [optional] Kennzeichnet, wie der "keys"-Parameter verarbeitet wird:
    ; flag = 0 (Standard), Text beinhaltet spezielle Zeichen, wie „+“ und „!“, die für SHIFT- (=UMSCHALT) und ALT-Tasten stehen.
    ; flag = 1, "keys" wird so wie angegeben gesendet.

    [/autoit][autoit][/autoit][autoit][/autoit]

    MfG
    Alizame

  • ist ja auch das selbe nur das ich in dem ersten thread das wort Spiel erwähnt habe und er deshalb geschlossen wurde.
    ich dachte so erklät ich es am einfachsten wusste ja nicht dass man dann gleich davon ausgeht das ich ein bot haben möchet (was nicht der fall ist)

    zum beweis habe ich ein foto meines controller panel gemacht und klar zu stellen das ich nur die keyfunktion für mein Arcade Cabinet haben möchte.

    Spoiler anzeigen

    [Blockierte Grafik: http://mame.lord-zero.com/u.jpg][Blockierte Grafik: http://mame.lord-zero.com/o.jpg]

  • beides Getestet ohen Erfolg :(

  • Funtkionieren

    [autoit]

    ControlSend

    [/autoit]

    Befehle?
    Ansonsten funktioniert das hier?

    Spoiler anzeigen
    [autoit]

    #include <SendMessage.au3>
    #include <WinAPI.au3>
    #include <SendMessage.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Notepad starten
    Run("notepad")
    WinWait("Unbenannt - Editor")
    $hWnd = ControlGetHandle("Unbenannt - Editor", "", "Edit1") ; Ctrl-Handle einlesen

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1000)
    ssend($hWnd, "5")
    Sleep(2000)
    ssend($hWnd, "1")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ssend($hWnd, $sString, $iHex = 0, $bSendMsg = True)
    ;hamburger, edit by SEuBo

    [/autoit] [autoit][/autoit] [autoit]

    If Not IsHWnd($hWnd) Then Return SetError(-1, 0, 0)
    Local $aPar, $aText

    [/autoit] [autoit][/autoit] [autoit]

    ; 1. Get Parent Window. 2. Send WM_ACTIVATE to Parent. 3. Send WM_SETFOCUS to Control.
    If $bSendMsg Then
    $aPar = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $hWnd)
    If @error Then Dim $aPar[1] = [WinGetHandle("Program Manager")]
    _SendMessage($aPar[0], 0x0006, $sString, 0, 0, "int", "long")
    _SendMessage($hWnd, 0x7)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Send WM_CHAR messages to Control.
    If $iHex Then _SendMessage($hWnd, 0x102, $sString, 0, 0, "int", "long")
    If Not $iHex Then
    $aText = StringSplit($sString, "", 3)
    For $i = 0 To UBound($aText) - 1
    _SendMessage($hWnd, 0x102, "0x" & Hex(StringToBinary($aText[$i])), 0, 0, "int", "long")
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;~ _SendMessage($hwnd, 0x8)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>ssend

    [/autoit]
  • Hi,
    schönes Panel, was ich noch nicht kapiert habe, wie fragst du im Emulator das Pad ab? Wenn das Ding beispielsweise am Gameport hängt, dann nützt Send() nicht sonderlich viel....

  • habe es probiert aber will auch nicht Mame Reagiert nicht auf die eingabe. bzw minimiert wegen notepad

  • das mit dem Notepad war auch nur ein Beispiel.

    Es geht hauptsächlich um die Funktion ssend. Ich weiß ja nicht, inwiefern das Keyboard interfacve softwareseitig ansteuerbar ist (ggf ein GUI/Interface, an das man tasten senden kann?). Die SSend Funktion sendet einen Text an ein Fenster, besser gesagt an ein Control, wenn alle anderen Methoden versagen (zb. Edit Felder von minimierten Java Fenstern - da hilft ControlSend nicht.)

    Du musst das Beispiel dann natürlich entsprechend anpassen.

  • also des I-Pac ist eine Tastatur! nur halt mit 32 Knöpfen. Kein installation keine dll. läuft wie eine zweite Tastatur. und im Mame werden auch beide erkannt. mit dem gleichen Imput befehl.

  • Zitat

    also des I-Pac ist eine Tastatur! nur halt mit 32 Knöpfen. Kein installation keine dll. läuft wie eine zweite Tastatur. und im Mame werden auch beide erkannt. mit dem gleichen Imput befehl.

    wenn ich das jetzt richtig verstanden habe, dann musst du zuerst die "Taste" die das Pad sendet abfangen, und daraus dann 2 andere Tastendrücke machen und die an Mame senden?

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (22. April 2010 um 23:58)

  • wenn ich das jetzt richtig verstanden habe, dann musst du zuerst die "Taste" die das Pad sendet abfangen, und daraus dann 2 andere Tastendrücke machen und die an Mame senden?


    bingo, wobei das Abfangen nicht das Problem ist da ist, da ich die Taste ja mit einem Hotkey auf eine Anwendung zuweißen kann.