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

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

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

Re[24]: ツールバーとブラウザ間での値のやり取り


(過去ログ 83 を表示中)

[トピック内 45 記事 (1 - 20 表示)]  << 0 | 1 | 2 >>

■48497 / inTopicNo.1)  ツールバーとブラウザ間での値のやり取り
  
□投稿者/ レッドブル (1回)-(2010/04/07(Wed) 19:10:21)

分類:[C/C++] 

初めまして。
WTL COM C++ でIEツールバーを作成しました。
このツールバーはウェブサイトと連動しており、ツールバー上でもそのサイトへのログイン、ログアウトが可能です。

ログイン状態で、ツールバー以外からログアウトすると、ツールバー上ではログイン状態を保持し続けるのを防ぐため、
数秒に一度、ツールバーからサーバーにアクセスし、ログイン状態を確認して同期を取っています。

しかし、この数秒に一度のアクセスがサーバーに負荷をかけるため、これ以外の方法を検討しています。
ブラウザ上の情報をツールバー側から取得することは可能でしょうか。
可能であればそれはどのようにしたら良いか何方かご教唆いただけますか。

現在のページ情報等が取得できれば、特定のページに居る時のみ、ツールバーからサーバーにアクセスすればいいので、負荷が軽減できそうです。
もしくは他に良い方法がありましたら案を頂けたら幸いです。
うまく説明できてないかもしれませんが、よろしくお願いします。
引用返信 編集キー/
■48500 / inTopicNo.2)  Re[1]: ツールバーとブラウザ間での値のやり取り
□投稿者/ .SHO (1254回)-(2010/04/07(Wed) 19:17:15)
No48497 (レッドブル さん) に返信

そのツールバーで、なんらかのアクションがとられた時だけ
最初にログイン状態を確認するのではダメですか?

引用返信 編集キー/
■48501 / inTopicNo.3)  Re[2]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (3回)-(2010/04/07(Wed) 19:25:57)
No48500 (.SHO さん) に返信
> ■No48497 (レッドブル さん) に返信
>
> そのツールバーで、なんらかのアクションがとられた時だけ
> 最初にログイン状態を確認するのではダメですか?
>
ありがとうございます。

表現が判りにくかったかもしれません、申し訳ございません。
ツールバー上でのアクションは問題ありません。
ツールバー以外のアクションをツールバー上と同期したいと思っています。

イメージとしては ツールバーを一切触っていない状態で、ブラウザ側でログアウトすると、
勝手にツールバー上の表記も「ログイン→ログアウト」と変更したいです。

ログイン状態を確認するためにはサーバーにアクセスが必須です。
ですが、常にアクセスすることは難しいので(10秒に1回程度のアクセスに限定しても負荷が高いです)
、条件を限定して、特定の時だけアクセスしたいと思います。
引用返信 編集キー/
■48502 / inTopicNo.4)  Re[3]: ツールバーとブラウザ間での値のやり取り
□投稿者/ aetos (269回)-(2010/04/07(Wed) 19:51:46)
No48501 (レッドブル さん) に返信

> イメージとしては ツールバーを一切触っていない状態で、ブラウザ側でログアウトすると、
> 勝手にツールバー上の表記も「ログイン→ログアウト」と変更したいです。

それを即時に反映するのをあきらめて、ツールバー上で何らかのログインが必要なアクションを実行された際にサーバに問い合わせるというわけにはいきませんか? ということです。

> ツールバー上ではログイン状態を保持し続けるのを防ぐため

とありますが、それは見た目だけの話で、実際にはログインされていない(サイトでログアウトした後、ツールバー上で何らかのログインが必要なアクションを起こした際は、再度ログインする必要がある)んですよね?
引用返信 編集キー/
■48503 / inTopicNo.5)  Re[3]: ツールバーとブラウザ間での値のやり取り
□投稿者/ .SHO (1255回)-(2010/04/07(Wed) 20:12:38)
No48501 (レッドブル さん) に返信

> 条件を限定して、特定の時だけアクセスしたいと思います。

だから、「その特定の時=ツールバーでアクションがあった時」
ではダメなのかな?ってことなんだけど。。。

引用返信 編集キー/
■48504 / inTopicNo.6)  Re[1]: ツールバーとブラウザ間での値のやり取り
□投稿者/ 渋木宏明(ひどり) (1299回)-(2010/04/07(Wed) 20:55:46)
渋木宏明(ひどり) さんの Web サイト
2010/04/08(Thu) 00:59:19 編集(投稿者)
2010/04/07(Wed) 21:10:59 編集(投稿者)

