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

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

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

Re[12]: ブラウザ補助アプリを作っていますが・・・


(過去ログ 72 を表示中)

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

■42066 / inTopicNo.1)  ブラウザ補助アプリを作っていますが・・・
  
□投稿者/ 海空 (1回)-(2009/10/07(Wed) 13:47:47)

分類:[C#] 

こんにちは、初めまして。今回初めてのC#でブラウザ補助アプリを作っています。
内容は
TextBoxに検索ワードを書き
その次にComboBoxで検索先を選ぶ(GoogleやYoutube等)
最後に検索ボタンを押す でブラウザが起動し検索するような仕組みを考えているのですが
まず検索ボタンに埋め込むComboBoxのifでどう抽出していいのかわかりません。
後にprocessにどうURLに変数(TextBox)を埋め込めばいいのかも分かりません。
根本的な構成が間違っているかも知れませんがご指摘していただけると幸いです。
引用返信 編集キー/
■42073 / inTopicNo.2)  Re[1]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ επιστημη (2187回)-(2009/10/07(Wed) 15:33:08)
επιστημη さんの Web サイト
たとえばこんなの?

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.Add(new ComboItem("ぐーぐる","http://www.google.co.jp/"));
            comboBox1.Items.Add(new ComboItem("わんくま","http://www.wankuma.com"));
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // urlをTextBoxに表示
            textBox1.Text = ((ComboItem)comboBox1.SelectedItem).url;
        }
    }

    class ComboItem
    {
        public string name;
        public string url;
        public ComboItem(string n, string u)
        {
            name = n;
            url = u;
        }
        // 表示上はnameだけ
        public override string ToString()
        {
            return name;
        }
    }

※ あくまで一例。鵜呑みにしないで!

引用返信 編集キー/
■42085 / inTopicNo.3)  Re[2]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ 海空 (2回)-(2009/10/07(Wed) 17:11:02)
No42073 (επιστημη さん) に返信
> たとえばこんなの?
>(略)

大体合ってます。
var t = TextBox1.Text;
の変数を作成し、
http://www.google.co.jp/search?q=←ここにtを埋めこんで
それをまたprocessに埋め込みたいのですが どうすればいいでしょうか?
引用返信 編集キー/
■42086 / inTopicNo.4)  Re[3]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ επιστημη (2193回)-(2009/10/07(Wed) 17:14:17)
επιστημη さんの Web サイト
2009/10/07(Wed) 17:15:33 編集(投稿者)

> 大体合ってます。

何様?

> var t = TextBox1.Text;
> の変数を作成し、
> http://www.google.co.jp/search?q=←ここにtを埋めこんで
> それをまたprocessに埋め込みたいのですが どうすればいいでしょうか?

string navigateURL = ((ComboItem)comboBox1.SelectedItem).url + "search?q=" + t;

こんだけのことちゃいます?

引用返信 編集キー/
■42087 / inTopicNo.5)  Re[4]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ 海空 (3回)-(2009/10/07(Wed) 17:21:29)
2009/10/07(Wed) 17:32:17 編集(投稿者)

No42086 (επιστημη さん) に返信

>> 大体合ってます。

>何様?

すいません、言葉の選択が軽率でした。
機嫌を損ねてしまったのであれば申し訳ありません。
前言撤回します。

極めて近い回答ありがとうございます。





何故かうまくいきません。ご教示お願いします。

public partial class Form1 : Form
{
class ComboItem
{
public string name;
public string url;
public ComboItem(string n, string u)
{
name = n;
url = u;
}
// 表示上はnameだけ
public override string ToString()
{
return name;
}
}

public Form1()
{
this.ControlBox = false;
this.FormBorderStyle = FormBorderStyle.FixedSingle;
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
this.Close();
}

private void button2_Click(object sender, EventArgs e)
{
process1.Start();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox1.Text = ((ComboItem)comboBox1.SelectedItem).url;
}

private void Form1_Load_1(object sender, EventArgs e)
{
comboBox1.Items.Add(new ComboItem("ぐーぐる", "http://www.google.co.jp/"));
comboBox1.Items.Add(new ComboItem("わんくま", "http://www.wankuma.com"));
}

private void process1_Exited(object sender, EventArgs e)
{
var t = textBox1.Text;
string navigateURL = ((ComboItem)comboBox1.SelectedItem).url + "search?q=" + t;
}

}


