C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: 自動ログイン


(過去ログ 41 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■21670 / inTopicNo.1)  自動ログイン
  
□投稿者/ ひろこ (1回)-(2008/07/07(Mon) 16:26:26)

分類:[C#] 

教えてください!!

WebBrowserを使わずにWebページを操作する方法を教えてください。

Webページのテキストボックスとボタンを操作して自動ログインできるようにしたいんですが・・・
引用返信 編集キー/
■21690 / inTopicNo.2)  Re[1]: 自動ログイン
□投稿者/ Jitta on the way (131回)-(2008/07/07(Mon) 18:42:55)
2008/07/07(Mon) 18:45:48 編集(投稿者)

No21670 (ひろこ さん) に返信
> 教えてください!!
>
> WebBrowserを使わずにWebページを操作する方法を教えてください。
>
> Webページのテキストボックスとボタンを操作して自動ログインできるようにしたいんですが・・・

まちごーて リセット ボタン 押してしもーたorz

WebBrowser コントロールがしているのと同じように、HTML を解釈すれば可能です。

他人に尋ねるための条件が足りていないと思います。いったい、何を作ろうとしているのでしょう?
引用返信 編集キー/
■21698 / inTopicNo.3)  Re[2]: 自動ログイン
□投稿者/ Azulean (161回)-(2008/07/07(Mon) 22:40:24)
デジャビュが…。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=21550
引用返信 編集キー/
■21699 / inTopicNo.4)  Re[3]: 自動ログイン
□投稿者/ Azulean (162回)-(2008/07/07(Mon) 22:41:47)
とりあえず、対象のブラウザやOS等のパターンを考えると、全てに対応するのは無理です。
特定のパターンに限る等、質問として成り立たせるためにもう少し情報を書いて下さい。
引用返信 編集キー/
■21706 / inTopicNo.5)  Re[4]: 自動ログイン
□投稿者/ ひろこ (3回)-(2008/07/08(Tue) 10:29:07)
VB6で作ったシステムをC#で作り直したいんですが・・・
C#での作り方を教えてください!!


 Dim objIE    As Object  'IEオブジェクト参照用

'インターネットエクスプローラーのオブジェクトを作る
 Set objIE = CreateObject("InternetExplorer.application")

 objIE.Visible = True
 objIE.Navigate "http://xxxxxx/login.aspx"

 objIE.document.All.txt_userid.Value = xxx  'ユーザー名
 objIE.document.All.txt_pass.Value = xxx    'パスワード
 objIE.document.All.btn_login.Click

引用返信 編集キー/
■21712 / inTopicNo.6)  Re[5]: 自動ログイン
□投稿者/ 魔界の仮面弁士 (777回)-(2008/07/08(Tue) 13:23:01)
2008/07/08(Tue) 14:02:44 編集(投稿者)
No21706 (ひろこ さん) に返信
> VB6で作ったシステムをC#で作り直したいんですが・・・
この VB6 コードに、参照設定を加えるのは駄目ですか?
C# は、言語レベルでのレイトバインドをサポートしていないので、そのままの移植は面倒なのですけれども。


> C#での作り方を教えてください!!
リフレクションを使って無理やり実装すると、こんな感じ。
# 参照設定した場合は、もっと簡単に書けますけれども。


using System;
using System.Reflection;
using System.Runtime.InteropServices;
class Sample
{
    static void Main()
    {
        //Set objIE = CreateObject("InternetExplorer.application")
        Type tIE = Type.GetTypeFromProgID("InternetExplorer.Application");
        object oIE = Activator.CreateInstance(tIE);

        //objIE.Visible = True
        tIE.InvokeMember("Visible", BindingFlags.SetProperty, null,
            oIE, new object[] { true });

        // objIE.Navigate "http://example.com/login.aspx"
        tIE.InvokeMember("Navigate", BindingFlags.InvokeMethod, null,
            oIE, new object[] { "http://example.com/login.aspx" });

        // 3 秒ほど待機。(本当は DocumentCompleted イベントを待つべき)
        System.Threading.Thread.Sleep(3000);

        // document 及び all オブジェクトの取得
        object document = tIE.InvokeMember("document", BindingFlags.GetProperty, null,
            oIE, new object[] { });
        object all = document.GetType().InvokeMember("all", BindingFlags.GetProperty, null,
            document, new object[] { });
        object element;

        // objIE.document.All.txt_userid.Value = "ユーザー名"
        element = all.GetType().InvokeMember("txt_userid", BindingFlags.GetProperty, null,
            all, new object[] { });
        element.GetType().InvokeMember("value", BindingFlags.SetProperty, null,
            element, new object[] { "ユーザー名" });
        if (element != null && Marshal.IsComObject(element)) Marshal.ReleaseComObject(element);

        // objIE.document.All.txt_pass.Value = "パスワード"
        element = all.GetType().InvokeMember("txt_pass", BindingFlags.GetProperty, null,
            all, new object[] { });
        element.GetType().InvokeMember("value", BindingFlags.SetProperty, null,
            element, new object[] { "ユーザー名" });
        if (element != null && Marshal.IsComObject(element)) Marshal.ReleaseComObject(element);

        // objIE.document.All.btn_login.Click
        element = all.GetType().InvokeMember("btn_login", BindingFlags.GetProperty, null,
            all, new object[] { });
        element.GetType().InvokeMember("click", BindingFlags.InvokeMethod, null,
            element, new object[] { });
        if (element != null && Marshal.IsComObject(element)) Marshal.ReleaseComObject(element);

        // 解放処理
        if (all != null && Marshal.IsComObject(all)) Marshal.ReleaseComObject(all);
        if (document != null && Marshal.IsComObject(document)) Marshal.ReleaseComObject(document);
        if (oIE != null && Marshal.IsComObject(oIE)) Marshal.ReleaseComObject(oIE);
    }
}

