• ベストアンサー

ディスプレイの拡大率取得

コントローパネルのディスプレイから、「デスクトップ上のテキスト~~縮小拡大」の処 小 100% 中 125% 大 150% で変更ができますが、この拡大率をVBで取得する方法を教えて下さい。 アクセス2013 VBA使用です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

すみません、WindowsXPの時は問題なかったのですが、 7 で試すと、96 から変わりませんね。。。。 (Win7 64bit Access2010 32bit で検証) API 版ですがこちらはどうですか?(当方では可) こちらも標準モジュールにコピペです。 Private Const LOGPIXELSX = 88 Private Const LOGPIXELSY = 90 Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetDC Lib "user32" _ (ByVal hWnd As Long) As Long Private Declare Function GetDeviceCaps Lib "gdi32" _ (ByVal hdc As Long, ByVal nIndex As Long) As Long Private Declare Function ReleaseDC Lib "user32" _ (ByVal hWnd As Long, ByVal hdc As Long) As Long Public Function Are2() As Long Dim hWndDesk As Long Dim hDCDesk As Long Dim logPix As Long On Error GoTo Err1: hWndDesk = GetDesktopWindow() hDCDesk = GetDC(hWndDesk) '画面のフォントサイズを取得 Are2 = GetDeviceCaps(hDCDesk, LOGPIXELSX) Call ReleaseDC(hWndDesk, hDCDesk) Exit Function Err1: 'エラーの場合は、-1を返す Are2 = -1 End Function

situmonnsya
質問者

お礼

こちらは、Win8.1 64bit Access2013 32bit ですが、ご教授頂いたままのコピペで、正常な拡大率を取得することができました。 拡大率=are2/96 感謝、感謝です。 ありがとうございます。

その他の回答 (1)

回答No.1

少し手抜きですが標準モジュールにて。 Function are() As Integer Dim wmi Dim monitorItems Dim m Set wmi = GetObject("winmgmts:\\.\root\cimv2") Set monitorItems = wmi.ExecQuery("Select * From Win32_DesktopMonitor") For Each m In monitorItems are = m.PixelsPeryLogicalInch Next Set monitorItems = Nothing: Set wmi = Nothing End Function 96DPIがデフォルト100%なので、125・150%のそれぞれのDPI値はそちらで確認を。

situmonnsya
質問者

補足

コントローパネルで拡大率を125%に変えて試しました。 返って来るare値は100%の場合と同じで、96です。 もう少し、ご教授願えれば幸です。