引用返信 編集キー/
■42089 / inTopicNo.6)  Re[5]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ Jitta on the way (455回)-(2009/10/07(Wed) 18:22:52)
No42087 (海空 さん) に返信

URL エンコードぐらいはしてほしい。


Opera や IE8 には、同様の機能が有るわけで。それでも作らなければならない何かがあるのでしょうか。
引用返信 編集キー/
■42091 / inTopicNo.7)  Re[6]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ 海空 (4回)-(2009/10/07(Wed) 18:45:10)
No42089 (Jitta on the way さん) に返信
> ■No42087 (海空 さん) に返信
>
> URL エンコードぐらいはしてほしい。

URLエンコードはデフォルトではないのですね・・・勉強になります。

> Opera や IE8 には、同様の機能が有るわけで。それでも作らなければならない何かがあるのでしょうか。

個人のためのランチャーに仕込むので必要なのです。

引用返信 編集キー/
■42092 / inTopicNo.8)  Re[7]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ Jitta on the way (457回)-(2009/10/07(Wed) 19:03:51)
No42091 (海空 さん) に返信
> ■No42089 (Jitta on the way さん) に返信
>>■No42087 (海空 さん) に返信
>>
>>URL エンコードぐらいはしてほしい。
>
> URLエンコードはデフォルトではないのですね・・・勉強になります。
>
>>Opera や IE8 には、同様の機能が有るわけで。それでも作らなければならない何かがあるのでしょうか。
>
> 個人のためのランチャーに仕込むので必要なのです。
>


うわー
長文が、503で消えた(ToT)

私は会社帰りに携帯電話で読んでいます。なので、試すことは出来ません。
そのため、「どういう結果を期待したが、実際にはどうなった」と書いてあれば、アドバイス出来ることがあるかもしれません。

たぶん、ComboBoxItem から、url を取ろうとしているのが間違い。リファレンス読んで、コンストラクタに指定したものと、プロパティの関係を把握して下さい。
引用返信 編集キー/
■42094 / inTopicNo.9)  Re[8]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ 海空 (5回)-(2009/10/07(Wed) 19:12:55)
No42092 (Jitta on the way さん) に返信

丁寧なご返答ありがとうございます。
構成等、何かと学ばなければいけない手順を間違えたようなので一度出直してきます。
ありがとうございました。
解決済み
引用返信 編集キー/
■42103 / inTopicNo.10)  Re[9]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ Jitta (601回)-(2009/10/07(Wed) 22:54:08)
No42094 (海空 さん) に返信

すみません。ComboItem は、 #42703 で作られているものですね。

それで、「どういうことを期待して、どのような現象が得られた」のでしょう?
以下は、私が作成中の、RSS Reader もどきのコードです。
私は ListView を使用しているため、ListViewItem という、用意されたクラスがあります。
そこで、Tag プロパティに、ここで言う ComboItem に相当するクラスのデータを放り込んでいます。

private void btnDisplayItem_Click(object sender, EventArgs e) {
    Button btn = sender as Button;
    if (btn == null) { return; }
    // ボタンによってデータの提供元を変えている。
    // 提供元の ListView を、Button.Tag に参照させている。
    ListView lstView = btn.Tag as ListView; 
    if (lstView == null || lstView.SelectedIndices.Count == 0) { return; }
    FeedReader.SyndicatedItem item = lstView.SelectedItems[0].Tag as FeedReader.SyndicatedItem;
    if (item == null) { return; }
    NavigateTo(item.Link);
}
public void NavigateTo(Uri address) {
    if (txtBrowseAddress.Enabled) {
        // ここで、表示させている。
        // Uri は、 Uri(string) のコンストラクターを持っているので、同じと考えてよい。
        brwFeededItemBrowser.Navigate(address);
        txtBrowseAddress.Text = address.AbsoluteUri;
    }
}

引用返信 編集キー/
■42104 / inTopicNo.11)  Re[10]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ 海空 (6回)-(2009/10/07(Wed) 23:28:24)
2009/10/07(Wed) 23:48:50 編集(投稿者)

