我有一个vb.net控制台项目,它启动了许多应用程序并在双显示器设置上移动并调整它们的大小(win 7)
除了我似乎无法获得可用的屏幕尺寸之外,一切都很棒。我的意图是,如果我知道屏幕区域是1000像素宽,那么id大小我的应用程序到它的1/3并且适合三个。
Screen.PrimaryScreen.Bounds Screen.PrimaryScreen.WorkingArea
声明未声明屏幕。我搜索了互联网,虽然有一些表格项目的解决方案我找不到任何控制台项目... 感谢
答案 0 :(得分:1)
我创建了一个简单的项目来演示如何在vb.net控制台应用程序中获取屏幕大小 我使用的代码是下一个:
Imports System.Windows.Forms
Module GetScreenSize
Sub Main()
Dim rectangle = Screen.PrimaryScreen.Bounds
Dim workingArea = Screen.PrimaryScreen.WorkingArea
Console.WriteLine("Bounds: Height: " & rectangle.Height & ", Width: " & rectangle.Width)
Console.WriteLine("WorkingArea: Height: " & workingArea.Height & ", Width: " & workingArea.Width)
Console.ReadKey()
End Sub
End Module
正如文森特在评论中提到的那样,你需要添加对System.Windows.Forms
的引用,因为它在控制台应用程序中没有默认引用。这是我在项目中的参考资料的图片:
我的输出是下一个:
界限:高度:1080,宽度:1920
WorkingArea:身高:1040,宽度:1920
为了向您提供更多帮助,我将解决方案上传到my GitHub repo
希望这可以解决您的问题。
答案 1 :(得分:0)
也许这会有所帮助。下面的“主要”是主表格的名称。
' center the form in the center of the users screen
' -------------------------------------------------
Dim r As Rectangle
If Main.Parent IsNot Nothing Then
r = Main.Parent.RectangleToScreen(Main.Parent.ClientRectangle)
Else
r = Screen.FromPoint(Main.Location).WorkingArea
End If
Dim x = r.Left + (r.Width - Main.Width) \ 2
Dim y = r.Top + (r.Height - Main.Height) \ 2
Main.Location = New Point(x, y)
答案 2 :(得分:0)
这样可以获得字符和像素的大小:
Imports System.Runtime.InteropServices
Module Module1
<StructLayout(LayoutKind.Sequential)>
Public Structure RECT
Public Left As Integer
Public Top As Integer
Public Right As Integer
Public Bottom As Integer
End Structure
<DllImport("user32.dll")>
Private Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
End Function
Sub Main()
Console.WriteLine(String.Format("Width: {0}", Console.WindowWidth))
Console.WriteLine(String.Format("Height: {0}", Console.WindowHeight))
Dim hWnd = Process.GetCurrentProcess().MainWindowHandle
Dim r As RECT
If GetWindowRect(hWnd, r) Then
Console.WriteLine(String.Format("Width: {0}", r.Right - r.Left))
Console.WriteLine(String.Format("Height: {0}", r.Bottom - r.Top))
End If
End Sub
End Module