パス名を指定のバイト数に収まる長さにするには

パス名を指定のバイト数に収まる長さにしてみます。
キーワードは「PathCompactPathEx()関数」です。
PathCompactPathEx()関数は指定のパス名を、指定した長さのバイト数に収まるように短縮してくれます。
バイト制限などをするようなときに便利ですが、
パス名の中に2バイト文字が含まれているときに、指定のバイト数が2バイト文字の
1バイト目と2バイト目の間になると文字化けを起こすので注意が必要です。

実行時の様子
'パス名をバイト単位で指定した長さの短縮形にする
Private Declare Function PathCompactPathEx Lib "shlwapi.dll" Alias "PathCompactPathExA" _
    (ByVal pszOut As String, ByVal pszSrc As String, ByVal cchMax As Long, ByVal dwFlags As Long) As Long

Private Sub Command1_Click() Dim temp As String temp = String(LenB(Me.Text1.Text), Chr(0)) Call PathCompactPathEx(temp, Me.Text1.Text, LenB(Me.Text1.Text) / 2, 0) Me.Text2.Text = temp End Sub
Private Sub Form_Load() Me.Label4.Caption = "変換後のパス名" & vbCrLf & "(元のパス名の半分のバイト数を指定した場合)" End Sub
ダウンロード