“SendKeys”もどき

2016-06-20 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、0、 1、0、0、0、0(40)で、換算ポイント 87pt 。
「Firefox」6位アップ。「Perl」「化学業界」「硝子業界」「グルコサミン」、
「Python」bg値変動。「C言語」「FM COCOLO」「e-radio」「FM青森」変化無し。
・-・ - -・

さて、本文。

前(2016-06-19)の記事「マウス・カーソルの制御
では、マウス・エミュレーションが出来た?

これに続いて、今度は、
キーボード・エミュレーション:“SendKeys”もどき
を作ってみた。


参考にさせて頂いたのは、
代替SendKeys
  API関数でSendKeysしてみましょう
  キーを強制的に送るのに重宝するSendKeysですが、
  いろいろと問題現象も報告されています。
  NumLockを外してしまうとか。。。
  そこで、API関数を使ってキーを強制的に送ってみましょう。
  SendKeysのような問題現象が回避できますよ。
  ---------------------------------
  まずは、共通モジュールの(・・・)で以下のAPI関数を宣言しておきます。
  ・・・・・
  ・・・・・
  ---------------------------------
  次に、共通モジュールに以下のSubプロシージャを作成します。
  ・・・・・
  ・・・・・
です。


それで、
ベースは「keybd_event 関数
  キーストロークを合成します。システムは、合成されたキーストロークから、
  または メッセージを生成します。
  キーボードドライバの割り込みハンドラは、この関数を呼び出します。

  Windows NT/2000:この関数は、SendInput 関数に取って代わられています。
  この関数の代わりに SendInput を使ってください。
  ・・・・・
  ・・・・・
ですネ。
“SendInput”を使え。と云っていますが、・・・・・



出来たのは:
----- SendKeys_modoki.gsl -----
ffi.cdef[[
typedef unsigned char BYTE;
typedef unsigned int DWORD;
void Sleep( int MilliSeconds );
void keybd_event(
BYTE bVk, // 仮想キーコード
BYTE bScan, // ハードウェアスキャンコード
DWORD dwFlags, // 関数のオプション
int dwExtraInfo // 追加のキーストロークデータ ( ULONG_PTR )
);
]]
----- 引数1つは、単独キー押下 / 同時押しは、引数2つ指定
function SendKey( i, j )
if j == nil then
ffi.C.keybd_event( i, 0, 0, 0 ) -- キーダウン
ffi.C.keybd_event( i, 0, 2, 0 ) -- キーアップ
else
ffi.C.keybd_event( i, 0, 0, 0 ) -- 1 キーダウン
ffi.C.keybd_event( j, 0, 0, 0 ) -- 2 キーダウン
ffi.C.keybd_event( j, 0, 2, 0 ) -- 2 キーアップ
ffi.C.keybd_event( i, 0, 2, 0 ) -- 1 キーアップ
end
end
こうでしょうか?

この“SendKeys_modoki.gsl”を使った最初の一歩。
前回の“mouseX.gsl”も使う。
-----メイン:test_SendKeyZ.gsl
dofile('mouseX.gsl')
ffi.C.Sleep(500)
dofile('SendKeys_modoki.gsl')
SetMouseXY( 600, 400 )

SendKey( 0x42 ); SendKey( 0x0D ) -- 'b' と、CR

ffi.C.Sleep(2000)
SendKey( 0x12, 0x46 ) -- Alt + 'F'
で行けました。


なお、“仮想キーコード”については、
このページ」を参照させて頂いた。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


160511
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク