1

これは、Visual Studio 2012のデスクトップC#アプリ用です。

C#でWebBrowserコントロールを使用してWindows Liveインスタンスにログインする必要があります。コントロールを取得してページを開くことは何もありませんが、サインインすると頭痛の種になります。

Googleから収集した約4つの異なる提案を試しましたが、正しくログインできません。

これは私が持っているものです:

//FORM1 code
//Added reference to 'Microsoft Internet Controls'
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            webBrowser1.Url = new Uri("http://digitbot.com/live/");
        }
        SHDocVw.WebBrowser nativeBrowser;
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            nativeBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
            nativeBrowser.NewWindow2 += nativeBrowser_NewWindow2;
        }
        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            nativeBrowser.NewWindow2 -= nativeBrowser_NewWindow2;
            base.OnFormClosing(e);
        }

        void nativeBrowser_NewWindow2(ref object ppDisp, ref bool Cancel)
        {
            var popup = new Form2();
            popup.Show(this);
            ppDisp = popup.Browser.ActiveXInstance;
        }
    }
}



//FORM2 code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public WebBrowser Browser
        {
            get { return webBrowser1; }
        }
    }
}

これにより、2番目のウィンドウでログインポップアップが起動しますが、どういうわけか、プロセスが完了していないようです。

上記のコードのリンクをブラウザでたどると、ログインでき、カレンダーイベントの生のJSONとそれに続くプロフィール写真が表示されます。WebBrowserコントロールで同じ結果を取得する必要があります。

どんな助けでも素晴らしいでしょう、私は立ち往生しています。

4

1 に答える 1