我从c#打开一个Excel(2003)应用程序。我希望该用户无法更改其大小(它已打开最大化),因此系统菜单和最小化/最大化按钮将被禁用甚至隐藏。 谢谢你的帮助!
答案 0 :(得分:12)
以下是代码:
internal static class Utilities
{
[DllImport("user32.dll")]
internal extern static int SetWindowLong(IntPtr hwnd, int index, int value);
[DllImport("user32.dll")]
internal extern static int GetWindowLong(IntPtr hwnd, int index);
internal static void HideMinimizeAndMaximizeButtons(IntPtr hwnd)
{
const int GWL_STYLE = -16;
const long WS_MINIMIZEBOX = 0x00020000L;
const long WS_MAXIMIZEBOX = 0x00010000L;
long value = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, (int)(value & ~WS_MINIMIZEBOX & ~WS_MAXIMIZEBOX));
}
}
如Daniel Mošmondor's answer中所述,您需要找到Excel Windows句柄,然后以这种方式调用上面的代码:
Utilities.HideMinimizeAndMaximizeButtons(windowHandle);
N.B。
也许,根据您启动Excel流程的方式,您可能已经拥有流程或窗口句柄,因此只需使用它而无需调用Process.GetProcessesByName(...) / Process.GetProcesses()
修改强>
如果您使用以下命令启动Excel应用程序:
ApplicationClass _excel = new ApplicationClass();
只需使用以下代码:
IntPtr windowHandle = new IntPtr(_excel.Hwnd);
Utilities.HideMinimizeAndMaximizeButtons(windowHandle);
答案 1 :(得分:1)
为了进行测试,首先创建将用作Excel模拟的应用程序,以便从“其他”应用程序的角度看待您正在执行此操作。一切正常后,切换到真正的Excel。