Page 651 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼画面の解像度 Homes 04/6/1(火) 20:16 ┗Re:画面の解像度 Homes 04/6/2(水) 11:00 ┗Re:画面の解像度 Homes 04/6/2(水) 14:55 ─────────────────────────────────────── ■題名 : 画面の解像度 ■名前 : Homes ■日付 : 04/6/1(火) 20:16 -------------------------------------------------------------------------
Accessとは直接関係無いかもしれませんが、 よろしくお願いします。 画面の解像度が 800 X 600 の状態でアクセスを 起動する際に 1024 X 768 に、終了する際には元に戻す 様にしたいのですが、上手くいきません。 Access VBAで作ってあるAPIサンプルを使ってみたのですが、 まったく動作しませんでした。 http://www.loadsystem.net/api/lsapi14.txt (参考にさせて頂いたソースです) 使用したい環境は WindowsNT4.0・Windows2000・WindowsXP Access2000 です。 尚、上記端末の環境は 1024 X 768 にも対応しています。 申し訳ありませんがご教授お願い致します。 |
http://excelfactory.cool.ne.jp/ExcelVBATips/api/api_2.htm すみません・・・。参考にしたソースですが、 間違ってました(汗) 元はExcelのソースみたいなのですが、Accessでも使えるかと思い やってみましたが、できませんでした。 APIを使って解像度の変更を実現されている方いらっしゃいましたら ご教授お願い致します。 |
自己レスです。 下記にて実現可能となりました。 無理矢理の部分もありますが参考までとおもいまして記述致します。 動作と致しましては、起動時にモニタ解像度を 1024 X 768 に 終了時に 800 X 600 に変更致します。 Public Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As String, ByVal dwModeNum As Long, lpDevMode As DEVMODE) As Long Public Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As DEVMODE, ByVal dwflags As Long) As Long Public Const CCHDEVICENAME = 32 Public Const CCHFORMNAME = 32 Public Type DEVMODE dmDeviceName As String * CCHDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCHFORMNAME dmUnusedPadding As Integer dmBitsPerPel As Long dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type Public ChangeType As Integer Sub Disp_Change_Open() 'ディスプレイ解像度を 1024 X 768 :16ビット:リフレッシュレートを60 に変更します。 '【注意】モニタが実際に表示できる解像度・ビット数・リフレッシュレートを指定して下さい。 '間違うとモニタが真っ黒になり、表示されなくなります。 Dim DEV As DEVMODE Dim DataCount As Integer DataCount = 0 Do Until EnumDisplaySettings(vbNullString, DataCount, DEV) = 0 If DEV.dmDisplayFrequency = 60 And DEV.dmBitsPerPel = 16 And _ DEV.dmPelsWidth = 1024 And DEV.dmPelsHeight = 768 Then ChangeType = DataCount End If DataCount = DataCount + 1 Loop If EnumDisplaySettings(vbNullString, ChangeType, DEV) = 1 Then Call ChangeDisplaySettings(DEV, 0) End If End Sub Sub Disp_Change_Close() 'ディスプレイ解像度を 800 X 600 :16ビット:リフレッシュレートを60 に変更します。 '【注意】モニタが実際に表示できる解像度・ビット数・リフレッシュレートを指定して下さい。 '間違うとモニタが真っ黒になり、表示されなくなります。 Dim DEV As DEVMODE Dim DataCount As Integer DataCount = 0 Do Until EnumDisplaySettings(vbNullString, DataCount, DEV) = 0 If DEV.dmDisplayFrequency = 60 And DEV.dmBitsPerPel = 16 And _ DEV.dmPelsWidth = 800 And DEV.dmPelsHeight = 600 Then ChangeType = DataCount End If DataCount = DataCount + 1 Loop If EnumDisplaySettings(vbNullString, ChangeType, DEV) = 1 Then Call ChangeDisplaySettings(DEV, 0) End If End Sub 上のソースはコピペでも動作するとは思うのですが、解像度等注意して 行ってくださいね。 もう少し調べればエラーの際は元に戻すといった処理も実現できるのではと 思ってはいるのですが・・・。 ご迷惑をお掛けして申し訳ありませんでした。 |