引用返信 編集キー/
■21713 / inTopicNo.7)  Re[6]: 自動ログイン
□投稿者/ ひろこ (4回)-(2008/07/08(Tue) 13:53:28)
うまくいきましたぁ(o^∇^o)ノ☆
ありがとうございます(*- -)(*_ _)ペコリ

ただもうひとつ問題があって・・・

private void Form1_Activated(object sender, EventArgs e)
{
this.Hide();

で起動させてるんですが、ブラウザが表示されると同時Form1も見えてしまうんですが・・・
どういう風に起動させたらいいでしょうか??

ど素人ですみません(ーー;)教えてください!!
引用返信 編集キー/
■21714 / inTopicNo.8)  Re[7]: 自動ログイン
□投稿者/ 魔界の仮面弁士 (778回)-(2008/07/08(Tue) 14:05:18)
No21713 (ひろこ さん) に返信
> で起動させてるんですが、

そもそも何故、Activated イベントを利用しているのでしょうか?

その理由を明らかにしてもらえれば、代替案を提示できるかもしれません。
引用返信 編集キー/
■21716 / inTopicNo.9)  Re[8]: 自動ログイン
□投稿者/ ひろこ (5回)-(2008/07/08(Tue) 14:11:16)
なんとなくです・・・Σ(T□T)

Loadしてもうまくいかなかったので、、Activatedですると見えなくなるのはなるんですが・・・
どうしても一瞬見えるんです(^^;)

ただブラウザだけを起動させたいんです・・・
引用返信 編集キー/
■21737 / inTopicNo.10)  Re[9]: 自動ログイン
□投稿者/ 魔界の仮面弁士 (779回)-(2008/07/08(Tue) 18:29:13)
2008/07/08(Tue) 19:19:07 編集(投稿者)

No21716 (ひろこ さん) に返信
> なんとなくです・・・Σ(T□T)
「Form を使わない」という選択肢は駄目ですか? 先の私のサンプルのように。

フォームさえ無ければ、当然、それが表示されてしまう事も無いわけで。


> Activatedですると
Hide メソッドを使うにしても、せめて Activated イベントでは無く、
Shown イベントを使うべきかと思います。
引用返信 編集キー/
■21738 / inTopicNo.11)  Re[10]: 自動ログイン
□投稿者/ 銀閣寺在住 (6回)-(2008/07/08(Tue) 18:43:20)
ひろこさんへ。

顔文字の使用は控えたほうがよろしいと思います。
引用返信 編集キー/
■21748 / inTopicNo.12)  Re[11]: 自動ログイン
□投稿者/ ま (69回)-(2008/07/08(Tue) 22:58:48)
魔界さんのレイトバインディングのコードがさっぱり意味不明なので
参考リンクです。
http://www.ailight.jp/blog/myamyu/archive/2004/06/11/1970.aspx



引用返信 編集キー/
■21758 / inTopicNo.13)  Re[12]: 自動ログイン
□投稿者/ ひろこ (9回)-(2008/07/09(Wed) 09:52:14)
「Form を使わない」という選択肢は駄目ですか? 先の私のサンプルのように。

フォームさえ無ければ、当然、それが表示されてしまう事も無いわけで。


というと具体的にどうしたら・・・??
フォームを使うことしかしたことがないので・・・教えていただけますか?!
引用返信 編集キー/
■21762 / inTopicNo.14)  Re[13]: 自動ログイン
□投稿者/ ひろこ (10回)-(2008/07/09(Wed) 10:47:15)
クラスで動かすとコマンドプロンプトの画面が出てくるんですが
どうしたらいいですか??
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -