windows11のコンテキストメニューに「ファイル名をコピー」(拡張子なし)を追加する

windows11には標準でパスをコピーするコンテキストメニューがあるが、ファイル名をコピーするというのが無い。

今まで色んなレジストリを弄るソフトを使ってきたけど拡張子を除いたファイル名のコピーが見つけられなかった。

 

が、ついに発見した。

 

COPIPA というソフト

紹介ページ -  COPIPA のダウンロード・使い方 - フリーソフト100

[COPIPA(64bit版)1.10]

対応は10までしか書かれてないが当環境では動作した。
 
注意事項
install.bat の中身を"copipa.dll"から"C:\COPIPA\copipa.dll"など(install.batを置いてあるフォルダ)に変更。
・uninstall.batも同様。
・install.batのコンテキストメニューから「管理者として実行」で実行する。
copipa.xmlを変更して表示させたいものを記述する。
自分は下記のようにした。
※window11の標準コンテキストメニューは表示に時間かかるのが嫌で旧仕様に戻して利用している。
 

<?xml version="1.0" encoding="utf-8"?>
<copipa>
 <menu name="ファイル名コピー">
  <description>ファイル名をクリップボードにコピーします。</description>
  <value>$fname</value>
 </menu>
 <menu name="ファイル名コピー(拡張子を含む)">
  <description>ファイル名をクリップボードにコピーします。</description>
  <value>$name</value>
 </menu>
<!-- 設定例 
 <menu name="パスコピー(&amp;P)">
  <description>パスをクリップボードにコピーします。</description>
  <value>$path</value>
 </menu>
 <menu name="ファイル名コピー(拡張子を含む)(&amp;F)">
  <description>ファイル名をクリップボードにコピーします。</description>
  <value>$name</value>
 </menu>
 <menu name="リネーム文字列">
  <description>リネームコマンド文字列をクリップボードにコピーします。</description>
  <value>ren "$path" "$fname_$year$month$day$ext"</value>
 </menu>
 <menu name="パス情報レポート">
  <description>パス情報をクリップボードにコピーします。</description>
  <value>$path $kbsizeKB($sizeByte) $date $time</value>
 </menu>
 <menu name="大文字パスコピー">
  <description>パスを大文字に変換してクリップボードにコピーします。</description>
  <value map="upper">$path</value>
 </menu>
 <menu name="Bashパスコピー(&amp;B)">
  <description>bash向けパスをクリップボードにコピーします。</description>
  <value separator="/">/mnt/$driveletterl/$dirpart$name</value>
 </menu>
-->
</copipa>

 

logicool の MX Keys Mini で右 ALT+Left(十字キー) を何とかしてFn+Left (Home key) のように使いたい

 ウインドウズの再インストールの結果、前に使っていた apple のテンキーレス無線キーボード(を使うためのソフト)が使えなくなったのと、windows11になった時の事を考えてキーボードを logicool の MX Keys Mini に変更した。

 その際、アップルのキーボードの時の癖で、文章の先頭とか最後尾とかにカーソルを移動したい時に右 ALT+Left/Right を押してしまいウインドウのタブ移動したりしてストレスが溜まっていた。

 矯正しようとして半月経っても左にある Fn キー+Left/Right を押す癖を付けられなかったのでソフトに頼ることにした。

 

 キーの配置をレジストリを書き換えて強制的に変更するソフトを利用しようとしたけど、どのソフトも Fn キーへの変更ができなかった。

 ので、常駐型になってしまうけどショートカットキーをフックする方法で我慢することにした。

 

docs.microsoft.com

  Windows 公式から出た PowerToys(プレビュー版)を利用。

 keyboard manager タブのショートカット項で、物理ショートカットの種類ボタンを押してALT+Leftを指定、マップ先の種類ボタンを押して目的の Fn+Left(Home)を指定、ターゲットアプリは「すべてのアプリ」のままを指定して「OK」。

 Home/End/PgUp/PgDownの4つをそれぞれ設定すると、ALT+十字キーでカーソルを移動させることができるようになった。

 

