XP以降のエクスプローラと同様のファイル名ソートをする事になった。そのためには、shlwapi.dllに含まれるStrCmpLogicalWという関数を使用する必要がある事が分かった。ところが、ここで問題となるのがHTAから、このようなwin32apiを呼び出す方法。調べてみたところ、以下のサイトが参考になった。言語とシステム開発に関して個人的に、外部ライブラリを新たに追加する方法は除外。管理が面倒だし、スクリプトファイル単体でお手軽に使いたいから。今回は戻り値の取得が必要なので、戻り値の取得できないrundll32.exeを使用する方法は使えない。そんなわけで、今回は上記サイトにある「(3)VBAのCALL関数を,WSHやコマンドプロンプトから呼び出す」を採用。いやまぁ、Excelが必要じゃないかというツッコミ所があるのだけど、今回使用する環境ではOfficeがインストールされている可能性が高いのでその辺は妥協。VBAのCALL関数を使って以下のように変数AとBの文字列を比較してみた。);ところがこれは上手くいかなかった。正確に言うと、マルチバイト文字で正しく動作していなかった。理由を色々調べてみると、どうもCALL変数に渡すデータ型の指定が良くないようだ。Office.com更に調べていくと、マルチバイト用のデータ型指定という物が存在する事が分かった。Fの後ろに「%」をつけてC%、F%となるそうな。そんなわけで、修正後は以下のようになる。);これで日本語でも正しくエクスプローラ同様のソートが行えるようになった。ちなみに、JavaScriptでソートする場合は以下のような感じ。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。