私は探し回っていますが、C# からこれを行う方法が見つかりませんでした。
Google Chrome に、C# アプリケーションからForward、Back、Open New Tab、Close Tab、Open New Window、およびClose Windowに移動するように指示できるようにしたかったのです。
私はWinAmpで似たようなことをしました
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
他にもいくつかあります。しかし、どのメッセージを送信するか、どのウィンドウに渡すかを見つける方法などはわかりません。
では、C# から Chrome にこれら 6 つのコマンドを送信する方法を教えてもらえますか? ありがとう
編集:わかりました、私は投票されていないので、おそらく私は十分に明確ではなかったか、人々は私が自分でこれを理解しようとしなかったと思っています.
まず第一に、私は DllImport 全体があまり得意ではありません。私はまだそれがどのように機能するかを学んでいます。
数年前にwinampで同じアイデアを実行する方法を見つけ、自分のコードを見ていました. C# コードから、曲をスキップしたり、戻ったり、再生したり、一時停止したり、winamp を停止したりできるようにしました。私はインポートすることから始めました:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindow([MarshalAs(UnmanagedType.LPTStr)] string lpClassName, [MarshalAs(UnmanagedType.LPTStr)] string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SendMessageA(IntPtr hwnd, int wMsg, int wParam, uint lParam);
[DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern int GetWindowText(IntPtr hwnd, string lpString, int cch);
[DllImport("user32", EntryPoint = "FindWindowExA")]
private static extern int FindWindowEx(int hWnd1, int hWnd2, string lpsz1, string lpsz2);
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
次に、これを使用することがわかったコードは、送信するメッセージにこれらの定数を使用しました。
const int WM_COMMAND = 0x111;
const int WA_NOTHING = 0;
const int WA_PREVTRACK = 40044;
const int WA_PLAY = 40045;
const int WA_PAUSE = 40046;
const int WA_STOP = 40047;
const int WA_NEXTTRACK = 40048;
const int WA_VOLUMEUP = 40058;
const int WA_VOLUMEDOWN = 40059;
const int WINAMP_FFWD5S = 40060;
const int WINAMP_REW5S = 40061;
次の方法でhwnd (メッセージを送信するプログラム) を取得します。
IntPtr hwnd = FindWindow(m_windowName, null);
次に、そのプログラムにメッセージを送信します。
SendMessageA(hwnd, WM_COMMAND, WA_STOP, WA_NOTHING);
これと非常に似たようなことを Google Chrome で行うと思います。しかし、これらの値のいくつかがどうあるべきかわかりません。答えを見つけようとグーグルで検索しましたが、できませんでした。そのため、ここで質問しました。したがって、私の質問は、次の値を取得する方法です。
m_windowNameとWM_COMMAND
次に、さまざまなコマンドの値forward、back、new tab、close tab、new window、close window ?