投稿者 YuO  (社会人) 投稿日時 2013/4/5 03:56:36
えーっと、MSDNにもあるのですが、XP Visual Stylesを「使っていないとき」という制限があります。

・アプリケーションフレームワークを使っている場合は、プロパティで[XP Visual スタイルを有効にする]チェックボックスのチェックを外す
・アプリケーションフレームワークを使っていない場合は、Application.EnableVisualStylesメソッドを呼び出さない
が条件になります。

以下、VB 2012用のコード断片です。
Private Const WM_USER As Integer = &H400
Private Const PBM_SETBARCOLOR As Integer = WM_USER + 9

<DllImport("User32.dll", PreserveSig:=False, CharSet:=CharSet.Auto)>
Private Shared Sub SendMessage(hWnd As IntPtr, Msg As UInteger, wParam As IntPtr, lParam As IntPtr)
End Sub

Private Shared Sub SetBarColor(target As ProgressBar, color As Color)
    If Application.RenderWithVisualStyles Then
        Throw New InvalidOperationException("Visual スタイルが有効な状態では色の変更はできません。")
    End If
    SendMessage(target.Handle, PBM_SETBARCOLOR, IntPtr.Zero, CType(color.R Or (color.G << 8) Or (color.B << 16), IntPtr))
End Sub