title: C# - Sending messages to Google Chrome from C# application
body: <p>I've been searching around, and I haven't found how I would do this from C#.</p>
  
  <p>I was wanting to make it so I could tell Google Chrome to go <strong>Forward</strong>, <strong>Back</strong>, <strong>Open New Tab</strong>, <strong>Close Tab</strong>, <strong>Open New Window</strong>, and <strong>Close Window</strong> from my C# application.</p>
  
  <p>I did something similar with WinAmp using</p>
  
  <pre><code>[DllImport("user32", EntryPoint = "SendMessageA")]
  private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
  </code></pre>
  
  <p>and a a few others.  But I don't know what message to send or how to find what window to pass it to, or anything. </p>
  
  <p>So could someone show me how I would send those 6 commands to Chrome from C#?  thanks</p>
  
  <p>EDIT:
  Ok, I'm getting voted down, so maybe I wasn't clear enough, or people are assuming I didn't try to figure this out on my own.</p>
  
  <p>First off, I'm not very good with the whole DllImport stuff.  I'm still learning how it all works.</p>
  
  <p>I found how to do the same idea in winamp a few years ago, and I was looking at my code.  I made it so I could skip a song, go back, play, pause, and stop winamp from my C# code.  I started by importing:</p>
  
  <pre><code>    [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);
  </code></pre>
  
  <p>Then the code I found to use this used these constants for the messages I send.</p>
  
  <pre><code>    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;
  </code></pre>
  
  <p>I would get the <em>hwnd</em> (the program to send the message to) by:</p>
  
  <pre><code>IntPtr hwnd = FindWindow(m_windowName, null);
  </code></pre>
  
  <p>then I would send a message to that program:</p>
  
  <pre><code>SendMessageA(hwnd, WM_COMMAND, WA_STOP, WA_NOTHING);
  </code></pre>
  
  <p>I assume that I would do something very similar to this for Google Chrome.  but I don't know what some of those values should be, and I googled around trying to find the answer, but I couldn't, which is why I asked here.  So my question is how do I get the values for:</p>
  
  <p><strong>m_windowName</strong> and <strong>WM_COMMAND</strong></p>
  
  <p>and then, the values for the different commands, <strong>forward</strong>, <strong>back</strong>, <strong>new tab</strong>, <strong>close tab</strong>, <strong>new window</strong>, <strong>close window</strong>?</p>