VB.NET – DirectShowで動画再生

ちょっとした動画プレーヤーでも自作してみようと思って調査。
難しそうだなと思いましたが、
DirectShowの.NET用ライブラリが公開されており、これを使うことで超簡単に動画再生できました。

下記サイトから最新版をダウンロード
DirectShowNet library

解凍したフォルダにある「DirectShowLib-2005.dll」を参照の追加する。

例:フォームのパネルに動画を表示再生

Imports DirectShowLib

Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim hr As Integer
    Dim filepath As String

    Dim fg As FilterGraph
    Dim graphBuilder As IGraphBuilder
    Dim mediaControl As IMediaControl
    Dim videoWindow As IVideoWindow

    fg = New FilterGraph
    graphBuilder = DirectCast(fg, IGraphBuilder)
    mediaControl = DirectCast(fg, IMediaControl)
    videoWindow = DirectCast(fg, IVideoWindow)

    filepath = “C:\xxx.mpg”

    hr = graphBuilder.RenderFile(filepath, Nothing)

    ’パネルに表示する
    videoWindow.put_WindowStyle(WindowStyle.Child)
    videoWindow.SetWindowPosition(0, 0, Me.Panel1.Width, Me.Panel1.Height)
    videoWindow.put_Owner(Me.Panel1.Handle)

    ’再生
    mediaControl.Run()

  End Sub
End Class

コマ送りや、早送りなんかも簡単にできるので
オリジナル動画プレーヤーが簡単に作れますね!

メモ:DirectShow リファレンス
MSDN – IGraphBuilder インターフェイス

AccessからPostgreSQLのデータ参照で文字化け

PostgreSQLのテーブルデータをMicrosoft Office Accessで見たかったので
調べていたらPostgreSQLのODBCドライバが必要とのこと。
ググって見ると、
PostgreSQL ODBC Driver 日本語版 というのがヒットしたので、
サイトからダウンロードし、ODBCドライバをインストール。

AccessでインストールしたODBCドライバを使用し、テーブルをリンク。
しかし、テーブルのデータを見てみると文字化けしている・・・orz

そこで再度ググって調査。
ODBCドライバのバージョンが古かったようだ。

使っているPostgreSQLのバージョンは8.4だが、
PostgreSQL ODBC Driver 日本語版のバージョンは7.1だった。

ODBCドライバは、公式サイトからODBCインストーラがダウンロードできるのがわかったので、
早速バージョンが一致するODBCインストーラ「psqlodbc_08_04_0200.zip」をダウンロードしてインストール。

公式サイトのODBCインストーラ
http://www.postgresql.org/ftp/odbc/versions/msi/

再度、Accessでデータテーブルのリンクを行う。
ドライバの選択肢に、
・PostgreSQL ANSI
・PostgreSQL Unicode
の二つが追加されていた。
使用しているデータベースはUTF-8なのでPostgreSQL Unicodeを選択。

テーブルデータには文字化けしてない日本語がバッチリ表示されました。

一件落着!

アフィリエイト

ブログやホームページを持っている人なら知っているはず、知っておくべきアフィリエイト。
もしアフィリエイトを知らない人がいるなら知っておこう。

アフィリエイトとはWEBサイトやブログに企業の商品やバナーを貼ることで、報酬を得ることができる仕組みのことです。主な報酬獲得例として、商品の広告を掲載し、その広告から経由して売上げが合った場合、売上げの○○%を報酬としてもらう事ができます。広告を掲載には、アフィリエイトサービスプロバイダやECサイト、に登録して許可を得る必要があります。

アフィリエイトサービスプロバイダ(ASP)とは あなたと企業の間の仲介役です。紹介や事務処理を行ってもらう代わりに、あなたの報酬の一部を支払います(差し引かれます)。同じ企業の広告でも、報酬額がアフィリエイトサービスプロバイダによっては違うこともあります。

要は、広告を表示して報酬を貰うためには、ASPと契約が必要ってこと。

そこで、おすすめのASPが

A8.net
 アフィリエイト

A8.netは、国内最大級のアフィリエイトサービスプロバイダーです。参加ECサイト数は、数千社。数多い広告の中から、あなたのサイトにあった広告を選ぶことができます。アフィリエイターなら誰もが登録しているでしょう。登録審査の難易度が易しいので初心者の方でも参加しやすいです。管理画面も使いやすいのでまさに初心者向けです。ここの審査で落とされるなら他のサイトでも落とされると思っていいほど。

VB.NET – TrackBarでクリックした位置に移動

Trackbarでシークバーのようにクリックした位置に移動させたいと思っていたんだけど、
Trackbarにはそういったプロパティやイベントがみあたらない・・・

「LargeChange」プロパティというのがあって、
マウスのクリックや、PAGE UP および PAGE DOWN キーを押したときにスライダが移動するポジション数を指定できるのだが、0にしたら移動するかも!?なんて期待を持ちながら設定してみたけどスライダがまったく動かず・・・当たり前か><
クリックした場所に必ず目盛りがあるわけではないし、Trackbar標準機能ではできないのかなぁ。

仕方なく、無理やり実装してみた。
方法は、LargeChangeを0にしてマウスイベントを制御してスライダの位置を設定。
PAGE UPやPAGE DOWNキーで移動しなくなるけどこれらのキーを使う人はほとんどいないでしょう!?ということで。

Private scrollflg As Boolean

Private Sub TrackBar1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar1.MouseDown
  scrollflg = False
End Sub

Private Sub TrackBar1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar1.MouseUp
  Dim seekWidth As Double
  Dim seekValue As Integer
  Dim ticWidth As Double

  ‘左クリック以外は移動しない
  If e.Button <> Windows.Forms.MouseButtons.Left Then
    Exit Sub
  End If

  ‘スクロール移動した場合は移動しない
  If scrollflg = True Then
    Exit Sub
  End If

  ‘TrackBar範囲以外の場合は移動しない
  If e.X < 0 OrElse e.X > TrackBar1.Width OrElse e.Y < 0 OrElse e.Y > TrackBar1.Height Then
    Exit Sub
  End If

  If e.X < 8 Then
    TrackBar1.Value = TrackBar1.Minimum
  ElseIf e.X > TrackBar1.Width – 8 Then
    TrackBar1.Value = TrackBar1.Maximum
  Else
    seekWidth = TrackBar1.Width – 16
    ticWidth = seekWidth / (TrackBar1.Maximum – TrackBar1.Minimum)
    seekValue = CInt((e.X – 8) / ticWidth) + TrackBar1.Minimum
    TrackBar1.Value = seekValue
  End If

End Sub

Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
  scrollflg = True
End Sub

8を引いたりしてるのはTrackBarコントロールの端から8pxのところに目盛り位置があるから(両端合わせて16)
一応それっぽい動きはしているけど、もっと良い方法があったらご教授願いますm(..)m

VB.NET – WebBrowserからJavascriptのfunctionを実行

.NETには、WEBページを表示することができるWebBrowserコントロールがあります。
このWebBrowserコントロールに表示したWebページに含まれるJavascriptの関数を呼び出す方法を紹介します。

Private Sub ExecJacascript()
   ‘引数がある場合は設定
  Dim args(0) As Object
  args(0) = “こんにちわ”

   ‘jacascriptの関数名を指定して呼び出し
  Me.WebBrowser1.Document.InvokeScript(“helloword”, args)

End Sub

 
WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera