我一直在研究如何以编程方式打开“开始”菜单,但问题是我希望它在我正在创建的应用程序旁边打开它。
我正在屏幕顶部创建一个工具栏,其中有一个用于打开开始菜单的按钮,但我希望开始菜单在按钮下方而不是在任务栏附近打开。我正在使用this question答案中提供的代码,该代码仅发送所需的按键(LWin)以打开“开始”菜单。
这在C#中是否可行?如果是这样,我该怎么做?
答案 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 SO和this MSDN article的混合。再一次,我不确定代码有多好,但它完成了工作。