No42103 (Jitta さん) に返信

> すみません。ComboItem は、 #42703 で作られているものですね。

#42073です。

真に申し訳ないのですがやはり知識不足でソースが読めません。。。
勉強して出直します。

23:45 追記:最終更新ソースうpしときました。
http://www1.axfc.net/uploader/Sc/so/43467.zip&key=umisora

連絡先はこちら:wakapaja@yahoo.co.jp
解決済み
引用返信 編集キー/
■42221 / inTopicNo.12)  Re[11]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ Jitta (602回)-(2009/10/09(Fri) 22:44:04)
No42104 (海空 さん) に返信
ちょ...怒るよ。
どの様になることを期待して、実際にはどうなるのか。
それがわからないと、どうにも出来ないのよ。

実際には、
private void button2_Click(object sender, EventArgs e)
{
    process1.Start();
}
ここで、例外が発生します。
process1.StartInfo.FileName が、次のように定義されていました。
string navigateURL = ((ComboItem)comboBox1.SelectedItem).url + "search?q=" + t;

navigateURL への設定や、URL そのものがおかしいのかと思っていたのに、
こんな定・・・どわぁ〜! No.42086 か。。。
「processにどうURLに変数(TextBox)を埋め込めばいいのかも分かりません。」
ということか。それで、直接埋め込んじゃったのね。。。orz
いやぁ、質問する方も、質問を受ける方も、難しいね。

 読み取れなかったお詫び。動くように変更しました。
class ComboItem
{
    public string name;
    public string url;
    public bool needEncode;
    public ComboItem(string n, string u, bool encode)
    {
        name = n;
        url = u;
        needEncode = encode;
    }
    // 表示上はnameだけ
    // この方法は、あまり勧められないので、出来れば修正してください。
    public override string ToString()
    {
        return name;
    }
}

private void button2_Click(object sender, EventArgs e)
{
    // ComboBox の選択肢から、ComboItem を取り出す。
    ComboItem item = comboBox1.SelectedItem as ComboItem;
    if (item == null) { return; }
    // url には、文字埋め込みが出来る文字列を設定しました。
    // その「埋め込み出来る場所」に、「検索文字列」を埋め込みます。
    string navigateURL = string.Format(item.url, textBox1.Text);
    Uri navigateUri = new Uri(navigateURL);
    // エンコードの有無は、実際に動かして調べた。
    if (item.needEncode == true) {
        // エンコードしていい場合
        process1.StartInfo.FileName = navigateUri.AbsoluteUri;
    } else {
        // エンコードしてはいけない場合
        process1.StartInfo.FileName = navigateUri.ToString();
    }
    process1.Start();
}

private void Form1_Load_1(object sender, EventArgs e)
{
    // "{0}" の位置に、上の string.Format で、検索文字列を埋め込みます。
    comboBox1.Items.Add(new ComboItem("ぐーぐる",
        "http://www.google.co.jp/search?q={0}", true));
    // わんくまは、エンコードすると化けた
    comboBox1.Items.Add(new ComboItem("わんくま",
        "http://bbs.wankuma.com/search.cgi?no=0&word={0}&andor=and&logs=.%2Fpost.dat&PAGE=20", false));
    // おまけ1。Bing! の場合。
    comboBox1.Items.Add(new ComboItem("びんご!",
        "http://www.bing.com/search?q={0}&go=&form=QBLH&filt=all", true));
    // おまけ2。Yahoo! の場合。
    comboBox1.Items.Add(new ComboItem("やっほー",
        "http://search.yahoo.co.jp/search?p={0}&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=", true));
    // それぞれの検索 URL は、Opera で調べた。
}

引用返信 編集キー/
■42232 / inTopicNo.13)  Re[12]: ブラウザ補助アプリを作っていますが・・・
□投稿者/ 海空 (7回)-(2009/10/09(Fri) 23:39:09)
No42221 (Jitta さん) に返信

なんか、申し訳ないです。
中途半端な思いで質問板に来てしまったせいで大変ご迷惑をおかけしました。
ソースありがとうございます。使わせていただきます。

今度こちらで質問するときはしっかりメソッドやクラスの構成を理解してからにしますね。

本当にありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -