8.ウィンドウ・画面等の幅や高さ等と現在の構成を(81項目)取得(27_Sys_08) (旧、SampleNo.358) |
1.ウィンドウ・画面等の幅や高さ等と現在の構成を(81項目)取得 2.上記、取得するための付帯処理関係(関数・メソッド等含む) 3.GetSystemMetrics の定数及び定数値、取得結果、取得項目の解説 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :System.Runtime.InteropServices 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.ウィンドウ・画面等の幅や高さ等と現在の構成を(81項目)取得 |
個別に取得するには、GetSystemMetrics(定数) で取得できますので、調べたい項目の定数を下記で調べて下さい。 Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Call SetEnum() Dim SaveFilePath As String = "SysMetric.csv" '保存先のCSVファイルのフルパス 'ファイルが使用中だとエラーが発生するので If System.IO.File.Exists(SaveFilePath) Then Try 'ファイル名の変更 System.IO.File.Move(SaveFilePath, SaveFilePath) Catch ex As Exception MessageBox.Show(ex.Message) Exit Sub End Try End If Using swCSV As New System.IO.StreamWriter(SaveFilePath, False, System.Text.Encoding.GetEncoding("SHIFT_JIS")) Dim sf As String = Chr(34) Dim se As String = Chr(34) & "," Dim st As String = se & sf & " " & se & sf & " " & sf 'ヘッダーテキストを保存 swCSV.WriteLine(sf & "定 数 及び 定 数 値" & se & sf & " 取 得 値 " & se & sf & " 取 得 値 の 解 説 " & sf) swCSV.WriteLine(sf & "ディスプレイ・スクリーン・ウィンドウのサイズ関係" & st) Dim I As Integer For I = 0 To 83 If I = 18 Then swCSV.WriteLine(sf & "その他のディスプレイ・スクリーン・ウィンドウ関係" & st) If I = 25 Then swCSV.WriteLine(sf & "タイトルバー・メニュー関係" & st) If I = 35 Then swCSV.WriteLine(sf & "ウィンドウの枠線・境界線関係" & st) If I = 47 Then swCSV.WriteLine(sf & "スクロールバー関係" & st) If I = 53 Then swCSV.WriteLine(sf & "アイコン・ビットマップ関係" & st) If I = 61 Then swCSV.WriteLine(sf & "カーソル・マウス関係" & st) If I = 71 Then swCSV.WriteLine(sf & "その他" & st) If I = 73 Then swCSV.WriteLine(sf & SMConst(I) & se & sf & _ (GetSystemMetrics(SMValue(I)) And &H1).ToString & se & sf & SMName(I) & sf) Else swCSV.WriteLine(sf & SMConst(I) & se & sf & _ GetSystemMetrics(SMValue(I)).ToString & se & sf & SMName(I) & sf) End If Next I End Using MessageBox.Show("取得してファイルに保存しました") '保存した CSV ファイルを DataGridView に表示。 ---- 以下省略 ---- End Sub |
2.上記、取得するための付帯処理関係(関数・メソッド等含む) |
'ディスプレイ上のウィンドウアイテムのサイズを取得する(919) <DllImport("user32.dll", CharSet:=CharSet.Auto)> _ Private Shared Function GetSystemMetrics( _ ByVal nIndex As Integer) As Integer End Function Private SMName(83) As String Private SMValue(83) As Integer Private SMConst(83) As String Private Sub SetEnum() 'ディスプレイ・スクリーン・ウィンドウのサイズ関係 SMConst(0) = "SM_CXSCREEN = 0" : SMName(0) = "ディスプレイの幅" : SMValue(0) = 0 SMConst(1) = "SM_CYSCREEN = 1" : SMName(1) = "ディスプレイの高さ" : SMValue(1) = 1 SMConst(2) = "SM_CXMAXIMIZED = 61" : SMName(2) = "ディスプレイの最大幅" : SMValue(2) = 61 SMConst(3) = "SM_CYMAXIMIZED = 62" : SMName(3) = "ディスプレイの最大高さ" : SMValue(3) = 62 SMConst(4) = "SM_CXFULLSCREEN = 16" : SMName(4) = "最大化した時のクライアント領域の幅" : SMValue(4) = 16 SMConst(5) = "SM_CYFULLSCREEN = 17" : SMName(5) = "最大化した時のクライアント領域の高さ" : SMValue(5) = 17 SMConst(6) = "SM_CXMINIMIZED = 57" : SMName(6) = "最小化したウィンドウの最小幅" : SMValue(6) = 57 SMConst(7) = "SM_CYMINIMIZED = 58" : SMName(7) = "最小化したウィンドウの最小高さ" : SMValue(7) = 58 SMConst(8) = "SM_CXMIN = 28" : SMName(8) = "ウィンドウの最小幅" : SMValue(8) = 28 SMConst(9) = "SM_CYMIN = 29" : SMName(9) = "ウィンドウの最小高さ" : SMValue(9) = 29 SMConst(10) = "SM_CXMINTRACK = 34" : SMName(10) = "ウィンドウの可能な最小幅" : SMValue(10) = 34 SMConst(11) = "SM_CYMINTRACK = 35" : SMName(11) = "ウィンドウの可能な最小高さ" : SMValue(11) = 35 SMConst(12) = "SM_CXMAXTRACK = 59" : SMName(12) = "サイズ変更可能なウィンドウの最大幅" : SMValue(12) = 59 SMConst(13) = "SM_CYMAXTRACK = 60" : SMName(13) = "サイズ変更可能なウィンドウの最大高さ" : SMValue(13) = 60 SMConst(14) = "SM_CXVIRTUALSCREEN = 78" : SMName(14) = "仮想スクリーンの幅" : SMValue(14) = 78 SMConst(15) = "SM_CYVIRTUALSCREEN = 79" : SMName(15) = "仮想スクリーンの高さ" : SMValue(15) = 79 SMConst(16) = "SM_XVIRTUALSCREEN = 76" : SMName(16) = "仮想スクリーンの左座標" : SMValue(16) = 76 SMConst(17) = "SM_YVIRTUALSCREEN = 77" : SMName(17) = "仮想スクリーンの上座標" : SMValue(17) = 77 'その他のディスプレイ・スクリーン・ウィンドウ関係 SMConst(18) = "SM_CMONITORS = 80" : SMName(18) = "ディスプレイモニターの数" : SMValue(18) = 80 SMConst(19) = "SM_SAMEDISPLAYFORMAT = 81" : SMName(19) = "すべてのディスプレイモニターが同じカラー形式の時=1" : SMValue(19) = 81 SMConst(20) = "SM_CYKANJIWINDOW = 18" : SMName(20) = "画面下の漢字ウィンドウの高さ" : SMValue(20) = 18 SMConst(21) = "SM_PENWINDOWS = 41" : SMName(21) = "ペンウィンドウの時=1" : SMValue(21) = 41 SMConst(22) = "SM_CXMINSPACING = 47" : SMName(22) = "最小化ウィンドウの配置に使われるグリッドの幅" : SMValue(22) = 47 SMConst(23) = "SM_CYMINSPACING = 48" : SMName(23) = "最小化ウィンドウの配置に使われるグリッドの高さ" : SMValue(23) = 48 SMConst(24) = "SM_ARRANGE = 56" : SMName(24) = "最小化ウィンドウの配置方法を示す値" : SMValue(24) = 56 'タイトルバー・メニュー関係 SMConst(25) = "SM_CYCAPTION = 4" : SMName(25) = "通常のタイトルバーの高さ" : SMValue(25) = 4 SMConst(26) = "SM_CYSMCAPTION = 51" : SMName(26) = "小さいタイトルバーの高さ" : SMValue(26) = 51 SMConst(27) = "SM_CXSMSIZE = 52" : SMName(27) = "小さいタイトルバー内のボタンの幅" : SMValue(27) = 52 SMConst(28) = "SM_CYSMSIZE = 53" : SMName(28) = "小さいタイトルバー内のボタンの高さ" : SMValue(28) = 53 SMConst(29) = "SM_CYMENU = 15" : SMName(29) = "メニューバーの行の高さ" : SMValue(29) = 15 SMConst(30) = "SM_MENUDROPALIGNMENT = 40" : SMName(30) = "サブメニューが左側揃えの時=0" : SMValue(30) = 40 SMConst(31) = "SM_CXMENUSIZE = 54" : SMName(31) = "メニューバーボタンの幅" : SMValue(31) = 54 SMConst(32) = "SM_CYMENUSIZE = 55" : SMName(32) = "メニューバーボタンの高さ" : SMValue(32) = 55 SMConst(33) = "SM_CXMENUCHECK = 71" : SMName(33) = "メニューのチェックマークの幅" : SMValue(33) = 71 SMConst(34) = "SM_CYMENUCHECK = 72" : SMName(34) = "メニューのチェックマークの高さ" : SMValue(34) = 72 'ウィンドウの枠線・境界線関係 SMConst(35) = "SM_CXBORDER = 5" : SMName(35) = "(vbFixedSingle=1)のウィンドウの枠線の幅" : SMValue(35) = 5 SMConst(36) = "SM_CYBORDER = 6" : SMName(36) = "(vbFixedSingle=1)のウィンドウの枠線の高さ" : SMValue(36) = 6 SMConst(37) = "SM_CXDLGFRAME = 7" : SMName(37) = "(vbFixedDialog=3)のウィンドウの枠線の幅" : SMValue(37) = 7 SMConst(38) = "SM_CYDLGFRAME = 8" : SMName(38) = "(vbFixedDialog=3)のウィンドウの枠線の高さ" : SMValue(38) = 8 SMConst(39) = "SM_CXFIXEDFRAME = 7" : SMName(39) = "(vbFixedToolWindow=4)のウィンドウの枠線の幅" : SMValue(39) = 7 'SM_CXDLGFRAME SMConst(40) = "SM_CYFIXEDFRAME = 8" : SMName(40) = "(vbFixedToolWindow=4)のウィンドウの枠線の高さ" : SMValue(40) = 8 'SM_CYDLGFRAME SMConst(41) = "SM_CXFRAME = 32" : SMName(41) = "サイズ可変ウィンドウの境界線のX方向の幅" : SMValue(41) = 32 SMConst(42) = "SM_CYFRAME = 33" : SMName(42) = "サイズ可変ウィンドウの境界線のY方向の幅" : SMValue(42) = 33 SMConst(43) = "SM_CXSIZEFRAME = 32" : SMName(43) = "サイズ可変ウィンドウの境界線のX方向の幅" : SMValue(43) = 32 'SM_CXFRAME SMConst(44) = "SM_CYSIZEFRAME = 33" : SMName(44) = "サイズ可変ウィンドウの境界線のY方向の幅" : SMValue(44) = 33 'SM_CXFRAME SMConst(45) = "SM_CXEDGE = 45" : SMName(45) = "立体効果付きウィンドウの境界線のX方向の幅" : SMValue(45) = 45 SMConst(46) = "SM_CYEDGE = 46" : SMName(46) = "立体効果付きウィンドウの境界線のY方向の幅" : SMValue(46) = 46 'スクロールバー関係 SMConst(47) = "SM_CXVSCROLL = 2" : SMName(47) = "垂直スクロールバーの幅又は矢印ビットマップの幅" : SMValue(47) = 2 SMConst(48) = "SM_CYVSCROLL = 20" : SMName(48) = "垂直スクロールバーの幅又は矢印ビットマップの幅" : SMValue(48) = 20 SMConst(49) = "SM_CYHSCROLL = 3" : SMName(49) = "水平スクロールバーの高さ又は矢印ビットマップの高さ" : SMValue(49) = 3 SMConst(50) = "SM_CXHSCROLL = 21" : SMName(50) = "水平スクロールバーの高さ又は矢印ビットマップの高さ" : SMValue(50) = 21 SMConst(51) = "SM_CYVTHUMB = 9" : SMName(51) = "垂直スクロールバーのサム(つまみ)のビットマップの幅" : SMValue(51) = 9 SMConst(52) = "SM_CXHTHUMB = 10" : SMName(52) = "水平スクロールバーのサム(つまみ)のビットマップの高さ" : SMValue(52) = 10 'アイコン・ビットマップ関係 SMConst(53) = "SM_CXICON = 11" : SMName(53) = "アイコンの(関数がロードできる)既定の幅" : SMValue(53) = 11 SMConst(54) = "SM_CYICON = 12" : SMName(54) = "アイコンの(関数がロードできる)既定の高さ" : SMValue(54) = 12 SMConst(55) = "SM_CXSMICON = 49" : SMName(55) = "小アイコンの推薦サイズの幅" : SMValue(55) = 49 SMConst(56) = "SM_CYSMICON = 50" : SMName(56) = "小アイコンの推薦サイズの高さ" : SMValue(56) = 50 SMConst(57) = "SM_CXICONSPACING = 38" : SMName(57) = "アイコンを整列配置する為の短径の幅" : SMValue(57) = 38 SMConst(58) = "SM_CYICONSPACING = 39" : SMName(58) = "アイコンを整列配置する為の短径の高さ" : SMValue(58) = 39 SMConst(59) = "SM_CXSIZE = 30" : SMName(59) = "タイトルバー内のビットマップの幅" : SMValue(59) = 30 SMConst(60) = "SM_CYSIZE = 31" : SMName(60) = "タイトルバー内のビットマップの高さ" : SMValue(60) = 31 'カーソル・マウス関係 SMConst(61) = "SM_CXCURSOR = 13" : SMName(61) = "カーソルのX方向の幅" : SMValue(61) = 13 SMConst(62) = "SM_CYCURSOR = 14" : SMName(62) = "カーソルのY方向の高さ" : SMValue(62) = 14 SMConst(63) = "SM_MOUSEPRESENT = 19" : SMName(63) = "マウスがある時=1" : SMValue(63) = 19 SMConst(64) = "SM_SWAPBUTTON = 23" : SMName(64) = "左右のマウスボタンの機能を切り替えている時=1" : SMValue(64) = 23 SMConst(65) = "SM_CXDOUBLECLK = 36" : SMName(65) = "ダブルクリック時のマウスの許容移動範囲のX方向の幅" : SMValue(65) = 36 SMConst(66) = "SM_CYDOUBLECLK = 37" : SMName(66) = "ダブルクリック時のマウスの許容移動範囲のY方向の幅" : SMValue(66) = 37 SMConst(67) = "SM_CMOUSEBUTTONS = 43" : SMName(67) = "マウスのボタン数、マウスがない時=0" : SMValue(67) = 43 SMConst(68) = "SM_CXDRAG = 68" : SMName(68) = "ドラッグを検出する矩形の幅" : SMValue(68) = 68 SMConst(69) = "SM_CYDRAG = 69" : SMName(69) = "ドラッグを検出する矩形の高さ" : SMValue(69) = 69 SMConst(70) = "SM_MOUSEWHEELPRESENT = 75" : SMName(70) = "ホイールマウスが繋がっている時0以外" : SMValue(70) = 75 'その他 SMConst(71) = "SM_DEBUG = 22" : SMName(71) = "USER.EXEがデバッグ版の時=1" : SMValue(71) = 22 SMConst(72) = "SM_SECURE = 44" : SMName(72) = "セキュリティがある時=1" : SMValue(72) = 44 SMConst(73) = "SM_NETWORK = 63" : SMName(73) = "ネットワークになっている時、最下位ビット=1" : SMValue(73) = 63 SMConst(74) = "SM_CLEANBOOT = 67" : SMName(74) = "Windowsを起動した方法 0=通常 1=Safe 2=Network+Safe" : SMValue(74) = 67 'ユーザー補助オプションのサウンド解説を使うにチェックが入っていると、1 SMConst(75) = "SM_SHOWSOUNDS = 70" : SMName(75) = "音声情報を表示する事を要求している時=1" : SMValue(75) = 70 SMConst(76) = "SM_SLOWMACHINE = 73" : SMName(76) = "処理速度の遅いマシンの時=1" : SMValue(76) = 73 SMConst(77) = "SM_DBCSENABLED = 42" : SMName(77) = "2バイト文字をサポートしている時=1" : SMValue(77) = 42 SMConst(78) = "SM_MIDEASTENABLED = 74" : SMName(78) = "アラビア語、ヘブライ語をサポートする時=1" : SMValue(78) = 74 SMConst(79) = "SM_CMETRICS = 83" : SMName(79) = "システムメトリックの数" : SMValue(79) = 83 SMConst(80) = "SM_RESERVED1 = 24" : SMName(80) = "予備1" : SMValue(80) = 24 SMConst(81) = "SM_RESERVED2 = 25" : SMName(81) = "予備2" : SMValue(81) = 25 SMConst(82) = "SM_RESERVED3 = 26" : SMName(82) = "予備3" : SMValue(82) = 26 SMConst(83) = "SM_RESERVED4 = 27" : SMName(83) = "予備4" : SMValue(83) = 27 End Sub |
3.GetSystemMetrics の定数及び定数値、取得結果、取得項目の解説 |
|
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |