投稿者 あにす  (社会人) 投稿日時 2009/2/17 19:30:30
DeskTopMemoVBに不具合がありました。DestTopMemoVBの保存場所のパスが長すぎる場合に、壁紙の設定に失敗するというものです。
壁紙の設定に使用しているWin32APIのSystemParametersInfo関数の仕様なのかバグなのかは分かりませんが、この関数に渡すパスをショートファイル名にすることで不具合を回避出来ます。
Win32APIのGetShortPathName関数でショートファイル名を取得できます。
具体的な修正方法は以下の通りです。

WallpaperChanger.vbファイル

Public Class WallpaperChanger
の下に次の1行を追加
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA"(ByVal lpszIntegerPath As String, ByVal lpszShortPath As System.Text.StringBuilder, ByVal cchBuffer As Integer) As Integer

Public Shared Sub SetWallpaper(ByVal bitmapFile As String, ByVal style As WallpaperLocation)
の下に次の3行を追加
Dim sb As New System.Text.StringBuilder(1024)
GetShortPathName(bitmapFile, sb, sb.Capacity)
bitmapFile = sb.ToString()

以上です。