WebBrowserに表示したJPEGをPictureBoxに表示するには?

解決


コンボ  2004-10-15 23:35:55  No: 86047

WebBrowserに

Dim objImg As Object
  Set objImg = WebBrowser.Document.getElementsByTagName("IMG")
  WebBrowser.Navgate2 objImg(0).src

として表示しているのですが、このobjImg(0).srcの画像を

PictureBox.Picture = LoadPicture(objImg(0).src)

としてもエラーが発生します。表示させる方法を教えていただけますか?


sasa  2004-10-16 00:01:50  No: 86048

LoadPictureの最初の引数はファイル名です。
有効なファイル名を指定してください。


コンボ  2004-10-16 00:17:38  No: 86049

Dim strString As String
  strString = objImg(0).src
  PictureBox.Picture = LoadPicture(strString)

としますと、「ファイル名が無効です。」のエラーが発生します。
同じような質問があり、そこでは「OleLoadPicturePath」という
APIを紹介していたのですがご存知でしょうか?検索しましたが
英語のサイトになってしまっていて。


コンボ  2004-10-16 00:18:52  No: 86050

ここです。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200408/04080029.txt


コンボ  2004-10-16 00:49:49  No: 86051

要は

PictureBox.Picture = LoadPicture("http://img.yahoo.co.jp/images/main11.gif")

なようなことができるかということなのですが、どなたか教えていただけますか?


sasa  2004-10-16 03:11:36  No: 86052

サンプルが欲しいわけですね。
明確にあっているか分かりませんが、動作はするサンプルを提供します。
もっとスマートな形にして使用してください。

'定義部分
Public Type UUID
   id1    As Long
   id2    As Integer
   id3    As Integer
   id4(7) As Byte
End Type
Public Const S_OK = 0
Public Declare Function OleLoadPicturePath Lib "oleaut32.dll" (szURLorPath As Any, ByVal punkCaller As Long, _ 
                      ByVal dwReserved As Long, ByVal clrReserved As Long, riid As UUID, ppvRet As Any) As Long

----------------------------------------------------------------------------------------------------------------

’コード部分
  Dim objImg        As Object
  Dim bytB()        As Byte
  Dim IID_IPicture  As UUID
  Dim oPic          As IPicture
  
    
  Set objImg = WebBrowser1.Document.getElementsByTagName("IMG")
  
  IID_IPicture.id1 = &H7BF80980
  IID_IPicture.id2 = &HBF32
  IID_IPicture.id3 = &H101A
  IID_IPicture.id4(0) = &H8B
  IID_IPicture.id4(1) = &HBB
  IID_IPicture.id4(2) = &H0
  IID_IPicture.id4(3) = &HAA
  IID_IPicture.id4(4) = &H0
  IID_IPicture.id4(5) = &H30
  IID_IPicture.id4(6) = &HC
  IID_IPicture.id4(7) = &HAB
  
  bytB = objImg(0).src  'OleLoadPicturePathのURLはUnicodeで渡す必要がある
  If OleLoadPicturePath(bytB(0), ByVal 0&, ByVal 0&, ByVal 0&, IID_IPicture, oPic) = S_OK Then
    Set Picture1.Picture = oPic
  End If
  Set oPic = Nothing


コンボ  2004-10-17 01:25:34  No: 86053

Dim oPic As IPicture

ではなく

Dim objPic As Object

If OleLoadPicturePath(bytB(0), ByVal 0&, ByVal 0&, ByVal 0&, IID_IPicture, objPic) = S_OK Then
    Set Picture1.Picture = objPic
End If
Set objPic = Nothing

とし解決しました。ありがとうございます


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加