本質的に、あんまりいい方法は無いと思うな。

IE のツールバーは特定の Web ページではなく、IE のアプリケーションウィンドウに所属するものだし。

それに、「ログオンしているかどうか」を管理しているのは結局のところ、ブラウザではなくサーバ側なわけで。

IE に表示されているページとツールバーの間だけで情報交換してなんとかしよーと思ってるんだろうけど、そーうまくいかないはずです。

「そのページ(あるいはそれらのページ)」が表示されていない時にはそのシナリオは成立しないから。

そもそも現状、 IE を2つ起動した時とかでも、ちゃんと一貫性のある動きが実装できてるのかな?

ちゃんとやるとしたら、Windows Live 系のアプリがやっているみたいにログオン状態を管理する .exe を常駐させて、クライアント側の状態管理をそいつに一任するとかまでしないとダメそな気がします。

引用返信 編集キー/
■48518 / inTopicNo.7)  Re[4]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (4回)-(2010/04/08(Thu) 12:03:35)
No48502 (aetos さん) に返信
> ■No48501 (レッドブル さん) に返信
>
>>イメージとしては ツールバーを一切触っていない状態で、ブラウザ側でログアウトすると、
>>勝手にツールバー上の表記も「ログイン→ログアウト」と変更したいです。
>
> それを即時に反映するのをあきらめて、ツールバー上で何らかのログインが必要なアクションを実行された際にサーバに問い合わせるというわけにはいきませんか? ということです。
>
>>ツールバー上ではログイン状態を保持し続けるのを防ぐため
>
> とありますが、それは見た目だけの話で、実際にはログインされていない(サイトでログアウトした後、ツールバー上で何らかのログインが必要なアクションを起こした際は、再度ログインする必要がある)んですよね?

ありがとうございます。

見た目上はログイン状態でも、実際は未ログイン状態なのでもう一度ログイン処理を通ってもらう必要があります。
ツールバーの見た目上も自動的に未ログイン状態に切り替えたいと思っています。

引用返信 編集キー/
■48519 / inTopicNo.8)  Re[4]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (5回)-(2010/04/08(Thu) 12:04:42)
No48503 (.SHO さん) に返信
> ■No48501 (レッドブル さん) に返信
>
>>条件を限定して、特定の時だけアクセスしたいと思います。
>
> だから、「その特定の時=ツールバーでアクションがあった時」
> ではダメなのかな?ってことなんだけど。。。
>

ありがとうございます。

ユーザーがツールバーには一切触れていない時に同期したいので
ツールバーでアクションがあった時、というのは難しいです・・・。
引用返信 編集キー/
■48520 / inTopicNo.9)  Re[2]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (6回)-(2010/04/08(Thu) 12:21:47)
No48504 (渋木宏明(ひどり) さん) に返信
> 2010/04/08(Thu) 00:59:19 編集(投稿者)
> 2010/04/07(Wed) 21:10:59 編集(投稿者)
>
> 本質的に、あんまりいい方法は無いと思うな。
>
> IE のツールバーは特定の Web ページではなく、IE のアプリケーションウィンドウに所属するものだし。
>
> それに、「ログオンしているかどうか」を管理しているのは結局のところ、ブラウザではなくサーバ側なわけで。
>
> IE に表示されているページとツールバーの間だけで情報交換してなんとかしよーと思ってるんだろうけど、そーうまくいかないはずです。
>
> 「そのページ(あるいはそれらのページ)」が表示されていない時にはそのシナリオは成立しないから。
>
> そもそも現状、 IE を2つ起動した時とかでも、ちゃんと一貫性のある動きが実装できてるのかな?
>
> ちゃんとやるとしたら、Windows Live 系のアプリがやっているみたいにログオン状態を管理する .exe を常駐させて、クライアント側の状態管理をそいつに一任するとかまでしないとダメそな気がします。
>

ありがとうございます。
完全同期はちょっと難しそうですね。

目的の優先順位は サーバー負荷軽減>同期 ですが、できるだけ違和感も無くしたいと思っています。 

今は10秒に一度アクセスを
20秒に一度とか30秒に一度のアクセスで負荷を下げる事はできるかもしれませんが、同期までのラグが違和感アリです。

ツールバー側から、ブラウザの現在ページ情報(URLやページ名)などが取得できれば、ブラウザ上でログイン後ページ、ログアウト後ページが開かれた時のみ、サーバーにアクセスすれば解決できると思いますが、如何でしょうか。

