我一直在四处寻找,而我还没有找到如何从C#做到这一点。C# - 从C#应用程序发送消息给谷歌浏览器
我想使,所以我可以告诉谷歌Chrome浏览器去正向,返回,打开新Tab,关闭标签,打开新窗口,并从关闭窗口我C#应用程序。
我没有使用
[DllImport("user32", EntryPoint = "SendMessageA")]
private static extern int SendMessage(int Hwnd, int wMsg, int wParam, int lParam);
和别人几与Winamp的类似的东西。但我不知道要发送什么消息或如何找到将窗口传递给哪个窗口或任何其他窗口。
所以有人会告诉我如何将这6条命令从C#发送到Chrome?谢谢
编辑: 好吧,我被拒绝了,所以也许我不够清楚,或者人们假设我没有试图自己弄清楚这一点。
首先,我对整个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
,然后为不同的命令回,值,向前,新标签, close tab,新窗口,关闭窗口?
我正在翻阅,我没有看到任何能够帮助我完成我想要做的事情。我不想重新编译Chrome或任何东西。我希望能够向Chrome发送一条消息,说“回头”或其他什么。我根本不想改变Chrome。从C#做这一切# – Joel 2008-09-29 08:57:55