如何从特定联系人处获得消息?

时间:2016-11-23 22:00:32

标签: c# .net webbrowser-control whatsapp

我想从Whats App上的联系人那里检索一条消息(获得用户许可,当然,我认为类似于oAuth),但据我所知,哪些应用程序没有API。所以我尝试在WebBrowser中加载Web版本并从那里获取消息,但我无法使其工作。

它开始加载页面以请求扫描Qr代码,但它会重定向到一个页面,说明当前浏览器不受支持。所以我尝试在IE上使用仿真模式,将其设置为IE11并将http用户代理更改为正确的IE11,但它也不起作用。我该如何解决这个问题?

这是我目前的代码:

 public partial class Form1 : Form
    {
        [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
        private static extern int UrlMkSetSessionOption(
           int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

        const int URLMON_OPTION_USERAGENT = 0x10000001;
        const int URLMON_OPTION_USERAGENT_REFRESH = 0x10000002;
        const string usersAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393";

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            SetEmulation();
            ChangeUserAgent(usersAgent);
        }

        public static void ChangeUserAgent(string UserAgent)
        {
            UrlMkSetSessionOption(URLMON_OPTION_USERAGENT_REFRESH, null, 0, 0);
            UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, UserAgent, UserAgent.Length, 0);
        }

        public void SetEmulation()
        {
            const int BROWSER_EMULATION_IE11 = 0x2AF9;  
            var appName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
            Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
                             appName, BROWSER_EMULATION_IE11, RegistryValueKind.DWord);
        }

        void UnsetEmulation()
        {
            using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true))
            {
                var appName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
                key.DeleteValue(appName);
            }
        }
}

我尝试这样打开:

webBrowser1.Navigate(@"http://web.whatsapp.com/");

AA完全不同的解决方案是非常受欢迎的。

1 个答案:

答案 0 :(得分:1)

如果您使用Internet Explorer浏览https://web.whatsapp.com/,您会在主页中看到支持的浏览器:

  

我们建议您使用WhatsApp与以下浏览器之一:

     
      
  • Google Chrome
  •   
  • Mozilla Firefox
  •   
  • Opera WhatsApp
  •   
     

也支持:

     
      
  • Microsoft Edge
  •   
  • Safari(仅限MacOS 10.8+)
  •   

因此,目前该网站似乎不支持Internet Explorer。作为替代方案,您可以使用Cefsharp浏览器。为此,请在visual studio中安装合适的CefSharp.WinForms nuget包,然后将控件添加到表单并运行应用程序:

var browser = new CefSharp.WinForms.ChromiumWebBrowser("https://web.whatsapp.com/");
browser.Dock = DockStyle.Fill;
this.Controls.Add(browser);

运行程序后,它会显示一个二维码,如果您使用手机进行扫描,您将会登录。

要扫描二维码,您应该在手机上安装WhatsApp。然后打开应用程序→CHATS→打开菜单→选择WhatApp Web然后扫描代码。