バッチファイルとパワーシェルでマウスを操作する powershell

2024年8月26日

バッチファイル

@powershell/c '#'+(Get-Content  \"%~f0\"-raw)^|Invoke-Expression &timeout /t 50&goto:eof
# const definition 
$MOUSEEVENTF_MOVED      = 0x0001 ;
$MOUSEEVENTF_LEFTDOWN   = 0x0002 ;
$MOUSEEVENTF_LEFTUP     = 0x0004 ;
$MOUSEEVENTF_RIGHTDOWN  = 0x0008 ;
$MOUSEEVENTF_RIGHTUP    = 0x0010 ;
$MOUSEEVENTF_MIDDLEDOWN = 0x0020 ;
$MOUSEEVENTF_MIDDLEUP   = 0x0040 ;
$MOUSEEVENTF_WHEEL      = 0x0080 ;
$MOUSEEVENTF_XDOWN      = 0x0100 ;
$MOUSEEVENTF_XUP        = 0x0200 ;
$MOUSEEVENTF_ABSOLUTE   = 0x8000 ;


# Variable definition 
$x = 400 
$y = 400 
# .NET Framework declaration 
Add-Type -AssemblyName System.Drawing 
Add-Type -AssemblyName System.Windows.Forms  

# Windows API declaration 
$Signature = @'
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] 
public static extern void mouse_event(long dwFlags , long dx, long dy, long dwData, long dwExtraInfo); 
'@



$MouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru  
Start-Sleep -s 11

# Move mouse cursor  
$POSITION = [System.Windows.Forms.Cursor]::Position
$POSITION.x = $x
$POSITION.y = $y
[System.Windows.Forms.Cursor]::Position = $POSITION

#[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
Start-Sleep -s 11

# Left click 
$MouseClick::mouse_event(0x0002, 0, 0, 0, 0); #Left mouse button DOWN
$MouseClick::mouse_event(0x0004, 0, 0, 0, 0); #Left mouse button UP
Start-Sleep -s 11

#Double left click
$MouseClick::mouse_event(0x0002, 0, 0, 0, 0); #Left mouse button down
$MouseClick::mouse_event(0x0004, 0, 0, 0, 0); #Left mouse button UP
$MouseClick::mouse_event(0x0002, 0, 0, 0, 0); #Left mouse button DOWN
$MouseClick::mouse_event(0x0004, 0, 0, 0, 0); #Left mouse button UP
Start-Sleep -s 11

# Right click 
$MouseClick::mouse_event(0x0008, 0, 0, 0, 0); # Right mouse button down
$MouseClick::mouse_event(0x0010, 0, 0, 0, 0); # Right mouse button down Button UP

Start-Sleep -s 11

# MIDDLE click 
$MouseClick::mouse_event(0x0020 , 0, 0, 0, 0); # MIDDLE  mouse button down
$MouseClick::mouse_event(0x0040 , 0, 0, 0, 0); # MIDDLE  mouse button down Button UP

mouse_event function (winuser.h) – Win32 apps | Microsoft Learn

ValueMeaning
MOUSEEVENTF_ABSOLUTE0x8000dx および dy パラメータには、正規化された絶対座標が含まれます。設定されていない場合、これらのパラメータには相対データ (最後に報告された位置からの位置の変化) が含まれます。このフラグは、システムに接続されているマウスまたはマウスのようなデバイスの種類に関係なく、設定することも設定しないこともできます。
MOUSEEVENTF_LEFTDOWN0x0002The left button is down.
MOUSEEVENTF_LEFTUP0x0004The left button is up.
MOUSEEVENTF_MIDDLEDOWN0x0020The middle button is down.
MOUSEEVENTF_MIDDLEUP0x0040The middle button is up.
MOUSEEVENTF_MOVE0x0001Movement occurred.
MOUSEEVENTF_RIGHTDOWN0x0008The right button is down.
MOUSEEVENTF_RIGHTUP0x0010The right button is up.
MOUSEEVENTF_WHEEL0x0800マウスにホイールがある場合は、ホイールが移動されました。移動量はdwDataで指定されます。
MOUSEEVENTF_XDOWN0x0080An X button was pressed.
MOUSEEVENTF_XUP0x0100An X button was released.
MOUSEEVENTF_WHEEL0x0800The wheel button is rotated.
MOUSEEVENTF_HWHEEL0x01000The wheel button is tilted.