関連するQ&A

  • 拡大率・縮小率 IE9

    IE9を使っていますが、右下のステータスバー(?)に 現在の文字の大きさや拡大率・縮小率を表示させる事は出来ないのですか? 画像を添付した通り、そのような表示は一切ありません。 IE9以前は、 「拡大レベルの変更」みたいな文字があったような気がします。

  • 拡大縮小を直せない

    PC(OS:windows10)のディスプレイの拡大縮小がバグりました。 設定でディスプレイをいじろうとしましたが不可能でした→動画詳細 ショートカットキー(コマンドキー+ホイール)を試してみましたが、 デスクトップのアイコンが拡大縮小するだけでした。 デスクトップの拡大縮小を初期化する方法を教えてください! ↓詳細動画 https://youtu.be/5N-hw3gyJfM ※OKWAVEより補足:「富士通FMV」についての質問です。

  • ディスプレイ拡大縮小でレイアウトが崩れる

     Win11(10からアップグレード)のノートPCのディスプレイとPC内ファイルについての質問です。  これまで、15.6インチのディスプレイをフルHD(推奨)で、拡大縮小を125%(推奨)から100%に変更して使っていました。  このPCを別の人が使うようになり、見づらそうだったので、125%(推奨)に戻しました。  すると、それ以降だと思うのですが、幾つかのエクセルファイル等のレイアウトが崩れてしまった様な気がします。  具体的には、枠などが大きく表示されページに収まらず、印刷しても実際にその様に印刷されます。  ディスプレイの拡大縮小で、ドキュメントの実際のレイアウトに影響が出るのでしょうか?

  • 写真を印刷する時の縮小率。拡大率

    例えば、A4サイズの写真をL版サイズに縮小して印刷する場合の縮小率、等各種サイズ(拡大。縮小率)の変更を教えて下さい、一覧表になっている早見表がよいのですが。宜しく。

  • VB.NET フォームの縮小拡大について

    お世話になります。 VB.NETの初心者です。 フォームの縮小拡大について悩んでおります。 皆様のご意見を是非頂きたいです。 ・やりたいこと 画面のDPIによって画面表示は合わせかつ、ユーザがフォームにカーソルを当ててマウスで拡大、縮小できるようにしたい。 ・実施内容 VB.NETでフォームを作成し、そこにボタンが追加しました。 Windows7のコントロールパネルのデスクトップのカスタマイズ⇒ディスプレイのパーセントで 小:100%、中:125%のどちらでもフォームが正しく表示されるように、フォームのプロパティのAutoSizeをTrue、AutoScaleModel=DPIにしました。さらにユーザがフォームの縮小拡大をマウスでできるよう、AutoSizeModeをGrowOnlyにしました。 ・結果 フォームにあるボタンの端まで行くと、それ以上は縮小できず、拡大しても、フォームだけ大きくなり、ボタンは初期表示のサイズのまま変わりません。 ・質問 上記の「やりたいこと」を実現するにはフォームのプロパティの設定だけは不可能でしょうか。 また、実施するにはどのような方法をすればよいでしょうか。 皆様のお力を貸してください。 よろしくお願い致します。

  • テキストボックスの縮小、拡大

    Win XP、 word2003で テキストボックスの中に入力した文字も同時に縮小、拡大したいのですが、枠だけしか縮小、拡大せず、文字の大きさはそのままです。このテキストボックスを図に変換すれば縮小、拡大できると思われますが如何でしょうか。そのほかにも方法があれば共にこの手順をお教え下さい。 よろしくお願いいたします。

  • コンピュータ名の取得及びログオンIDの取得

    アクセスVBAで自分のコンピュータ名を取得したいのですが、解かる方教えてください。 また、VBで、WINDOWSログオンIDを取得する方法を教えてください。

  • ディスプレイについて

    Windows2000ProがインストールされていたPCを中古で購入しました。 しかしOSをWindowsNTに変更しようと思い、インストールしたら デスクトップがディスプレイの中央に小さく表示されてるようになりました。 (通常起動したときに表示される、「スタート」ボタンなどが表示されている画面 がディスプレイの中央に縮小されて表示) なので、購入した状態に戻そうと思い、Windows2000を再インストール しなおしたのですが、画面表示は縮小されたままになってしまいました。 どのようにしたら、デスクトップ画面が通常のようにディスプレイ全体に 表示されるようになるのでしょうか。 機種は、DELL INSPIRON 4000 です。 どなたか回答をよろしくお願いします。

  • Windowsの拡大縮小表示は125%で良い?

    Windows11PCを使用中。31.5インチの4Kモニターを使用していますが、久々にテレビから4KモニターにDP接続しなおしました。Windows11の設定→システム→ディスプレイ→拡大/縮小(テキスト、アプリ、その他の項目のサイズを変更します)の推奨は150%ですが、それだと文字が大きすぎます。125%にしておいたのですが、以前は150%だったのかもしれません。ここを皆さんは何パーセントにしていますか?ChromiumEdge等のブラウザーの外観、ページのズームは100%にしておりますが、これだと文字が小さいなと思っておりますが、ブラウザーの文字は何パーセントに設定していらっしゃいますか?教えてください。

  • AS3の拡大と縮小について

    下記の外部ASで試しているのですが比率を維持して拡大されます。 予想では横は100%で縦に300%伸びて表示されるはずなのですがなぜ比率が 維持されるのでしょうか? また、縦だけとこ横だけ拡大や縮小するにはどう書けばいいのでしょうか? package { import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends MovieClip { private var mc:MovieClip; private var text:TextField; public function Main():void { mc = new MovieClip(); addChild(mc); text = new TextField(); text.text = "テスト"; text.scaleX = 1; text.scaleY = 3; mc.addChild(text); } } }

    • ベストアンサー
    • Flash