Ho cercato in giro, e non ho trovato come avrei fatto questo da C#.C# - Invio di messaggi a Google Chrome dall'applicazione C#
Mi mancava di fare in modo ho potuto dire a Google Chrome di andare Forward, Indietro, aperta una nuova scheda, Chiudi scheda, Apri nuova finestra, e Chiudi finestra dal mio Applicazione C#.
ho fatto qualcosa di simile con WinAmp utilizzando
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
e pochi altri. Ma non so quale messaggio mandare o come trovare la finestra per passarlo o altro.
Quindi qualcuno potrebbe mostrarmi come inviare questi 6 comandi a Chrome da C#? grazie
MODIFICA: Ok, mi sto facendo votare, quindi forse non ero abbastanza chiaro, o le persone pensano che non ho provato a capirlo da solo.
Prima di tutto, non sono molto bravo con l'intera roba di DllImport. Sto ancora imparando come funziona.
Ho scoperto come fare la stessa idea in Winamp qualche anno fa e stavo guardando il mio codice. L'ho fatto in modo da poter saltare una canzone, tornare indietro, suonare, mettere in pausa e fermare winamp dal mio codice C#. Ho iniziato importando:
[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);
Quindi il codice che ho trovato utilizzava queste costanti per i messaggi che invio.
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;
Vorrei ottenere il hwnd (il programma per inviare il messaggio a) da:
IntPtr hwnd = FindWindow(m_windowName, null);
quindi vorrei inviare un messaggio a quel programma:
SendMessageA(hwnd, WM_COMMAND, WA_STOP, WA_NOTHING);
I Supponiamo che farei qualcosa di molto simile a questo per Google Chrome. ma non so quali dovrebbero essere alcuni di quei valori, e ho cercato su Google di trovare la risposta, ma non potevo, ed è per questo che ho chiesto qui. Quindi la mia domanda è come ottengo i valori per:
m_windowName e WM_COMMAND
e poi, i valori per i diversi comandi, avanti, indietro, nuova scheda, chiudi scheda, nuova finestra, chiudi finestra?
Sto guardando attraverso e non vedo nulla che possa aiutarmi a realizzare ciò che sto cercando di fare. Non voglio ricompilare Chrome o altro. Voglio solo essere in grado di inviare a Chrome un piccolo messaggio che dice "torna indietro" o qualsiasi altra cosa. Non voglio affatto cambiare Chrome. Fai tutto da C# – Joel