当年有个叫 Start Charming 的工具可使得 Windows 8 的开始屏幕变成非全屏幕显示,我对其的实现相当感兴趣, 于是拿起熟悉的 IDA Pro, ILSpy 和 Spy++ 稍微进行了一些探索,然后发现了相关原理并在远景论坛发了个贴, 当年的远景论坛其实还是很有技术力的,于是我和一个叫 KeBugCheckEx 景友又进行了一些深入的讨论, 当时的我感觉受益匪浅,于是我打算把当时讨论的内容稍微整理一下,于是就有了这篇文章。
修改 Windows 8.1 中修改开始屏幕的大小的技巧
由于 Windows 8.1 的开始屏幕对应的 Win32 窗口类名为 ImmersiveLauncher,于是我们可以使用 FindWindow API 通过窗口类名获取窗口句柄,然后就可以使用 MoveWindow 或者 SetWindowPos 之类的 API 去修改 Windows 8.1 的开始屏幕的显示位置,于是就可以顺理成章地达成本文的目的。
[DllImport("user32.dll", EntryPoint = "MoveWindow")] publicstaticexternintMoveWindow(IntPtr hwnd, int x, int y, int nWidth, int nHeight, bool bRepaint);
staticvoidMain(string[] args) { Rectangle rect = Screen.PrimaryScreen.Bounds;