C++

管理者として起動するショートカットを作る

EXEファイルを実行する際に自動的に「管理者として実行」するには、そのEXEのプロパティ>互換性>特権レベルを設定すればよく、 それをプログラムで設定するには、上記設定に対応するレジストリである HKCU\SOFTWARE\Microsoft\\Windows NT\CurrentVersion\…

Clinkの日本語パス問題ふたたび(3)

clink.get_env()でUTF-8を返すように修正するわけですが、clink.get_env()の実体は回りまわってlua.cにありました。 また、Win32 APIではMBCS(ShiftJIS)→UTF-8への直接的な変換はできないので、いったんWideChar(UTF-16)を経由して変換します。ということで…

Clinkの日本語パス問題ふたたび(2)

前回の「気になる問題」というのは、MCBS(ShiftJIS)でパスを扱うときの注意事項である「ShiftJISの2バイト目に現れる"\"(0x5c)への対応」なのですが、前回も調べたfind_files_impl()%lua.cには slash = strrchr(buffer, '\\'); slash = slash ? slash : strr…

Clinkの日本語パス問題ふたたび

Clinkの日本語パス問題を修正(3)のコメント欄 マルチバイト(日本語)を含むパス(%PATH%)に"aaa.bat"を置いて、clinkでaa[TAB]と入力しても補完が聞かない問題、もしお暇があれば見ていただけませんか? というリクエストがありましたので、ふたたびコード…

Clinkの日本語パス問題を修正(3)

意外に知られていませんが、Explorerでファイルやフォルダを選択した状態でのコンテキストメニューはShiftキーを押しながら右クリックするとメニューが一部変わります。 たとえばWindows7でExcelファイルを選択してShift+右クリックすると「読み取り専用で開…

Clinkの日本語パス問題を修正(2)

前回の続き。 カレントディレクトリのパスに日本語が含まれていても入力行の改行位置が狂わないようにするには、wcwidth(x)マクロをきちんと文字幅を返すように実装すればよいのですが、このマクロの引数"x"はwchar_tの文字です。 そしてwchar_t=UNICODE(UT…

Clinkの日本語パス問題を修正(1)

【レビュー】Windows OS上で超気軽にbash環境を楽しめる「clink」 コマンドプロンプト派なら入れておくべき機能改善ツール『Clink』 などで紹介されているWindowsのコマンドプロンプトにbash風の行編集機能他を追加するClinkですが、カレントディレクトリの…

win-iconvをVisual Studioでビルドできるようにする

わけあってWindowsで動くiconv.dllの非LGPL版が必要となったのでいろいろ物色していたところ、 iconvmlang win-iconv の2つを見つけたのですが、前者は今回の要件に対しては機能不足だったので後者をベースに作業することに。 ただ、win-iconvの配布ファイル…

C++のプログラムでショートカットファイルの実体を自力で解析

C++でショートカットファイル(.LNK)の実体を参照しようとすると、普通は ショートカットのリンク先を取得する - Visual C++プログラミングのメモ ショートカット - KAB-studio のようにCOM(IShellLink/IPersistFile)を使うのが普通なのでしょうが、このやり…