打开程序旁边的开始菜单

本文关键字:开始 菜单 打开程序 | 更新日期: 2023-09-27 18:02:33

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

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

这在c#中可能吗?如果有,我该怎么做?

打开程序旁边的开始菜单

EDIT:显然,这只适用于英文版本的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文章的混合。同样,我不确定代码有多好,但它完成了工作。