アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。「MapleStory」というゲームで非アクティブ状態でもキー情報が入力されるようにしたいのですが・・・ネットでいろいろ調べたところここまでたどり着きました。

while true

if GETKEYSTATE(VK_ESC) then exit //ESCで終了

id = GETID("MapleStory","MapleStoryClass")
ifb (ID < 0)
MSGBOX("ウィンドウが見つかりません")
exitexit //見つからなければ終了
endif

hwnd = GETCTLHND(id, "MapleStoryClass")
MOUSEORG(hwnd, 2)
KBD(VK_A,DOWN,200)

wend

↑のように書けば非アクティブでもAが入力されると思ったのですが、アクティブ状態でしか入力してくれません。
どのようにしたら良いのでしょうか?どなたかご教授お願いします。ちなみに調べたところクラスはMapleStoryClassの1つだけのようでした。

A 回答 (1件)

そのやり方には、重大な欠陥が二つあります。



1)
MOUSEORG関数は、座標原点を移動させるだけであって、アクティブウィンドウを切り替えたりイベントの送り先を切り替えたりする機能は持たない

2)
KBD関数が発生するキー操作イベントは必ず、アクティブウィンドウに対してのみ送信され、バックグラウンドのウィンドウにはどうやっても行かない。これはBTN関数も同様

キー入力の送り先を指定するときはKBD関数じゃなくて、SCKEY関数を使いましょう。これなら送り先のウィンドウIDを指定できます。とりあえずこんな感じ?

//hwnd = GETCTLHND(id, "MapleStoryClass")
//MOUSEORG(hwnd, 2)
SCKEY(id,VK_A)
    • good
    • 3
この回答へのお礼

ありがとうございます!望んでいた操作ができました!
KBD関数とBTN関数がアクティブウィンドウのみにしか送信できないとは知りませんでした・・・
これからも入力先の指定をする必要が出てきた時はRandenSai様の教えてくださったとおりにSCKEY関数を使ってみます!本当にありがとうございました!

お礼日時:2014/09/01 21:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A