Desktop Window Managerを用いることで角丸の設定ができるみたいなので、モジュールにしてみました。
サンプルも付けましたので、どうぞご自由にお使いください。
(ミスを発見したため修正)
#module mod_setcorner
/*
setcorner p1
p1=0〜3 : ウィンドウの角のタイプ設定
カレントウィンドウの角(コーナー)を丸めるか丸めないかの設定をします。
Windows11でのみ機能します。
タイプ0(DWMWCP_DEFAULT) : デフォルトの設定(通常はタイプ2と同じ、ツールウィンドウの場合はタイプ3と同じ)
タイプ1(DWMWCP_DONOTROUND) : ウィンドウの角を丸めない
タイプ2(DWMWCP_ROUND) : ウィンドウの角を丸める
タイプ3(DWMWCP_ROUNDSMALL) : ウィンドウの角を小さく丸める
statに結果が反映されます。
stat=0 : 成功
stat=-1 : 失敗
stat=-2 : Windows11でない
*/
#uselib "NTDLL.dll"
#func global RtlGetVersion "RtlGetVersion" sptr
#uselib "dwmapi.dll"
#func DwmSetWindowAttribute "DwmSetWindowAttribute" sptr,sptr,var,sptr
#enum DWMWA_WINDOW_CORNER_PREFERENCE = 33
;DWM_WINDOW_CORNER_PREFERENCE
#enum global DWMWCP_DEFAULT = 0
#enum global DWMWCP_DONOTROUND
#enum global DWMWCP_ROUND
#enum global DWMWCP_ROUNDSMALL
#deffunc setcorner int pv,local pvAttribute
if OSVERSIONINFO=0{
dim OSVERSIONINFO, 37//構造体
OSVERSIONINFO = $94
RtlGetVersion varptr(OSVERSIONINFO)
}
if (OSVERSIONINFO(1)>=10)and(OSVERSIONINFO(3)>=22000){
pvAttribute = pv;変数にしないとはじかれる
DwmSetWindowAttribute hwnd,DWMWA_WINDOW_CORNER_PREFERENCE,pvAttribute,4
if stat!0:return -1
return 0
}else{
return -2;Win11以外ははじく
}
#global
;サンプル 1秒ごとに設定切り替え
screen
wait
setcorner DWMWCP_DONOTROUND
mes stat
wait
setcorner DWMWCP_ROUND
mes stat
wait
setcorner DWMWCP_ROUNDSMALL
mes stat
wait
setcorner DWMWCP_DEFAULT
mes stat
stop