HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0924
iladスクリーンキーボードを作りたい2未解決


ilad

リンク

2009/9/24(Thu) 05:01:09|NO.27938

Windowsのスクリーンキーボードのようなものを作りたいと考えています。
基本的な入力はできるようになったのですが、アプリケーションのメニュー操作でつまずいています。

例えばメモ帳でキーボードからAlt+F→Aと押せば「名前をつけて保存」のダイアログが出ますが、
以下のスクリプトを実行して「Alt+F」「A」のボタンを押してもメニューが閉じます。
同様にカーソルキーや「Enter」もうまく動作しません。

どうやらメモ帳のメニューハンドラが「他ウィンドウでのマウスクリック」を検出してメニューを閉じるようです。
これを防ぎメニューを操作する方法はないでしょうか?

<以下スクリプト>

#include "hspdef.as" #uselib "user32.dll" #cfunc GetWindowLongA "GetWindowLongA" int,int #func SetWindowLongA "SetWindowLongA" int,int,int #func keybd_event "keybd_event" int,int,int,int gsel 0,-1 skxs=256:skys=48 skx=0:sky=0 bgscr 2,skxs,skys,0,skx,sky skwh=hwnd exstyle=-20 dwstyle=GetWindowLongA(skwh,exstyle) dwstyle=dwstyle|0x8|0x80|0x08000000 ;Tool80 +Topmost8 + NoActivate8000000 SetWindowLongA skwh,exstyle,dwstyle pos 0,0 button "quit",*quit pos 0,24 button "Alt+F",*altf pos 128,0 button "↑",*up pos 64,24 button "←",*left pos 128,24 button "↓",*down pos 192,24 button "→",*right pos 64,0 button "A",*a pos 192,0 button "Enter",*enter stop *altf keybd_event 18,0,0,0 keybd_event 70,0,0,0 keybd_event 70,0,2,0 keybd_event 18,0,2,0 stop *up keybd_event 38,0,0,0 keybd_event 38,0,2,0 stop *left keybd_event 37,0,0,0 keybd_event 37,0,2,0 stop *down keybd_event 40,0,0,0 keybd_event 40,0,2,0 stop *right keybd_event 39,0,0,0 keybd_event 39,0,2,0 stop *a keybd_event 65,0,0,0 keybd_event 65,0,2,0 stop *enter keybd_event 13,0,0,0 keybd_event 13,0,2,0 stop *quit end



この記事に返信する


orn

リンク

2009/12/19(Sat) 19:05:45|NO.29353

こんにちは。

スクリプトを実行してみたところ、私のパソコンではカーソルも「Enter」も動きましたよ。
ただ、確かにメニューのところは動きませんでしたね。

何か方法があると思うんですが、私には分かりません。
ごめんなさい。



woodfields

リンク

2009/12/24(Thu) 05:04:21|NO.29462

わたしの環境では[Alt+F]のキー操作が有効でなく、[Alt+Shift+F]ならOKです
よって以下のようにスクリプトを変更したら動きました
*altf
keybd_event 16,0,0,0
keybd_event 18,0,0,0
keybd_event 70,0,0,0
keybd_event 70,0,2,0
keybd_event 18,0,2,0
keybd_event 16,0,2,0
stop



ONION software Copyright 1997-2021(c) All rights reserved.