2016-11-23 83 views
1

我想從Whats App上的聯繫人中獲取消息(當然,我認爲是類似oAuth的東西),但據我發現,哪些應用沒有API。所以我嘗試在WebBrowser中加載Web版本並從那裏獲得消息,但我無法使其工作。如何從特定聯繫人獲取消息?

它開始加載頁面來請求掃描二維碼,但它重定向到一個頁面,說當前的瀏覽器不支持。所以我嘗試在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完全不同的解決方案來實現,這是非常可喜的。

+0

我正在使用Cef瀏覽器工作......我放棄.NET本地網頁瀏覽器 – Jack

+0

如果您使用IE11瀏覽,您將在主頁中看到支持的瀏覽器。 *我們推薦使用WhatsApp以及以下瀏覽器之一:Google Chrome,Mozilla Firefox,Opera WhatsApp也支持:Microsoft Edge,Safari(僅MacOS 10.8+)*看起來該網站根本不支持IE。 –

回答

1

如果您瀏覽使用https://web.whatsapp.com/ Internet Explorer中,你會看到在主頁上說支持的瀏覽器:

我們建議使用WhatsApp的與以下瀏覽器之一:

  • 谷歌瀏覽器
  • Mozilla Firefox
  • Opera WhatsApp

還支持:

  • 微軟邊緣
  • Safari瀏覽器(MacOS的10.8+只)

因此,似乎目前該網站不支持Internet Explorer。作爲替代,你可以使用Cefsharp瀏覽器。要做到這一點,安裝合適的CefSharp.WinForms NuGet包到Visual Studio,然後將該控件添加到您的形式和運行應用程序:

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

你運行該程序後,它表明,如果您使用掃描你的其中一個QR碼電話您將被登錄。

要掃描QR碼,您應該在您的手機上安裝WhatsApp。然後打開應用程序→CHATS→打開菜單→選擇WhatApp Web然後掃描代碼。

+0

**注1:**最新版本的CefSharp.WinForms(目前爲53.0.0)需要.NET 4.5.2。 –

+0

**注2:**它不適用於開箱即用的任何CPU平臺。你應該選擇'x86'或'x64'。要有任何CPU支持,請查看[功能請求 - 添加AnyCPU支持#1714](https:// github。com/cefsharp/CefSharp/issues/1714) –

+0

如果您對答案有任何疑問,請告知我:) –

相關問題