IEを複数、タブを複数立ち上げた場合の同期漏れはしょうがないと思っています。
引用返信 編集キー/
■48521 / inTopicNo.10)  Re[3]: ツールバーとブラウザ間での値のやり取り
□投稿者/ aetos (270回)-(2010/04/08(Thu) 12:28:33)
No48520 (レッドブル さん) に返信

> ツールバー側から、ブラウザの現在ページ情報(URLやページ名)などが取得できれば、ブラウザ上でログイン後ページ、ログアウト後ページが開かれた時のみ、サーバーにアクセスすれば解決できると思いますが、如何でしょうか。

ログインした後、ログアウトせずに(ログアウトページを開かずに)別のサイトへ行ってしまった場合は、ツールバー上でもサイト上でもログインしたままでいいんですかね? セッションタイムアウトとかない?

>> ちゃんとやるとしたら、Windows Live 系のアプリがやっているみたいにログオン状態を管理する .exe を常駐させて、クライアント側の状態管理をそいつに一任するとかまでしないとダメそな気がします。

これはどうやって実現してるんでしょうかね?
引用返信 編集キー/
■48523 / inTopicNo.11)  Re[4]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (7回)-(2010/04/08(Thu) 12:46:42)
No48521 (aetos さん) に返信
> ■No48520 (レッドブル さん) に返信
>
>>ツールバー側から、ブラウザの現在ページ情報(URLやページ名)などが取得できれば、ブラウザ上でログイン後ページ、ログアウト後ページが開かれた時のみ、サーバーにアクセスすれば解決できると思いますが、如何でしょうか。
>
> ログインした後、ログアウトせずに(ログアウトページを開かずに)別のサイトへ行ってしまった場合は、ツールバー上でもサイト上でもログインしたままでいいんですかね? セッションタイムアウトとかない?
>
> >> ちゃんとやるとしたら、Windows Live 系のアプリがやっているみたいにログオン状態を管理する .exe を常駐させて、クライアント側の状態管理をそいつに一任するとかまでしないとダメそな気がします。
>
> これはどうやって実現してるんでしょうかね?

ありがとうございます。
> ログインした後、ログアウトせずに(ログアウトページを開かずに)別のサイトへ行ってしまった場合は、ツールバー上でもサイト上でもログインしたままでいいんですかね? セッションタイムアウトとかない?
この時はそのままログイン状態を保持し続けても大丈夫です。

> これはどうやって実現してるんでしょうかね?
これは予想できません、常駐プログラムを作っても結局サーバーにアクセスしないといけないので、サーバー負荷の軽減を達成するのは難しいかもしれません。
もしかしたら、何か良い案があるのかもしれません。
引用返信 編集キー/
■48524 / inTopicNo.12)  Re[4]: ツールバーとブラウザ間での値のやり取り
□投稿者/ 渋木宏明(ひどり) (1301回)-(2010/04/08(Thu) 12:46:56)
渋木宏明(ひどり) さんの Web サイト
2010/04/08(Thu) 12:59:43 編集(投稿者)

> >> ちゃんとやるとしたら、Windows Live 系のアプリがやっているみたいにログオン状態を管理する .exe を常駐させて、クライアント側の状態管理をそいつに一任するとかまでしないとダメそな気がします。
>
> これはどうやって実現してるんでしょうかね?

興味があるなら、サインインマネージャについて調べてみてください。

引用返信 編集キー/
■48526 / inTopicNo.13)  Re[3]: ツールバーとブラウザ間での値のやり取り
□投稿者/ 渋木宏明(ひどり) (1302回)-(2010/04/08(Thu) 12:54:06)
渋木宏明(ひどり) さんの Web サイト
> 目的の優先順位は サーバー負荷軽減>同期 ですが、できるだけ違和感も無くしたいと思っています。 

であれば、↑でも書きましたが、ブラウザを2つ立ち上げた時のことも考えてみてください。

ツールバーからサーバに対してポーリングをかける方式だと

> 今は10秒に一度アクセスを
> 20秒に一度とか30秒に一度のアクセスで負荷を下げる事はできるかもしれませんが、同期までのラグが違和感アリです。

が、ブラウザ2つ起動すると、簡単に2倍になってしまいます。

> ツールバー側から、ブラウザの現在ページ情報(URLやページ名)などが取得できれば、ブラウザ上でログイン後ページ、ログアウト後ページが開かれた時のみ、サーバーにアクセスすれば解決できると思いますが、如何でしょうか。

ログアウトページが開かれずに、よそのサイトのページに遷移したらどうしますか?

また、その想定は、複数タブを表示した場合にもうまく動作しそうですか?

ちなみに、ツールバーから、ブラウザが現在表示しているページに関する情報を取得することは、技術的には可能です。

> IEを複数、タブを複数立ち上げた場合の同期漏れはしょうがないと思っています。

同期漏れではなく、サーバアクセスが簡単に増大することが問題ではないか、という指摘です。

引用返信 編集キー/
■48527 / inTopicNo.14)  Re[4]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (8回)-(2010/04/08(Thu) 13:05:32)
ありがとうございます。

No48526 (渋木宏明(ひどり) さん) に返信
>>目的の優先順位は サーバー負荷軽減>同期 ですが、できるだけ違和感も無くしたいと思っています。 
>
> であれば、↑でも書きましたが、ブラウザを2つ立ち上げた時のことも考えてみてください。
>
> ツールバーからサーバに対してポーリングをかける方式だと
>
>>今は10秒に一度アクセスを
>>20秒に一度とか30秒に一度のアクセスで負荷を下げる事はできるかもしれませんが、同期までのラグが違和感アリです。
>
> が、ブラウザ2つ起動すると、簡単に2倍になってしまいます。
>
複数ブラウザを立ち上げると負荷上がりますね・・・。
そこはあまり考えていませんでした。

>>ツールバー側から、ブラウザの現在ページ情報(URLやページ名)などが取得できれば、ブラウザ上でログイン後ページ、ログアウト後ページが開かれた時のみ、サーバーにアクセスすれば解決できると思いますが、如何でしょうか。
>
> ログアウトページが開かれずに、よそのサイトのページに遷移したらどうしますか?
>
よそのサイトページに遷移してもログインのままで大丈夫です。


> また、その想定は、複数タブを表示した場合にもうまく動作しそうですか?
>
> ちなみに、ツールバーから、ブラウザが現在表示しているページに関する情報を取得することは、技術的には可能です。
>
>>IEを複数、タブを複数立ち上げた場合の同期漏れはしょうがないと思っています。
>
> 同期漏れではなく、サーバアクセスが簡単に増大することが問題ではないか、という指摘です。
>
10個とかブラウザ立ち上げたら大変な事になりますね。
ここはどうするか考えてみます。
引用返信 編集キー/
■48534 / inTopicNo.15)  Re[3]: ツールバーとブラウザ間での値のやり取り
□投稿者/ .SHO (1257回)-(2010/04/08(Thu) 14:04:33)
No48520 (レッドブル さん) に返信

> IEを複数、タブを複数立ち上げた場合の同期漏れはしょうがないと思っています。

そもそも、その仕様で作るなら、サーバの状態をポーリングするのは間違ってます。
ブラウザの状態自体がサーバの状態と一致している保証がないわけですから。

ツールバーが同期を取らなければいけないのは、サーバではなくブラウザの方じゃないですか?
サーバの状態がどうであれ、見た目でブラウザとツールバーの同期を取りたいのですよね。

引用返信 編集キー/
■48542 / inTopicNo.16)  Re[4]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (9回)-(2010/04/08(Thu) 15:13:30)
No48534 (.SHO さん) に返信
> ■No48520 (レッドブル さん) に返信
>
>>IEを複数、タブを複数立ち上げた場合の同期漏れはしょうがないと思っています。
>
> そもそも、その仕様で作るなら、サーバの状態をポーリングするのは間違ってます。
> ブラウザの状態自体がサーバの状態と一致している保証がないわけですから。
>
> ツールバーが同期を取らなければいけないのは、サーバではなくブラウザの方じゃないですか?
> サーバの状態がどうであれ、見た目でブラウザとツールバーの同期を取りたいのですよね。
>
ありがとうございます。
そうですね、
アクションの選択肢としては、
1.ツールバー上でログイン
2.ツールバー上でログアウト
3.ブラウザ上でログイン
4.ブラウザ上でログアウト
です。

1.2.の場合は即座にブラウザにも反映するので問題無いです。
3.4.の場合はブラウザの方からログイン、ログアウトしたという情報が取れれば、今回の件は解決できそうです。
引用返信 編集キー/
■48543 / inTopicNo.17)  Re[5]: ツールバーとブラウザ間での値のやり取り
□投稿者/ .SHO (1258回)-(2010/04/08(Thu) 15:21:07)
No48542 (レッドブル さん) に返信

> アクションの選択肢としては、
> 1.ツールバー上でログイン
> 2.ツールバー上でログアウト
> 3.ブラウザ上でログイン
> 4.ブラウザ上でログアウト
> です。
>
> 1.2.の場合は即座にブラウザにも反映するので問題無いです。
> 3.4.の場合はブラウザの方からログイン、ログアウトしたという情報が取れれば、今回の件は解決できそうです。

