Я искал вокруг, и я не нашел, как я мог бы сделать это из C #.
Я хотел сделать так, чтобы я мог указать Google Chrome перейти Вперед , Назад , Открыть новую вкладку , Закрыть вкладку , Открыть новое окно и Закрыть окно из моего приложения на C #.
Я сделал нечто подобное с WinAmp, используя
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
и несколько других. Но я не знаю, какое сообщение отправить или как найти, в какое окно его передать или что-то еще.
Так может кто-нибудь показать мне, как я отправлю эти 6 команд в Chrome из C #? спасибо
EDIT:
Хорошо, за меня проголосовали, так что, возможно, я не был достаточно ясен, или люди предполагают, что я не пытался выяснить это самостоятельно.
Во-первых, я не очень хорош со всем, что связано с DllImport. Я все еще учусь, как все это работает.
Я нашел, как реализовать ту же идею в winamp несколько лет назад, и я смотрел на свой код. Я сделал это, чтобы пропустить песню, вернуться назад, воспроизвести, приостановить и остановить winamp из своего кода C #. Я начал с импорта:
[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
, а затем, значения для различных команд, вперед , назад , новая вкладка , закрыть вкладку , новое окно , закрыть окно ?