tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルVB.NETでIEのアドレス文字列につきまして
記事No3086
投稿日: 2006/02/11(Sat) 13:08
投稿者スー
[OSのVer]:Windows XP    [VBのVer]:VB.NET 2005  

お世話になります。
VB.NETプログラムでIEのアドレスにあります文字列
[hhttp://................/index.htm]の
取得するプログラムにつきまして、お手数をお掛けしますが、
よろしくお願い致します。

[ツリー表示へ]
タイトルRe: VB.NETでIEのアドレス文字列につきまして
記事No3088
投稿日: 2006/02/11(Sat) 14:38
投稿者YAS
確認させてください。
WebBrowserコントロールを使って独自のブラウザを作っていて現在のURLが取得したいのですか?
それとも起動しているInternetExplorerの現在のURLを取得したいのですか?

[ツリー表示へ]
タイトルRe^2: VB.NETでIEのアドレス文字列につきまして
記事No3089
投稿日: 2006/02/11(Sat) 16:44
投稿者スー
[OSのVer]:Windows xp    [VBのVer]:VB.NET 2005  
早々、ご教授願えましてお礼を申します。
申し訳ありません。VB.NETは覚え中でコントロールにつきましては分かりません。
調べてみましたらWebBrowserコントロールはVB2005以降の使用とありましたので
特にWebBrowser指定はしていません。
起動しているInternetExplorerの現在のURLを取得したいです。
VB6.0ではIEのアドレスにある文字列が取得できます。
Internet Explorer ブラウザの起動後、パソコン画面のWebページ
のアドレス(D) http://・・・・・・・から取得はIEのハンドル→チャイルドをたどって
アドレス欄エディタのあります文字列を取得しています。
それをVB6.0からVB2005へアップデート変換しますとIEのアドレス部分でエラー
となります。その部分以外は問題なくVB2005で動作できました。
VB.NET2003のIEのアドレス部分プログラムをVB2005に追加すればエラーは、
発生しないのではと思いますが。話が長くなりました。
ご返信くださいましてありがとうございました。

[ツリー表示へ]
タイトルRe^3: VB.NETでIEのアドレス文字列につきまして
記事No3091
投稿日: 2006/02/11(Sat) 22:59
投稿者スー
お世話になります。
VisulStudio2005でIEのアドレス文字が取得出来ない原因と思われるメッセージがありました。
VB6.0→VisulStudio2005 アップグレードウィザード後に問題がありました。
szCSDVersion As String * 128の所がバッファに合わせるメッセージになっていましたが
どのように記述にすれば良いのか分かりません。ご存知の方がおりましたらよろしくお願い
いたします。

−−−−VB6.0−−−
Type OSVERSIONINFO
       dwOSVersionInfoSize As Long
          ・
          ・
      szCSDVersion As String * 128 ’●
End Type
          ↓
          ↓
          ↓ 
−−−−VisulStudio2005−−−
Structure OSVERSIONINFO
      Dim dwOSVersionInfoSize As Integer
          ・
          ・
       'UPGRADE_WARNING: 固定長文字列のサイズはバッファに合わせる必要があります。 詳細
については
        <VBFixedString(127), System.Runtime.InteropServices.MarshalAs
(System.Runtime.In ’●
End Structure

[ツリー表示へ]
タイトルRe^4: VB.NETでIEのアドレス文字列につきまして
記事No3093
投稿日: 2006/02/11(Sat) 23:39
投稿者YAS
構造体の中の固定長文字列については下記のページを参考にしてみてください。

hhttp://www.microsoft.com/japan/msdn/net/vbtransitionguide/chapter4/chapter4_8.asp

[ツリー表示へ]
タイトルRe^3: VB.NETでIEのアドレス文字列につきまして
記事No3092
投稿日: 2006/02/11(Sat) 23:34
投稿者YAS
[OSのVer]:Windows    [VBのVer]:VB.NET  
> 起動しているInternetExplorerの現在のURLを取得したいです。

それならばアドレスの文字列を取得するよりもシェルオブジェクトを取得して
document.urlを参照した方がよいのではないでしょうか。
アドレス欄は非表示の場合もありますし,入力中の場合もあります。
以下のサンプルは開いているInternetExplorerのURLを列挙します。
参考になれば幸いです。

'ShellObject取得サンプル
Imports System.Runtime.InteropServices

Public Class Form1
    Dim WithEvents List As ListBox
    Dim WithEvents Timer As Timer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles MyBase.Load
        List = New ListBox
        List.Dock = DockStyle.Fill
        List.IntegralHeight = False
        Me.Controls.Add(List)
        Timer = New Timer
        Timer.Interval = 1000
        Timer.Enabled = True
    End Sub

    Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Timer.Tick
        Dim Shell As Object = Nothing 'Shellオブジェクト(COMオブジェクト)
        Dim Document As Object = Nothing 'IWebDocument2オブジェクト(COMオブジェクト)
        Dim State As READYSTATE
        List.Items.Clear()
        Try
            Shell = CreateObject("Shell.Application").Windows 'Shellオブジェクトを取得
            For Each Obj As Object In Shell
                Try
                    State = CType(Obj.ReadyState, Integer) 'アクセス可能かどうか調べる
                    If State >= READYSTATE.INTERACTIVE Then
                        Document = Obj.document
                        Dim DocumentType As String = TypeName(Document)
                        If DocumentType.Substring(0, 4) = "HTML" Then 'IEだけ
                            List.Items.Add(Obj.document.url)
                        End If
                    End If
                Catch ex As Exception
                    Debug.Print(ex.Message)
                Finally
                    If Document IsNot Nothing AndAlso Marshal.IsComObject(Document) Then
                        Marshal.ReleaseComObject(Document) 'COMオブジェクトを解放
                    End If
                End Try
            Next
        Catch ex As Exception
            Debug.Print(ex.Message)
        Finally
            If Shell IsNot Nothing AndAlso Marshal.IsComObject(Shell) Then
                Marshal.ReleaseComObject(Shell) 'COMオブジェクトを解放
            End If
        End Try
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Me.Timer.Enabled = False
        Me.Timer.Dispose()
        Me.List.Dispose()
    End Sub

End Class

Public Enum READYSTATE
    UNINITIALIZED = 0
    LOADING = 1
    LOADED = 2
    INTERACTIVE = 3
    COMPLETE = 4
End Enum

[ツリー表示へ]
タイトルRe^4: VB.NETでIEのアドレス文字列につきまして
記事No3094
投稿日: 2006/02/12(Sun) 00:19
投稿者スー
YAS様
幾度にも渡りまして、ご指導して頂きましてありがとうございました。
構造体の中の固定長文字列についてはまだ解決しませんが
大変参考になりそうですので、安心できました。また
シェルオブジェクトを取得してにつきましては大変貴重と思われます
長文のソフトを提供してくださいまして心より厚くお礼を申し上げます。
VisulStudio2005が10日に届き気がつけば12日なっていました。
VisulStudio2005につきましてはこれから覚えていくソフトですので
シェルオブジェクトは今から楽しみです。また、アドレス欄が非表示の
場合もあるとのことははじめて聞きました。いろいろと
本当にありがとうございました

[ツリー表示へ]