これたぶん出来るんじゃないですかね。
自分、やり方わからないんで、アレですが…^^; すいません。

で、直接の回答ではないんですが…
ツールバー上でログイン状態を表示する必要ってあるんでしょうか?

現在のログイン状態を利用者はブラウザ上で確認できるわけですし
ツールバー上で何かアクションがあったら、サーバの状態を確認し
ログインしてなければログインすればいいわけですよね。
それで、ブラウザ上もログイン状態に変わるわけだし。
引用返信 編集キー/
■48550 / inTopicNo.18)  Re[6]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (10回)-(2010/04/08(Thu) 15:49:02)
No48543 (.SHO さん) に返信
> ■No48542 (レッドブル さん) に返信
>
>>アクションの選択肢としては、
>>1.ツールバー上でログイン
>>2.ツールバー上でログアウト
>>3.ブラウザ上でログイン
>>4.ブラウザ上でログアウト
>>です。
>>
>>1.2.の場合は即座にブラウザにも反映するので問題無いです。
>>3.4.の場合はブラウザの方からログイン、ログアウトしたという情報が取れれば、今回の件は解決できそうです。
>
> これたぶん出来るんじゃないですかね。
> 自分、やり方わからないんで、アレですが…^^; すいません。
>
> で、直接の回答ではないんですが…
> ツールバー上でログイン状態を表示する必要ってあるんでしょうか?
>
> 現在のログイン状態を利用者はブラウザ上で確認できるわけですし
> ツールバー上で何かアクションがあったら、サーバの状態を確認し
> ログインしてなければログインすればいいわけですよね。
> それで、ブラウザ上もログイン状態に変わるわけだし。

ありがとうございます。
> ツールバー上でログイン状態を表示する必要ってあるんでしょうか?
>
> 現在のログイン状態を利用者はブラウザ上で確認できるわけですし
ブラウザでログアウトして、ツールバー上ではログイン状態のままだと、ツールバー上でアクションするユーザーは「ログイン状態」という勘違いをしたままアクションすることになるので、それを避けたいです。
表示しないとすると、いちいちブラウザで確認しなくてはならずツールバーの利点が損なわれます。

> これたぶん出来るんじゃないですかね。
はい、なんとなくできそうな気がしますが、具体的な方法などが判らないので参考サイトなどがあれば読んでみたいと思うのですが・・・。
ご存知の方いますか?
引用返信 編集キー/
■48553 / inTopicNo.19)  Re[7]: ツールバーとブラウザ間での値のやり取り
□投稿者/ レッドブル (11回)-(2010/04/08(Thu) 17:09:13)
googleツールバーは
ツールバー上のウインドウに検索ワード入れない状態で、ブラウザでgoogle検索すると
ツールバー上のウインドウにも同じワード入りますよね。

ということはツールバーからブラウザの情報を取得してると思うんですが、どなたか方法をご存じないですか。
やりたい事はこれに近いと思うんです。
引用返信 編集キー/
■48555 / inTopicNo.20)  Re[8]: ツールバーとブラウザ間での値のやり取り
 
□投稿者/ 魔界の仮面弁士 (1605回)-(2010/04/08(Thu) 17:42:21)
2010/04/08(Thu) 17:48:14 編集(投稿者)

No48553 (レッドブル さん) に返信
> ということはツールバーからブラウザの情報を取得してると思うんですが、
その場合、ツールバーはどのタイミングでブラウザ情報を取得しにいくべきかを
考慮しなければならない気がします。

タイマー監視するとか、ページ遷移のイベントを拾うとか、あるいはツールバーから
取得しにいくのではなく、検索結果のページ内から JavaScript 経由で
ツールバーに送信する形にするとか。


> どなたか方法をご存じないですか。
C++ での実装は分かりませんが……VB6 の時には、バンドオブジェクトから
以下のような感じで InternetExplorer オブジェクトを得ることができたと思います。

そこまで行ければ、Document プロパティを辿って IHTMLDocument2 を拾えるかも。

Private Sub IObjectWithSite_SetSite(ByVal pUnkSite As sample.IUnknown)
 If Not pUnkSite Is Nothing Then
  Dim isp As sample.IServiceProvider
  Set isp = pUnkSite
  Set mobjInternetExplorer = isp.QueryService(IID_IWebBrowserApp, IID_IWebBrowser2)
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 | 2 >>

管理者用

- Child Tree -