DeskTopMemoVBについて

タグの編集
投稿者 あにす  (社会人) 投稿日時 2009/1/28 12:49:37
今回、投稿プログラムにて掲載して頂いたDeskTopMemoVBの作者のあにすです。
DeskTopMemoVBを掲載していただきありがとうございます。

これはもともと実用目的でC#で書いたものです。DeskTopMemoVBと同じく付箋を壁紙に埋め込んだり、デスクトップに直接描画して終了するような非常駐の付箋紙ソフトは他にもあったのですが、試したソフトの全てが、付箋を貼る位置を指定するUIの操作が煩わしかったので自作するにいたりました。
その結果出来たソースコードが面白かったので、Visual Basic 中学校の皆さんにも見て頂ければと思いVB.NETに書き換えました。特に付箋に入力したテキストに合わせて自動で付箋のサイズが変わる動き等は是非皆さんにも見て頂きたいです。

プログラムに関する意見、質問、アドバイス等いただけるととても嬉しいです。

※改造のヒント
FusenFormクラスはパブリックメンバーのシグネチャーが揃っていれば差し替えられるように作っているので(本当は抽象クラスやインターフェースを用意するのがきれいなんでしょうが…)、付箋をもっと派手でかっこいいものにすると面白いと思います。
投稿者 あにす  (社会人) 投稿日時 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()

以上です。
投稿者 るきお  (社会人) 投稿日時 2009/2/19 06:47:05
こんにちは。
あにすさん情報提供ありがとうございます。
DeskTopMemoVBはちょっと発想が面白いのでみなさんも見てみてください。

ところで、あにすさん、私からのメールは届いていたんでしょうか…??
投稿者 あにす  (社会人) 投稿日時 2009/2/19 07:52:34
>るきおさん
08年11月5日に*dion.ne.jp宛てに頂いたのが最後です。
もし*@yahoo.co.jp宛てに頂いていたとしたら、スパムメールに紛れてしまったのかも知れません。
僕の返信をお待たせしてしまっていたのでしたら本当に済みません。