システム系組み込み関数の変更および新規追加された関数についての解説です。
変更点
kindofos
戻り値に対応した定数を新たに定義しました。
定数 | 値 |
---|---|
OS_WIN2000 | 12 |
OS_WINXP | 13 |
OS_WINSRV2003 | 14 |
OS_WINSRV2003R2 | 15 |
OS_WINVISTA | 20 |
OS_WINSRV2008 | 21 |
OS_WIN7 | 22 |
OS_WINSRV2008R2 | 27 |
OS_WIN8 | 23 |
OS_WINSRV2012 | 24 |
OS_WIN81 | 25 |
OS_WINSRV2012R2 | 26 |
OS_WIN10 | 30 |
OS_WINSRV2016 | 31 |
OS_WIN11 | 32 |
とはいえUWSCRがWindows 10以降でしか動作しないので大半は無意味となりました。
一応Windows 11の判定もしてはいますが、正しく判定されるかどうかはわかりません。またServer 2016よりあとのServer OSには対応していません。
加えて、OS情報を得るための数値引数に対応した定数も定義しています。
定数 | 解説 |
---|---|
OSVER_MAJOR | OSのメジャーバージョンを返す |
OSVER_MINOR | OSのマイナーバージョンを返す |
OSVER_BUILD | OSのビルド番号を返す |
OSVER_PLATFORM | OSのプラットフォームIDを返す |
print kindofos(OSVER_MAJOR) // 10
print kindofos(OSVER_MINOR) // 0
print kindofos(OSVER_BUILD) // 19045
print kindofos(OSVER_PLATFORM) // 2
これはUWSCの隠し機能を正式に採用したものです。
powershell
第四引数をTRUE
にすることで$PROFILE
を読み込まずに実行(-NoProfile
)できるようになりました。$PROFILE
の読み込みが原因でエラーが発生する場合はこれを利用してください。デフォルトはFALSE
です。
cmd = "ls *.txt"
print powershell(cmd,,,TRUE) // $PROFILEを読み込まない
sound
BEEP
指定によるビープ音再生が廃止されました。
また、現時点では再生デバイスの指定ができません。(制限事項)
getkeystate
UWSCではTGL_KANALOCK
やTGL_IME
が正常に動作していませんでした。これはUWSCがウィンドウ毎のIME状態取得に対応していなかったためです。UWSCRは第二引数にidを指定することでこれらの状態を正確に取得できるようになりました。idが未指定の場合はアクティブウィンドウを対象とします。
id = getid("qiita")
print getkeystate(TGL_KANALOCK, id)
print getkeystate(TGL_IME, id)
sethotkey
UWSCではsethotkeyに関数名を渡していましたが、UWSCRでは関数名に加えてユーザー定義関数自体を渡せるようになりました。
sethotkey(VK_A, , "proc")
procedure proc()
print HOTKEY_VK
fend
procedure proc()
print HOTKEY_VK
fend
// 関数名
sethotkey(VK_A, , "proc")
// 関数自体を渡す
sethotkey(VK_B, , proc)
poff
poff(P_UWSC_REEXEC)
で第二引数を省略した場合のデフォルト値がTRUE
になりました。
gettime
基準日時に対する補正値の単位指定と、戻り値をミリ秒にするオプションが追加されました。単位は第三引数に定数で指定します。デフォルトはG_OFFSET_DAYS
です
定数 | 補正値の単位 |
---|---|
G_OFFSET_DAYS | 日数 |
G_OFFSET_HOURS | 時間 |
G_OFFSET_MINUTES | 分 |
G_OFFSET_SECONDS | 秒 |
G_OFFSET_MILLIS | ミリ秒 |
datetime = "2023/12/25 12:25:25"
// 1日進める
sec = gettime(1, datetime, G_OFFSET_DAYS)
print format(sec, "%+") // 2023-12-26T12:25:25+09:00
// 2時間戻す
sec = gettime(-2, datetime, G_OFFSET_HOURS)
print format(sec, "%+") // 2023-12-25T10:25:25+09:00
// 35分進める
sec = gettime(35, datetime, G_OFFSET_MINUTES)
print format(sec, "%+") // 2023-12-25T13:00:25+09:00
// 25秒戻す
sec = gettime(-25, datetime, G_OFFSET_SECONDS)
print format(sec, "%+") // 2023-12-25T12:25:00+09:00
// 123ミリ秒進める
// 第四引数TRUEでミリ秒を返す
milli = gettime(123, datetime, G_OFFSET_MILLIS, TRUE)
print format(milli, "%+", TRUE) // 2023-12-25T12:25:25.123+09:00
また、G_TIME_WW
と比較するための曜日を示す定数が追加されました。
定数 | 曜日 |
---|---|
G_WEEKDAY_SUN | 日 |
G_WEEKDAY_MON | 月 |
G_WEEKDAY_TUE | 火 |
G_WEEKDAY_WED | 水 |
G_WEEKDAY_THU | 木 |
G_WEEKDAY_FRI | 金 |
G_WEEKDAY_SAT | 土 |
新規
env
環境変数を展開します。
print env("ProgramFiles") // C:\Program Files
uwscr.exeのプロセス環境変数から読み取ります。
wmi
WQLを指定してWMIから情報を得ます。結果はUObject配列として返ります
wql = 'select name, processid, commandline from Win32_Process where name = "uwscr.exe"'
for process in wmi(wql)
print tojson(process, TRUE)
next
shexec
ShellExecuteを行います。「ファイル名を指定して実行」やstartコマンドのように動作します。execとは異なりidは返しません。
// execと異なりmsedgeと入れるだけでMSEdgeが起動できる
shexec("msedge", "http://example.com")
pwsh
powershell関数がWindows PowerShell
を実行するのに対し、pwsh関数はPowerShell (Core)
を実行します。
PowerShell (Core) がインストールされていない場合は動作しません。
cmd = "ls *.txt"
print pwsh(cmd,,,TRUE)
beep
ビープ音を再生するための関数です。sound関数から機能が切り離されました。周波数や再生する時間、繰り返し再生の回数を指定できます。
// 1800ヘルツで0.4秒間の再生を3回繰り返す
beep(400, 1800, 3)
thread beep(200, 2000, 5)
msgbox("threadでビープ音をバックグラウンド再生")