Notepad++ 7.5.8 ではタブメニューにファイルの場所をコマンドプロンプトで開くという項目がある。
https://github.com/sakura-editor/sakura/issues/420#issuecomment-419648537
「Command Prompt Here」として知られていた機能で、Windows Vista では「コマンド ウィンドウをここで開く」として標準搭載されました。調べると Windows 95 の PowerToys までさかのぼれるようです。最近は Shift の同時押しが必要だったり、PowerShell に置き換えられたりしているのでしょうか。自分もよく使う機能ですし、開発者(想定ユーザー?)向けでいいと思います。メニューアイテムとして存在してさえいれば、自分で右クリックメニューなど他の場所に追加することもできますし。
…( ̄ー ̄)ふぉ。
フォルダを開く実装のshellexecuteのパラメータをちょっと変えれば実現できそうでした。
@berryzplus さん
@berryzplus さん
着手してたらごめんなさい。
個人的な希望です。
「コマンドプロンプトを出したいケース」と、「PowerShellを出したいケース」があります。
そこで提案ですが、それぞれ2つのメニューを追加するというのはどうでしょうか?
また、PowerShellがインストールされていない場合は、PowerShell側のメニュー自体を消して、コマンドプロンプトのメニューだけにしてしまってもよいかもしれません。
(どこでPowerShellのインストール状況を判断するのか調査が必要ですが・・・)
タイトル変えました。
どこでPowerShellのインストール状況を判断するのか調査が必要
windows7 以降は標準搭載らしいです。
https://ja.wikipedia.org/wiki/PowerShell
PowerShell、使わないから削除したことはあります。
私のような人がいると思うのでちゃんとチェックは必要だと思います。
コントロール パネル\すべてのコントロール パネル項目\プログラムと機能

PowerShell、使わないから削除したことはあります。
私のような人がいると思うのでちゃんとチェックは必要だと思います。
了解です。
コマンドの活性制御をする関数があるので、powershellのコマンドだけ独自にインタープリタが存在するかチェックさせればよさそうです。
powershell のパスは
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
SHGetSpecialFolderPath を CSIDL_SYSTEM
で呼べば C:\Windows\System32 の部分を取れる
http://yamatyuu.net/computer/program/sdk/base/SHGetSpecialFolderPath/csidl.html
PowerShellがインストールされている環境では、powershell.exeにPATHが通っている気がします。
それなら where powershell.exe で存在確認したらいいですね。
プロセスを初期化しないオプション付けてloadlibraryexを呼ぶ・・・。
https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-loadlibraryexw
この方法ならパスが取っていればフルパスがなくても、勝手に探してくれます。
popenを使えばcmd.exe経由でwhereの出力が取れんこともないですが、exeが2つ起動するのでなんか不安定です。
CreateProcessもフルパスを用意しなくていいです。即終了するようなパラメータを渡して、起動成功なら「存在」みたいにするならこの方法が一番簡単かも。
なんか、もっとマシなAPIがあったような気がするんですけど・・・。
SearchPathでしょうか。
https://msdn.microsoft.com/ja-jp/library/cc429699.aspx
SearchPathでしょうか。
https://msdn.microsoft.com/ja-jp/library/cc429699.aspx
いけました。
ret が 0 かどうかチェックすればいけます。
TCHAR szFileBuff[MAX_PATH];
LPTSTR lpFilePart = NULL;
DWORD ret = SearchPath(
NULL, // 検索パス
_T("powershell.exe"), // ファイル名
NULL, // ファイルの拡張子
MAX_PATH, // バッファのサイズ
szFileBuff, // 見つかったファイル名を格納するバッファ
&lpFilePart // ファイルコンポーネント
);
#603 待ち
個人的な希望です。
「コマンドプロンプトを出したいケース」と、「PowerShellを出したいケース」があります。
PowerShell、使わないから削除したことはあります。
私のような人がいると思うのでちゃんとチェックは必要だと思います。
powershell が見つからない場合には、メニュー項目をグレーアウトします。
対応完了