【发布时间】:2011-09-10 03:59:18
【问题描述】:
我一直在尝试调整桌面工作区(窗口最大化的区域)的大小。我找到了所需的 API,但似乎无法调整工作区的大小。它什么都不做。
我使用的是 Windows 7 Ultimate x64,所以我也尝试在 x64“模式”下编译它,但仍然没有运气。有人可以推动我朝着正确的方向前进吗?
这是我目前得到的:
[DllImport("user32.dll", EntryPoint = "SystemParametersInfoA")]
private static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, IntPtr lpvParam, Int32 fuWinIni);
private const Int32 SPIF_SENDWININICHANGE = 2;
private const Int32 SPIF_UPDATEINIFILE = 1;
private const Int32 SPIF_change = SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE;
private const Int32 SPI_SETWORKAREA = 47;
private const Int32 SPI_GETWORKAREA = 48;
public struct RECT
{
public Int32 Left;
public Int32 Right;
public Int32 Top;
public Int32 Bottom;
}
private static int SetWorkspace(RECT oRECT)
{
IntPtr ptr = IntPtr.Zero;
ptr = Marshal.AllocHGlobal(Marshal.SizeOf(oRECT));
Marshal.StructureToPtr(oRECT, ptr, true);
return SystemParametersInfo(SPI_SETWORKAREA, Marshal.SizeOf(oRECT), ptr, SPIF_change);
}
【问题讨论】:
-
您到底为什么要调用该函数的 ASCII 版本,而不是宽版本?
-
试试这个:SystemParametersInfo(SPI_SETWORKAREA, 1, &NewRect, SPIF_SENDCHANGE);
标签: c# .net windows winapi pinvoke