■98686 |
仮想ディスプレイの座標を取得する方法 |
□投稿者/ 餃子 -(2021/12/17(Fri) 19:17:51)
| 分類:[.NET 全般]
VB.NET2015を使用しております。
マルチモニターで且つスケーリングがディスプレイ毎に異なる環境で フォームのスクリーンショットを取得するために フォームのある位置を取得したいと考えています。
仮想ディスプレイと呼ばれるものなので、
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/1bfd425f-b153-4079-bb51-8d525dc2937b/35079259681239812514124911247912487124511247312503125241245212?forum=vcgeneralja http://www.vbaccelerator.com/home/vb/tips/Working_with_Multiple_Monitors/article.html
これらのページにあるように、 EnumDisplayMonitorsを使えば良いのではないかと思います。
<DllImport("user32.dll")> Private Shared Function EnumDisplayMonitors(ByVal hdc As IntPtr, ByVal lprcClip As IntPtr, ByVal lpfnEnum As EnumMonitorsDelegate, ByVal dwData As IntPtr) As Boolean End Function
<StructLayout(LayoutKind.Sequential)> Public Structure Rect Private Left As Integer, Top As Integer, Right As Integer, Bottom As Integer End Structure
Delegate Function EnumMonitorsDelegate(hMonitor As IntPtr, hdcMonitor As IntPtr, ByRef lprcMonitor As Rect, dwData As IntPtr) As Boolean
Sub main()
EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, AddressOf EnumMonitorsDelegate, IntPtr.Zero)
End Sub
こんな感じでコードを書いてみたのですが、
エラー BC30577 'AddressOf' オペランドはメソッドの名前でなければなりません。かっこは不要です。 というエラーが出てしまいます、
どのようにすれば、エラーが出なくなりますか?
|
|