打开程序旁边的开始菜单?

时间:2013-03-05 11:32:13

标签: c# startmenu

我一直在研究如何以编程方式打开“开始”菜单,但问题是我希望它在我正在创建的应用程序旁边打开它。

我正在屏幕顶部创建一个工具栏,其中有一个用于打开开始菜单的按钮,但我希​​望开始菜单在按钮下方而不是在任务栏附近打开。我正在使用this question答案中提供的代码,该代码仅发送所需的按键(LWin)以打开“开始”菜单。

这在C#中是否可行?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:1)

编辑:显然,这仅适用于英文版Windows,因为每个翻译中的“开始菜单”都不同。但这仍然有用(只要Windows安装在英语中)。

我明白了!这有效,但我不知道它有多漂亮:

public partial class Form1 : Form {
    private void button1_Click(object sender, EventArgs e) {
        int ShowCmd = 5;

        MoveWindow(FindWindow("DV2ControlHost", "Start menu"), X_POS, Y_POS, WIDTH_HERE, HEIGHT_HERE, false);
        ShowWindow(FindWindow("DV2ControlHost", "Start menu"), ShowCmd);
    }

    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool MoveWindow(IntPtr hWnd, int x, int y, int nWidth, int nHeight, bool bRepaint);
}

这是针对C#修改的this question here on SOthis MSDN article的混合。再一次,我不确定代码有多好,但它完成了工作。