########################################################################################

# 着弾させたい時刻 (日付も指定するので、毎回変える必要があり)
$attackTime = "2021/6/25 12:45:00"

# 進軍時間の時分秒 (実際の進軍時間をチェックして設定)
$marchTimeHour = 0
$marchTimeMinutes = 0
$marchTimeSecond = 20

# NW遅延、ブラウザ遅延、時間ズレを考慮したオフセット(ミリ秒)。環境ごとに調整する。
# (正の数値は早めにクリック、負の数は遅めにクリックという意味)
$offsetMillis = 100

########################################################################################

$signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru

$marchTimeSpan = New-TimeSpan -Hours $marchTimeHour -Minutes $marchTimeMinutes -Seconds $marchTimeSecond
$targetTime = get-date $attackTime
$currentTime = get-date
$duration = New-TimeSpan $currentTime $targetTime
$sleepTime = $duration.TotalMilliseconds - $marchTimeSpan.TotalMilliseconds - $offsetMillis

If ($sleepTime -lt 0) {
Write-Host "指定した時刻はもう過ぎてるよ!" -ForegroundColor "red"
$null = Read-Host 'Enter キー で終了'
exit
}

$currentTime = ($currentTime).ToString("yyyy/MM/dd HH:mm:ss.fff")
$sleepTimeStr = ([int]$sleepTime)/1000
echo "今、$currentTime"
echo "$sleepTimeStr 秒後にクリックするよ!"

Start-Sleep -Milliseconds $sleepTime

$currentTime = (get-date).ToString("yyyy/MM/dd HH:mm:ss.fff")

$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);

Write-Host "$currentTime にクリックしたよ" -ForegroundColor "yellow"
$null = Read-Host 'Enter キー で終了'
#######################################
BBR-MD5:CoPiPe-d45128633c27c61a292cf93e7abb44d9(NEW)
BBS_COPIPE=Lv:0
PID: 67737
[0.231040 sec.]
This is Original