我正在研究C#控制檯應用程序,並使用Console.WindowHeight增加了窗口的高度,但現在窗口的底部趨於在應用程序第一次打開時熄滅屏幕。重新定位控制檯窗口相對於屏幕
在控制檯應用程序中,有沒有辦法設置控制檯窗口相對於屏幕的位置?我查看了Console.SetWindowPosition,但這隻會影響控制檯窗口相對於「屏幕緩衝區」的位置,這似乎並不是我所追求的。
感謝您的幫助!
我正在研究C#控制檯應用程序,並使用Console.WindowHeight增加了窗口的高度,但現在窗口的底部趨於在應用程序第一次打開時熄滅屏幕。重新定位控制檯窗口相對於屏幕
在控制檯應用程序中,有沒有辦法設置控制檯窗口相對於屏幕的位置?我查看了Console.SetWindowPosition,但這隻會影響控制檯窗口相對於「屏幕緩衝區」的位置,這似乎並不是我所追求的。
感謝您的幫助!
這裏,它使用的窗口句柄和進口SetWindowPos()
本地函數來實現你正在尋找一個解決方案:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleWindowPos
{
static class Imports
{
public static IntPtr HWND_BOTTOM = (IntPtr)1;
// public static IntPtr HWND_NOTOPMOST = (IntPtr)-2;
public static IntPtr HWND_TOP = (IntPtr)0;
// public static IntPtr HWND_TOPMOST = (IntPtr)-1;
public static uint SWP_NOSIZE = 1;
public static uint SWP_NOZORDER = 4;
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern IntPtr SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, uint wFlags);
}
class Program
{
static void Main(string[] args)
{
var consoleWnd = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
Imports.SetWindowPos(consoleWnd, 0, 0, 0, 0, 0, Imports.SWP_NOSIZE | Imports.SWP_NOZORDER);
System.Console.ReadLine();
}
}
}
代碼控制檯窗口移動到屏幕的左上角,不改變ž也不改變窗口的寬度/高度。
非常感謝您的回覆!由於某種原因,這還不適合我;即窗口仍然在屏幕的中間區域開放。 – fyodorfranz
是的,但它應該「跳」到左上角。這就是它爲我做的。你有沒有在SetWindowPos()之前設置一個斷點? – BitTickler
我這樣做順便說一句。在Windows 7 x64上使用VS2015社區版,Debug |任何CPU構建配置。 – BitTickler
在本地控制檯應用程序中,序列爲:''HWND consoleWnd = GetConsoleWindow(); SetWindowPos(consoleWnd,....);''現在你所要做的就是看你是否在.NET環境中找到具有相似名稱的函數。最壞的情況下,你仍然可以調用本地的win32函數。 – BitTickler
http://stackoverflow.com/questions/1277563/how-do-i-get-the-handle-of-a-console-applications-window給出關於「如何獲得窗口句柄」的指針。 – BitTickler
在Windows 10中運行的解決方案如下:http://stackoverflow.com/questions/2888824/console-setwindowposition-centered-each-and-every-time – scar80