定期的にマウスカーソルをブレさす
アイドル状態でも画面がスリープしないようにしたかったが、上手くいかない。物理的なキーボード入力信号を経由しないとダメそうだ。
v2
code:shaking_mouse_a_bit.ahk
;--------------------------------------------------------------------
; ユーザー操作が途絶えてから約10分後にマウスカーソルをブレさす
; なお、一度マウスカーソルをブレさせた場合、ユーザー操作が行われたものとする
;--------------------------------------------------------------------
TimerIntervalSec := 1 * 60
IdleTimeSec := 10 * 60
PixelMoving := 100
SetTimer ShakeMouse, TimerIntervalSec * 1000
ShakeMouse()
{
; ユーザー操作が途絶えてからの時間を確認する
if A_TimeIdle < IdleTimeSec * 1000 {
return
}
; マウスカーソルの位置を取得する
MouseGetPosInMultiMonitor(&x, &y)
; マウスカーソルを移動する(プラスの相対位置)
; ※マルチモニター環境だと正しい位置が取得できない可能性があるが、一時的にカーソルを動かすだけなので問題なし
MouseMove(PixelMoving, PixelMoving, , "R")
; マウスカーソルを移動する(マイナスの相対位置)
; ※マルチモニター環境だと正しい位置が取得できない可能性があるが、一時的にカーソルを動かすだけなので問題なし
MouseMove(0 - PixelMoving, 0 - PixelMoving, , "R")
; マウスカーソルを元の位置に戻す
MouseSetPosInMultiMonitor(x, y)
; Ctrlキー入力
Send "{Ctrl}"
return
}
;--------------------------------------------------------------------
; マルチモニター環境用のマウスカーソル位置取得関数
MouseGetPosInMultiMonitor(&x, &y)
{
sizeOfInt := 4
point := Buffer(sizeOfInt * 2)
DllCall("GetCursorPos", "Ptr", point)
x := NumGet(point, 0, "Int")
y := NumGet(point, 0 + sizeOfInt, "Int")
}
;--------------------------------------------------------------------
; マルチモニター環境用のマウスカーソル位置設定関数
MouseSetPosInMultiMonitor(x, y)
{
DllCall("SetCursorPos", "int", x, "int", y)
}
v1
作るのやめ。
その代わりv2をコンパイルしたexeをアップロード