PathFileExistsの罠
VB2005でのPathFileExistsで、はまったのでメモしときます。
PathFileExistsは、引数にファイルパスを指定して、そのファイルが存在する場合、真(0以外)が返され、存在しない場合、偽(0)が返されます。
そのファイルパス中にカタカナが含まれると、なぜかファイルパスの文字列は壊されるのです。
◆NGサンプル
Declare Function PathFileExists Lib "shlwapi" Alias "PathFileExistsA" (ByVal lpszPath As String) As Integer : : Dim strFilePath As String = "C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\AP.lnk" If PathFileExists(strFilePath) = 0 Then MsgBox "ファイルが存在しません。 End If
存在チェックは正常なのですが、そのあとstrFilePathの内容を見ると『スタート』以降が無くなるのです。つまり、strFilePathの内容が壊されるのです。
原因はわかりませんが、パス中のカタカナが悪さをしている感じです。
◆OKサンプル1
これを以下のようにコンスタントにすると大丈夫になります。
Const strFilePath As String = "C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\AP.lnk" If PathFileExists(strFilePath) = 0 Then MsgBox "ファイルが存在しません。 End If
◆OKサンプル2
また、直接引数に文字列を指定しても大丈夫です。
If PathFileExists("C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\AP.lnk") = 0 Then MsgBox "ファイルが存在しません。 End If