• 締切済み

[VB] ブラウザからの D&D について

こんにちは。VisualBasic2008で画像を扱うWindowsアプリケーションを開発しているのですが、 IE や FireFox などのブラウザでWebページなどを表示した際、 そのWebページに含まれる画像をフォームにドラッグ&ドロップすることによって 取得することがうまくいきません。 'Me.AllowDrop=True 'PictureAdd(Image as Bitmap) は画像を追加するものです。 Private Sub Form1_DragEnter(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter If e.Data.GetDataPresent(GetType(Bitmap)) Then e.Effect = DragDropEffects.Copy End If End Sub Private Sub Form1_DragDrop(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop, Panel1.DragDrop Try PictureAdd(e.Data.GetData(GetType(Bitmap))) Catch ex As Exception MessageShow("エラー: " & ex.Message) End Try End Sub

みんなの回答

回答No.1

完全な回答ではありません。アドバイスというよりも参考意見として。 画像をドラッグ&ドロップしたときに、インターネット一時ファイルとして保存された画像ファイルのパスであれば取得できました。(IEのみ、FireFoxは未検証) Private Sub Form1_DragEnter(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles   If e.Data.GetDataPresent("FileName") Then     e.Effect = DragDropEffects.Copy   End If End Sub Private Sub Form1_DragDrop(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles   If e.Data.GetDataPresent("FileName") Then     Dim strFileName As String() = CType(e.Data.GetData("FileName"), String())     Dim bmpLoad As New Bitmap(strFileName(0))     PictureBox1.Image = bmpLoad   End If End Sub ただ、リンクが張られている画像などではうまく取れません。 DragEnterイベント内で   For Each strEnum As String In e.Data.GetFormats()     Call Console.WriteLine(strEnum & vbCrLf)   Next このようにすれば、取得可能なフォーマット一覧が取得できます。ドラッグするものによって結構内容が違いました。 他のアプリがどんな挙動をしているかと思い、いろんなものにドラッグしてみました。 リンクなしの画像であれば、ペイントやPhotoshopなどにドラッグ可能ですが、やはりファイルから開いていますね。 リンク付の画像はペイント、Photoshopでは無反応、Workではリンク先のURLしか出てきませんでした。 参考になれば。

talosoft
質問者

お礼

ありがとうございます。 ブラウザからのドラッグ&ドロップがこんなに大変だということを知ってびっくりしました。

関連するQ&A