1

前の質問:基本的にハングマンであるオンラインフラッシュゲームをプレイしています。文字を入力する唯一の方法は、ゲームの画面キーボードで文字をクリックすることです。キーボードの押下をマウスの位置にマップするようなマクロを作成して、キーボードで文字を入力し、対応する画面上のキーボードの文字をマウスでクリックできるようにしたいと思います。デルのラップトップでWindows7を実行しています。これを行う方法はありますか?これに役立つプログラムはありますか?それが助けになるなら、私はJavaでプログラミングした経験があります。

更新:私はAutoHotKeyを使用してマクロを作成しています。これが私が持っているものです:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
LAlt & a::
IfWinExist Bearville - Mozilla Firefox
{
    WinActivate
}
DllCall("mouse_event", "UInt", 0x01, "UInt", 460, "UInt", 560) ; move 
DllCall("mouse_event", "UInt", 0x02) ; left button down
DllCall("mouse_event", "UInt", 0x04) ; left button up
sleep 250
DllCall("mouse_event", "UInt", 0x01, "UInt", -460, "UInt", -560) ; move 
return
LAlt & b::
IfWinExist Bearville - Mozilla Firefox
{
    WinActivate
}
DllCall("mouse_event", "UInt", 0x01, "UInt", 500, "UInt", 560) ; move 
DllCall("mouse_event", "UInt", 0x02) ; left button down
DllCall("mouse_event", "UInt", 0x04) ; left button up
sleep 250
DllCall("mouse_event", "UInt", 0x01, "UInt", -500, "UInt", -560) ; move 
return

等々。ウィンドウがアクティブでない場合は、アクティブにします。ポインタを左上隅から画面上の文字の位置に移動し、マウスの左ボタンを上下に動かし、250ミリ秒待ってから(遅延がないためクリックが登録されないため)、ポインタを開始位置に戻します。 。これは1つの文字に対して機能しますが、直後に別の文字を入力しようとすると、左のAltキーを押すとすぐにウィンドウのフォーカスが失われます。ホットキーの入力を終了するとウィンドウがアクティブになりますが、ポインタが移動またはクリックされていないように見え、ウィンドウは再びフォーカスを失います。どうすれば修正できますか?

4

2 に答える 2

0

送信の代わりにDllCallsを使用している理由がある場合、これは機能しない可能性がありますが、このタイプのアプリケーションでは、別のホットキーが押されるまでループを開始するホットキーを作成し、入力を使用して任意のホットキーをリッスンします。クリックする文字を入力しました。

このようなもの:

LAlt & a::
IfWinExist Bearville - Mozilla Firefox
{
    WinActivate
}
flag = 1
while flag
{
    Input, inval, B L1, {Space}
    IfInString, errorlevel, EndKey
    {
        flag = 0
    } else {
        x, y = locationForChar(inval)
        ;I'd reccomened a switch or if statement chain
        Send {Click %x%, %y%}
    }
}

これは、「LAlt&a」ホットキーが押された後にすべての入力の読み取りを開始し、スペースキーが押された後に終了するはずです。

于 2013-01-17T03:29:25.737 に答える
0

仮想キーボードの位置が固定されている場合は、これを使用できます...

a::MouseClick, left, 150,150
b::MouseClick, left, 250,250

autoHotKey Window Spyを使用して、正確なマウス座標を見つけてください。これは26回行う必要がありますが、簡単でわかりやすく、フォーカスの喪失の問題が発生することはありません。

于 2013-01-17T07:55:31.300 に答える