.NETです
InternetExplorerで表示中のURLを取得したいので、
アドレス欄のエディット内から取得しようとしています。
しかし、EnumChildWindowsで子ウィンドウから探しても見つからないのです
ハンドルからGetWindowTextによって取得しようとしてるのが悪いのでしょうか?
EnumWindows(w_Delegate, 0)
EnumChildWindows(windowhandle, c_Delegate, Nothing)
'トップレベルウィンドウのコールバック
Public Function EnumWindowsProc(ByVal hwnd As Integer, ByVal lParam As Integer) As Integer
Dim str As String
str = Space(8)
GetClassName(hwnd, str, Len(str))
str = Mid(str, 1, InStr(1, str, vbNullChar) - 1)
If str = "IEFrame" Then
windowhandle = hwnd
Return False
Else
Return True
End If
End Function
'子ウィンドウのコールバック
Public Function EnumChildProc(ByVal hwnd As Integer, ByVal lParam As Integer) As Integer
Dim str As String
Dim url As String
str = Space(64)
GetWindowText(hwnd, str, Len(str))
url = str
str = Mid(str, 1, 4)
If str = "http" Then
geturl = url
Return False
Else
Return True
End If
End Function
UWSC(自動化ソフト兼微プログラミング言語)で、EDITを全取得してみたらできました
誰か答えてくれませんか?
確認ですけど、Visual C++の質問でしょうか?
提示されているコードはVBのように見えるのですけど。
VBなら板違いです。
→VB用の掲示板があるのでここを閉じて移動してください。
VCなら
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200701/07010017.txt
といった具合に取得できます。
単純にIEのトップのウィンドウハンドルから探したところで,
エディットコントロールが直下にないのだから見つかるわけがありません。
COMコンポーネントとして扱わないのであれば,
再帰させて子孫を調べてみつける必要があります。
# つーか,あれはコンボボックス……。
とりあえず,SPY++で構造を探ってみることをお勧めします。
># つーか,あれはコンボボックス……。
この辺は、所詮他人の作ったアプリなので、不変である事は期待できません。
Vista の (IE ではなく) Explorer のアドレスバーはツールバー(と他の何かのコンビネーション?)になっているはずです。
Blueさん>
激しく板違いでした…申し訳ありません
一応助言を受け取ってしまったので消さずに解決済みにします
Yuoさん>
SPY++ですね、紹介ありがとうございます
コントロールやCOM等の構造についてもう少し詳しく調べ覚えする必要がありそうです
渋木宏明(ひどり)さん>
不変ではない点について、心に留めておきます
皆さん失礼しました
ありがとうございます
ツイート | ![]() |