tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル画面のリフレッシュレート
記事No3233
投稿日: 2006/03/04(Sat) 23:55
投稿者うらしまん
[OSのVer]:Windows XP SP2    [VBのVer]:VB Express 2005

初めて投稿します。
VisualBasicで画面のリフレッシュレートを取得できる方法があったら教えてください。
また、それと同期をとる方法(つまり書き換えのタイミングを知る方法)が有りましたら教えてくださ
い。

よろしくお願いします。
  

[ツリー表示へ]
タイトルRe: 画面のリフレッシュレート
記事No3235
投稿日: 2006/03/05(Sun) 02:06
投稿者YAS
うらしまんさん,こんばんは。

リフレッシュレートですが,Win32APIのGetDeviceCapsで取得できると思います。

....
GetDC,ReleaseDC,GetDeviceCapsのDllImport
....
        Const VREFRESH As Integer = 116
        Dim hDC As IntPtr = GetDC(0)
        MessageBox.Show("リフレッシュレート = " & GetDeviceCaps(hDC, VREFRESH) & "Hz")
        ReleaseDC(0, hDC)

GetDC(0)はデスクトップのデバイスコンテキストハンドルを取得することになります。

同期を取る方法はわかりません。たぶん,DirectXを使うことになると思います。

[ツリー表示へ]
タイトルRe^2: 画面のリフレッシュレート
記事No3236
投稿日: 2006/03/05(Sun) 20:46
投稿者うらしまん
YASさん。
ありがとうございます。

> ....
> GetDC,ReleaseDC,GetDeviceCapsのDllImport
> ....

私はこれまでVB6.0を使ってきて、これからVB2005に乗り換えようとしています。
VB2005では、まだAPIの呼び出しがうまくいかないのですが、なんとか勉強して解決します。

ありがとうございました。

[ツリー表示へ]
タイトルRe: 画面のリフレッシュレート
記事No3239
投稿日: 2006/03/06(Mon) 20:36
投稿者魔界の仮面弁士
> VisualBasicで画面のリフレッシュレートを取得できる方法があったら教えてください。
Win32_DisplayConfiguration クラスの DisplayFrequency プロパティで取得できますよ。
使うのは、System.Management 名前空間ですね。

また、Managed DirectX にも目を向けてみると、『リフレッシュレート』という語を含んだ
PresentParameters.FullScreenRefreshRateInHz プロパティであるとか、あるいは、
DisplayMode.RefreshRate なんてプロパティもあるようですが…こっちの使い方は知りません。


> また、それと同期をとる方法(つまり書き換えのタイミングを知る方法)が有りましたら教えてくださ
> い。
やった事が無いので、まったく知らないのですが…もしかしたら、GetRasterStatus メソッドで、
InVBlank の状態を見れば判断できるのかも知れません。(未確認)

GDNJ にあった NyaRuRu さんの投稿が参考になるかも。
hhttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=28142

[ツリー表示へ]
タイトルRe^2: 画面のリフレッシュレート
記事No3240
投稿日: 2006/03/07(Tue) 03:26
投稿者魔界の仮面弁士
> > VisualBasicで画面のリフレッシュレートを取得できる方法があったら教えてください。
> Win32_DisplayConfiguration クラスの DisplayFrequency プロパティで取得できますよ。

System.Management.DLL を参照設定して……たとえば、こんな感じ。


Imports System.Management
Partial Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim X As New ManagementObjectSearcher("SELECT * FROM Win32_DisplayConfiguration")
        For Each Y As ManagementObject In X.Get()
            TextBox1.Text = Y.Item("DisplayFrequency").ToString()
            Exit For
        Next
    End Sub
End Class

[ツリー表示へ]
タイトルRe^3: 画面のリフレッシュレート
記事No3246
投稿日: 2006/03/08(Wed) 00:11
投稿者うらしまん
できました!

ありがとうございました!

[ツリー表示へ]