everythingからファイルを開いた時にウィンドウサイズが変わる時

 4Kモニターを使っている時に、everythingの検索結果からファイルを起動するときと、フォルダからファイルを起動した時とでウィンドウサイズが違った時に気をつける箇所の備忘録。

 

 ・起動しようとしているソフトを保存しているフォルダを開いてexeファイルのプロパティを開く

 ・互換性タブの「高DPI設定の変更」から「高DPIスケール設定の上書き」項の「高いDPIスケールのい動作を上書きします。」にチェックを入れて、拡大縮小の実行元を選択する(今回はアプリケーションを選択した)

 

 これでeverythingから起動してもいつも通りのサイズで開くようになった。

windows10 クイックアクセスでピン留めができない時の方法

 クイックアクセスにピン留めしようとして「読み取り操作中にディスクエラーが発生しました」などのエラーが出てピン留めできなくなった時に参考になったサイト

jp.easeus.com

引用

2.Quick access(クイックアクセス)の関連appdataファイルを削除する方法

ステップ1.エクスプローラを起動、アドレスバーに次のフォルダパスを貼り付け、Enterキーを押します。

    %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations
    %APPDATA%\Microsoft\Windows\Recent\CustomDestinations

ステップ2.開いたフォルダ内のすべてのファイルを選択し、削除します。

何個か削除できなかったけど、これでピン留めできるようになった。

windows10 特定ドライブを非常時にする方法

 新しいドライブにOSをインストールしたらシステムに予約されたドライブというのがエクスプローラーに表示されていてどうにも気持ち悪いのでドライブごと非表示にできる方法を探していたら発見した。

 

レジストリとかディスクの管理は触りたくなかったのでローカルグループポリシーというのを使うようにした。

ファイル名を指定して実行からgpedit.mscで起動して、ユーザーの構成>管理用テンプレート>Windowsコンポーネントエクスプローラーと進む。

右画面の、指定したドライブを [マイ コンピューター]内で非表示にするをダブルクリックして、有効>Dドライブのみを制限を選択する。

 

◆見つけた引用元サイトの記事リンク

paso-kake.com

 

mouseGestureL Firefoxが非アクティブウインドウ時の操作

※マウスカーソル下のウインドウでの動作を目的にやってたんだけど非アクティブじゃない時に動作させない、みたいなのと半々みたいになって完全じゃない…

一応動くあたりまで取り付けたので備忘録

CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
MouseGetPos,,,,ctrl,2

WinGetClass, class, ahk_id %hwnd%

if (class == "MozillaWindowClass"){
  if(WinExist("ahk_id" . hwnd)){
   ~~~
  }
}

=============
5行目あたりまではコピペ
ウインドウハンドルを取得する(らしい

6行目
WinGetClass, class, ahk_id %hwnd%
でウインドウクラスを取得
MozillaWindowClassがFirefoxのウインドウクラスだったので次のifで比較

WinExistでアクティブじゃなくても5行目までで取得したウインドウハンドルと一緒だったらという処理

 

もっとスマートな処理にできたら良いな
 あとコピーとかできなくてウインドウ操作くらいしかできないのが何故なにかを理解できていない…

 

続きを読む

mouseGestureL と everything

mouseGestureL で everything にコマンドラインで文字列<text>を送った時に空白が入っていた場合に空白以降が削除されてうまく検索できなかった時の記述方法

 

;選択した文字列をevethingで検索
;選択した文字列をコピーする前に変数に入れてeverythingに渡した後にクリップボードに戻す
if (WinActive("ahk_id" . MG_HWND)){
; my = %Clipboard%
my := ClipboardAll
Send, ^c
sss := "C:\Program Files\Everything\Everything.exe -search """ . Clipboard . """"
run, %sss%
Clipboard := my
}

 コマンドラインで文字列を送る場合は、" で囲む必要がある事を失念していた事と、mouseGestureL のエスケープ文字が " だけ " で指定しなけばならないというのが最後まで分かっていなかったので失敗していた(他は ' でエスケープ

 上記 sss に格納した文字列は
C:\Program Files\Everything\Everything.exe -search "Clipboard"
という事になる

 

 

 次は背面に移動しているブラウザをカーソル下で認識される方法が知りたい…