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 に答える