“MouseEmu.lua”モジュール

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

さて、本文。

先月下旬(2016-08-28)の記事「マウス・カーソルの制御(2)
では、

  ・・・・・
  ・・・・・
  当時頂いた“MouseControll.c”ソースコード
  だけでなく、
  出来上がっている“MouseControll.dll”
  を使わせて頂く。
  ・・・・・
  ・・・・・
  つまり、“機能拡張版”と云うこと?
  早速頂きました。
    MouseEmulatorDLL.zip  2010/03/27  3.82KB
  このDLLに乗り換えてみた:
  ・・・・・
  ・・・・・

などと書いた。

そこで、
3ヶ月前(2016-06-19)の記事「マウス・カーソルの制御
で作った、

  某氏の MouseControll 相当品:mouseX.gsl

を機能強化して、
“MouseEmu.lua”モジュールを作った:
voidA = |x| ffi.cast( 'void*', x )
ffi.cdef[[ typedef unsigned int DWord;
typedef struct tagPOINT{ int x; int y; } POINT, *LPPOINT;
void Sleep( int MilliSeconds );
void SetCursorPos( int X, int Y ); // 水平位置、垂直位置
void GetCursorPos( LPPOINT lpPoint ); // カーソル位置
void mouse_event(
DWord dwFlags, // 移動とクリックのオプション
DWord dx, // 水平位置または移動量
DWord dy, // 垂直位置または移動量
DWord dwData, // ホイールの移動
int dwExtraInfo // アプリケーション定義の情報
);
]]
function GetMouseXY() -- マウス座標を取得 GetMouseXY()
local pos = ffi.new('int[2]')
ffi.C.GetCursorPos( voidA(pos) )
return pos[0], pos[1]
end
function SetMouseXY( x, y ) -- マウス座標を設定 SetMouseXY( x, y )
ffi.C.SetCursorPos( x, y )
end
function SetMouseX( x ) -- マウスX座標を設定 SetMouseX( x )
local u, y = GetMouseXY()
ffi.C.SetCursorPos( x, y )
end
function SetMouseY( y ) -- マウスY座標を設定 SetMouseY( y )
local x, v = GetMouseXY()
ffi.C.SetCursorPos( x, y )
end
function AddMouseXY( x, y ) -- マウス座標を加算 AddMouseXY( x, y )
local u, v = GetMouseXY()
ffi.C.SetCursorPos( u+x, v+y )
end
function AddMouseX( x ) -- マウスX座標を加算 AddMouseX( x )
local u, y = GetMouseXY()
ffi.C.SetCursorPos( u+x, y )
end
function AddMouseY( y ) -- マウスY座標を加算 AddMouseY( y )
local u, y = GetMouseXY()
ffi.C.SetCursorPos( u+x, y )
end
function LeftDown() --------------------- LeftDown()
ffi.C.mouse_event( 0x02, 0, 0, 0, 0 )
end
function LeftUp() --------------------- LeftUp()
ffi.C.mouse_event( 0x04, 0, 0, 0, 0 )
end
function LeftClick() --------------------- LeftClick()
ffi.C.mouse_event( 0x02, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x04, 0, 0, 0, 0 )
end
function LeftDblClick() --------------------- LeftDblClick()
ffi.C.mouse_event( 0x02, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x04, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x02, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x04, 0, 0, 0, 0 )
end
function RightDown() -------------------- RightDown()
ffi.C.mouse_event( 0x08, 0, 0, 0, 0 )
end
function RightUp() -------------------- RightUp()
ffi.C.mouse_event( 0x10, 0, 0, 0, 0 )
end
function RightClick() -------------------- RightClick()
ffi.C.mouse_event( 0x08, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x10, 0, 0, 0, 0 )
end
function RightDblClick() -------------------- RightDblClick()
ffi.C.mouse_event( 0x08, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x10, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x08, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x10, 0, 0, 0, 0 )
end
function MiddleDown() -------------------- MiddleDown()
ffi.C.mouse_event( 0x20, 0, 0, 0, 0 )
end
function MiddleUp() -------------------- MiddleUp()
ffi.C.mouse_event( 0x40, 0, 0, 0, 0 )
end
function MiddleClick() -------------------- MiddleClick()
ffi.C.mouse_event( 0x20, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x40, 0, 0, 0, 0 )
end
function MiddleDblClick() -------------------- MiddleDblClick()
ffi.C.mouse_event( 0x20, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x40, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x20, 0, 0, 0, 0 )
ffi.C.Sleep(10)
ffi.C.mouse_event( 0x40, 0, 0, 0, 0 )
end
function RotWheel( w ) -------------------- RotWheel( w )
ffi.C.mouse_event( 0x800, 0, 0, w, 0 )
end
function DragDrop( xs, ys, xd, yd ) --------------- DragDrop( xs, ys, xd, yd )
SetMouseXY( xs, ys )
ffi.C.Sleep(10)
LeftDown()
ffi.C.Sleep(10)
SetMouseXY( xd, yd )
ffi.C.Sleep(10)
LeftUp()
end
以上、機能テンコ盛りで、長ったらしくなった。

“ドラッグ&ドロップ”にも“ホイール操作”にも対応できている。

これだと、
Lua(GSL Shell)メインプログラムから、

  require'MouseEmu'

で、読み込んで使える。
コンパイルはイラナイ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


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

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 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 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク