廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 22139 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
oway
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x4 鮮花 x15
分享: 轉寄此文章 Facebook Plurk Twitter 版主評分 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[Basic][教學] [VB.NET 教學]VB.Net 2005 變換螢幕解析度語法範例
這是我不久前下載 VS2005 時使用 VB.Net 嘗試寫出來的功能,分享出來給各位參考使用,
希望對各位有用,如果各位覺得不錯,煩請賞我一朵花好嗎

下面的 Form 裡面,只有一個 Label 及兩個 Button 元件而已:
Public Class Form1

Private Const CCDEVICENAME As Short = 32
Private Const CCFORMNAME As Short = 32
Private Const DM_PELSWIDTH As Integer = &H80000
Private Const DM_PELSHEIGHT As Integer = &H100000
'更新螢幕掃瞄頻率常數
Private Const DM_DISPLAYFREQUENCY As Integer = &H400000

'宣告要使用的 API 函式
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Integer, ByVal iModeNum As Integer, ByRef lpDevMode As DEVMODE) As Boolean

'宣告要使用的 API 函式
Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (ByRef lpDevMode As DEVMODE, ByVal dwflags As Integer) As Integer

'定義要使用的變數結構
Private Structure DEVMODE
<VBFixedString(CCDEVICENAME), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=CCDEV ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容


此文章被評分,最近評分記錄
財富:100 (by codeboy) | 理由: 感謝您分享教學範例喔..^^



獻花 x2 回到頂端 [樓 主] From:台灣中華電信 | Posted:2006-06-19 22:33 |
chen9999
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

你確定是 "你自己寫的" ?

Option Explicit
Private Declare Function EnumDisplaySettings Lib "user32" Alias _
  "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _
  ByVal iModeNum As Long, lpDevMode As Any) As Long

Private Declare Function ChangeDisplaySettings Lib "user32" Alias _
  "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
          ByVal dwReserved As Long) As Long

Const EWX_REBOOT = 2       ' 重開機
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000

Const DISP_CHANGE_SUCCESSFUL = 0
Const DISP_CHANGE_RESTART = 1
Const CDS_UPDATEREGISTRY = 1

Private Type DEVMODE
  dmDeviceName As String * CCDEVICENAME
  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 * CCFORMNAME
  dmUnusedPadding As Integer
  dmBitsPerPel As Integer
  dmPelsWidth As Long
  dmPelsHeight As Long
  dmDisplayFlags As Long
  dmDisplayFrequency As Long
End Type
Private DevM As DEVMODE

Private Sub Command1_Click()
  Dim i As Long
  Dim b As Long
  Dim ans as Long
  Dim a As Long

  a = EnumDisplaySettings(0, 0, DevM) 'Initial Setting

  DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
  DevM.dmPelsWidth = 800   '設定成想要的解析度
  DevM.dmPelsHeight = 600
  b = ChangeDisplaySettings(DevM, 0) 'Changed Only this time
  If b = DISP_CHANGE_RESTART Then
    ans = MsgBox("要重開機設定才能完成,重開?", vbOKCancel)
    If ans = 1 Then
      b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
      'after this , Will Update in Registry
      Call ExitWindowsEx(EWX_REBOOT, 0)
    End If
  Else
    If b <> DISP_CHANGE_SUCCESSFUL Then
      Call MsgBox("設定有誤", vbCritical)
    End If
  End If
End Sub

變數名稱都相同.......不太可能吧
我想我應該不用說出原文在那, 除非那個原文是你做的.


獻花 x0 回到頂端 [1 樓] From:歐洲 | Posted:2006-06-19 23:47 |
oway
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x4 鮮花 x15
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用chen9999於2006-06-19 23:47發表的 :
你確定是 "你自己寫的" ?

變數名稱都相同.......不太可能吧
我想我應該不用說出原文在那, 除非那個原文是你做的.
您貼的那一篇我在大陸網站也有看過,好多地方都有的,
我並沒有說我是原創,我只是說我使用 VB.Net 2005 嘗試寫出來,將它分享出來而已,
這功能的教學資料在網路上許多地方都找的到的,如下面的網址都是:

http://www.microsoft.com/china...lumn/28.mspx
http://www.aspxboy.com/pri...fault.aspx
http://www.faq-it.org/archives/vb/97a...3266830b0fcc.php

但那些都不是 VB.Net 2005 的範例,雖然語法差不多,但還是沒有完全一樣,
因此我分享的是我改成 2005 能用的版本。

補充:
ChangeDisplaySettings() 是一個 API 而已,原創是微軟,從 Win98 的時候就存在,
VB 的用法較複雜,相較之下,BCB 的用法就簡單多了,如下幾行就可以達成了:
DEVMODE DevM;
EnumDisplaySettings(0, 0, &DevM);
DevM.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
DevM.dmPelsWidth = 1024; // 設定解析度
DevM.dmPelsHeight = 768;
ChangeDisplaySettings(&DevM, 0);

看來我還是不要貼 VB 的範例好了,因為網路上太好找了。


獻花 x1 回到頂端 [2 樓] From:台灣中華電信 | Posted:2006-06-20 01:32 |
jansonshie
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

但這都針對一個螢幕,哪如何變更第二台螢幕的解析度呢?


獻花 x0 回到頂端 [3 樓] From:台灣中華電信 | Posted:2010-01-06 15:20 |
k7138
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x5
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

這真是對我太有用了


獻花 x0 回到頂端 [4 樓] From:臺灣中華電信股份有限公司 | Posted:2011-03-25 06:50 |
zsx123665 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x16 鮮花 x95
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

複製程式
    Private Sub ChangeDisp(ByRef iWidth As Single, ByRef iHeight As Single)
        Dim blnWorked As Boolean
        Dim DevM As New DEVMODE
        blnWorked = EnumDisplaySettings(0, 0, DevM)
        With DevM
            .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY
            .dmPelsWidth = iWidth
            .dmPelsHeight = iHeight
            '.dmDisplayFrequency = 75 '更新頻率定為 75
        End With
        Call ChangeDisplaySettings(DevM, 0)
    End Sub
建議:Dim DevM As DEVMODE
改成:Dim DevM As New DEVMODE

避免發生 Null


獻花 x0 回到頂端 [5 樓] From:臺灣亞太線上服務股份有限公司 | Posted:2013-05-15 12:45 |
kong421
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感謝你分享,這對我很有用


獻花 x0 回到頂端 [6 樓] From:未知地址 | Posted:2013-07-18 14:05 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.055602 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言