Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
DeskTopMemoVBについて
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=266#CommentId2026
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
あにす
 (社会人)
投稿日時
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()
以上です。