나는 내 자신의 질문에 어리석게 대답하지만 마이클의 힌트 덕분에 적절한 C# code sample을 찾았습니다.
using System;
using System.Runtime.InteropServices;
public class WorkArea
{
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint="SystemParametersInfoA")]
private static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, IntPtr lpvParam, Int32 fuWinIni);
private const Int32 SPI_SETWORKAREA = 47;
public WorkArea(Int32 Left,Int32 Right,Int32 Top,Int32 Bottom)
{
_WorkArea.Left = Left;
_WorkArea.Top = Top;
_WorkArea.Bottom = Bottom;
_WorkArea.Right = Right;
}
public struct RECT
{
public Int32 Left;
public Int32 Right;
public Int32 Top;
public Int32 Bottom;
}
private RECT _WorkArea;
public void SetWorkingArea()
{
IntPtr ptr = IntPtr.Zero;
ptr = Marshal.AllocHGlobal(Marshal.SizeOf(_WorkArea));
Marshal.StructureToPtr(_WorkArea,ptr,false);
int i = SystemParametersInfo(SPI_SETWORKAREA,0,ptr,0);
}
}
주위에는 여러 가지 방법이 있으므로 _perfectly_ 할 수는 없다고 말했을 것입니다. 예를 들어, 전체 화면 및 키오스크 및 DirectX 응용 프로그램은이를 무시합니다. 하지만 그는 "작업 표시 줄과 같은"응용 프로그램을 만들었으므로 작업 표시 줄과 동일한 해결 방법이 완벽하게 적합하다는 것을 깨달았습니다. –
그는 특히 "최대화 된 창"이라고 말했고 창을 최대화하면이 설정을 존중합니다. DX로 점프하지 않고도 작업 영역 바깥에 창을 수동으로 배치 할 수 있습니다. – Michael