UWSCでモニター情報(デスクトップサイズ・作業サイズ)を取得する
stuncloudさんが、「あ、でもこれマルチモニタだとどうなるん…?」とか書いてたので、ちゃちゃっと。
掲示板から小ネタ | たっぷす庵
SystemParametersInfoのSPI_GETWORKAREAは、プライマリモニターの情報しか返しません。
他の情報が知りたい場合は、GetMonitorInfoを使うのですが、モニターハンドルが必要なので、手数が増える。
DEF_DLL MonitorFromPoint(long,long,DWORD): DWORD: user32 DEF_DLL GetMonitorInfoW(DWORD,var long[]): BOOL: user32 DIM i, x, y, inf[9] inf[0] = 40 FOR i = 0 TO MONITOR() - 1 x = MONITOR(i, MON_X) y = MONITOR(i, MON_Y) IFB GetMonitorInfoW(MonitorFromPoint(x, y, 0), inf) THEN // 0:MONITOR_DEFAULTTONULL PRINT "(" + inf[1] + "," + inf[2] + ")-(" + inf[3] + "," + inf[4] + ") (" + inf[5] + "," + inf[6] + ")-(" + inf[7] + "," + inf[8] + ") " + inf[9] ENDIF NEXT
PRINTするのは、「デスクトップ領域 作業領域 プライマリーモニタフラグ」となっています。
Win8では未確認。