1

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

我正在屏幕顶部制作一个工具栏,带有一个打开开始菜单的按钮,但我希​​望开始菜单在按钮下方而不是任务栏附近打开。我正在使用这个问题的答案中提供的代码,它只发送所需的按键 (LWin) 来打开开始菜单。

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

4

1 回答 1

2

编辑:显然,这仅适用于英文版的 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);
}

这是SO 上的这个问题和针对 C# 修改的这篇 MSDN 文章的混合体。同样,我不确定代码有多好,但它可以完成工作。

于 2013-03-05T12:33:09.060 回答