Tôi đã tìm kiếm xung quanh và tôi không tìm thấy cách tôi sẽ thực hiện việc này từ C#.C# - Gửi tin nhắn tới Google Chrome từ ứng dụng C#
Tôi đã muốn làm cho nó để tôi có thể yêu cầu Google Chrome để đi Chuyển, Trở lại, mở New Tab, Close Tab, mở cửa sổ mới và Đóng cửa sổ từ của tôi Ứng dụng C#.
tôi đã làm một cái gì đó tương tự với WinAmp sử dụng
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
và một vài người khác. Nhưng tôi không biết phải gửi thông điệp gì hoặc làm thế nào để tìm ra cửa sổ nào để chuyển nó đến, hoặc bất cứ thứ gì.
Vậy ai đó có thể chỉ cho tôi cách tôi gửi 6 lệnh đó đến Chrome từ C#? cảm ơn
EDIT: Ok, tôi bị bỏ phiếu, vì vậy có thể tôi chưa đủ rõ ràng hoặc mọi người cho rằng tôi không cố gắng tự mình tìm ra điều này.
Trước hết, tôi không thực sự tốt với toàn bộ công cụ DllImport. Tôi vẫn đang học cách nó hoạt động.
Tôi đã tìm cách thực hiện ý tưởng tương tự trong winamp một vài năm trước và tôi đã xem mã của mình. Tôi đã làm cho nó để tôi có thể bỏ qua một bài hát, quay lại, chơi, tạm dừng và dừng winamp từ mã C# của tôi. Tôi bắt đầu bằng cách nhập:
[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);
Sau đó, mã tôi đã sử dụng để sử dụng các hằng số này cho thư tôi gửi.
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;
tôi sẽ nhận được hwnd (chương trình để gửi tin nhắn đến) bằng cách:
IntPtr hwnd = FindWindow(m_windowName, null);
sau đó tôi sẽ gửi một thông điệp tới chương trình:
SendMessageA(hwnd, WM_COMMAND, WA_STOP, WA_NOTHING);
tôi giả sử rằng tôi sẽ làm một cái gì đó rất giống với điều này cho Google Chrome. nhưng tôi không biết một số giá trị đó nên là gì, và tôi googled xung quanh cố gắng tìm câu trả lời, nhưng tôi không thể, đó là lý do tại sao tôi hỏi ở đây. Vì vậy, câu hỏi của tôi là làm thế nào để tôi nhận được các giá trị cho:
m_windowName và WM_COMMAND
và sau đó, các giá trị cho các lệnh khác nhau, mong, lại, tab mới, đóng tab, cửa sổ mới, đóng cửa sổ?
Tôi đang xem xét, và tôi không thấy bất cứ điều gì sẽ giúp tôi hoàn thành những gì tôi đang cố gắng làm. Tôi không muốn biên dịch lại Chrome hay bất cứ thứ gì. Tôi chỉ muốn gửi cho Chrome một thông điệp nhỏ nói "quay lại" hoặc bất cứ điều gì. Tôi không muốn thay đổi Chrome chút nào. Làm tất cả từ C# – Joel