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

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

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

Re[5]: IEと自プログラムとの連携


(過去ログ 55 を表示中)

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

■30843 / inTopicNo.1)  IEと自プログラムとの連携
  
□投稿者/ たつ (1回)-(2009/01/08(Thu) 10:45:47)

分類:[C#] 

お世話になります。
C#(.net)の勉強を兼ねて、他のプログラム(IE)との連携を
してみたいと考えています。

◎やりたい事
--------------------------------------
自プログラムは、対象URL、ID、PWを管理している。

例:
URL:https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.yahoo.co.jp
ID:hogehoge
PW:hogepass

ここで、保持しているURLをIE上で表示している場合、
指定されたキーで、保持しているIDとPWを入力させようと
考えています。
(カーソルをID入力欄にセットしてALT+1で"hogehoge"が
入力されると言う具合です。)
--------------------------------------
少なくとも、IE上でキー操作をフックして、自プログラムとの
連携をしなければならないとは思いますが、このあたりが初めて
でさっぱりわかりません。
どのような項目を学習すべきなのか指針を頂きたいです。

そもそも、自プログラムをIEのプラグインとしてしまえば
話はもう少し早いのかも知れませんが、それはそれでプラグインの
作り方から学習しなくてはならないので次のステップでと
考えています。

環境はXP/Vista VS2008(C#) .netFramework3.5を
使用しています。

宜しくお願い致します。
引用返信 編集キー/
■30852 / inTopicNo.2)  Re[1]: IEと自プログラムとの連携
□投稿者/ やじゅ (902回)-(2009/01/08(Thu) 12:46:30)
やじゅ さんの Web サイト
2009/01/08(Thu) 12:47:03 編集(投稿者)

No30843 (たつ さん) に返信
> 少なくとも、IE上でキー操作をフックして、自プログラムとの
> 連携をしなければならないとは思いますが、このあたりが初めて
> でさっぱりわかりません。

別のやり方ですが、アプリケーションに対してキーストロークを送る
って方法があります。

下記の例はVisual Basicですが、電卓を起動して、"22"が表示されます。
Dim ProcID As Integer
ProcID = Shell("ICALC.EXE", AppWinStyle.NormalFocus)
AppActivate(ProcID)
My.Computer.Keyboard.SendKeys("22", True)

アプリケーションを起動してキーストロークを送る
http://msdn.microsoft.com/ja-jp/library/ms172702.aspx
引用返信 編集キー/
■30875 / inTopicNo.3)  Re[2]: IEと自プログラムとの連携
□投稿者/ たつ (2回)-(2009/01/08(Thu) 15:17:48)
No30852 (やじゅ さん) に返信
> 2009/01/08(Thu) 12:47:03 編集(投稿者)
>
> 別のやり方ですが、アプリケーションに対してキーストロークを送る
> って方法があります。

お返事ありがとう御座います。
質問を投稿後、色々と捜しまして、上記の方法を発見して
今、作成しているところなのです。

アクティブなIEのハンドルを取得する所までは出来たのですが、
そのIEが表示しているURLを取る方法が出来ません。

EnumChildWindows()を使って、ウィンドウクラス名が
"Internet Explorer_Server"のものを取得して、そのハンドルを
使ってさらにIHTMLDocumentを取得する・・・と理解しているのですが、
関数をどう呼んでやれば良いのかに詰まっています。
(認識はあってますよね?)

このあたりC#でのサンプルソース等掲載しているところは
ご存知ありませんでしょうか?
宜しくお願い致します。

引用返信 編集キー/
■30883 / inTopicNo.4)  Re[3]: IEと自プログラムとの連携
□投稿者/ やじゅ (904回)-(2009/01/08(Thu) 15:48:32)
やじゅ さんの Web サイト
No30875 (たつ さん) に返信
> EnumChildWindows()を使って、ウィンドウクラス名が
> "Internet Explorer_Server"のものを取得して、そのハンドルを
> 使ってさらにIHTMLDocumentを取得する・・・と理解しているのですが、


「EnumChildWindows IE」で検索して、VB2005でならありましたね。
C#に変換するか、そのソースを見て応用すればいいでしょう。

IEのウィンドウハンドルからIHTMLDocumentを取得する(アクティブウィンドウのIEのURLを取得する)
http://homepage1.nifty.com/yasunari/VB/VB2005/GetHtmlObject.htm

引用返信 編集キー/
■30885 / inTopicNo.5)  Re[4]: IEと自プログラムとの連携
□投稿者/ たつ (3回)-(2009/01/08(Thu) 15:57:15)
No30883 (やじゅ さん) に返信

> 「EnumChildWindows IE」で検索して、VB2005でならありましたね。
> C#に変換するか、そのソースを見て応用すればいいでしょう。
>
> IEのウィンドウハンドルからIHTMLDocumentを取得する(アクティブウィンドウのIEのURLを取得する)
> http://homepage1.nifty.com/yasunari/VB/VB2005/GetHtmlObject.htm
>

ありがとうございます。
早速参考にさせていただきます。

解決済み
引用返信 編集キー/
■30887 / inTopicNo.6)  Re[3]: IEと自プログラムとの連携
□投稿者/ 渋木宏明(ひどり) (1022回)-(2009/01/08(Thu) 16:18:49)
渋木宏明(ひどり) さんの Web サイト
> EnumChildWindows()を使って、ウィンドウクラス名が
> "Internet Explorer_Server"のものを取得して、そのハンドルを
> 使ってさらにIHTMLDocumentを取得する・・・と理解しているのですが、

IE が HTML を表示している場合は IHTMLDocument が取得できますが、PDF を表示しているような場合は IHTMLDocument は取得できません。


引用返信 編集キー/
■30889 / inTopicNo.7)  Re[4]: IEと自プログラムとの連携
□投稿者/ たつ (4回)-(2009/01/08(Thu) 16:41:48)
No30887 (渋木宏明(ひどり) さん) に返信
>>EnumChildWindows()を使って、ウィンドウクラス名が
>>"Internet Explorer_Server"のものを取得して、そのハンドルを
>>使ってさらにIHTMLDocumentを取得する・・・と理解しているのですが、
>
> IE が HTML を表示している場合は IHTMLDocument が取得できますが、PDF を表示しているような場合は IHTMLDocument は取得できません。
>
>

追加コメントありがとうございます。
IHTMLDocumentはExcelやWordなんかの場合も同じなのでしょうか?
動くようになったらテストしてみます。

引用返信 編集キー/
■30890 / inTopicNo.8)  Re[5]: IEと自プログラムとの連携
□投稿者/ たつ (5回)-(2009/01/08(Thu) 16:42:11)
解決済忘れました。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -