コマンドプロンプトのタイトルバーをPythonから変更する。

 ちょっと調べればわかることですが、WindowsTerminalでコマンドプロンプトも扱うようにしたので、タブがいくつもあってどれが何のタブなのかわかりにくくなってしまい、実行しているPythonスクリプトからタブに表示されるタイトルを変更できないかと思いまして。

調べてみると、コンソールからコマンドで "title" というのがあり、Pythonからは

subprocess.run(["cmd", "/c", "title", "アブラカタブラ"])

みたいにすればできることがわかりました。

ところでこのtitleコマンドがどこにあるのか調べてみたら、cmd.exeのビルトインコマンドだということがわかりました。

C:\Users\kats$ wsl strings /mnt/c/Windows/System32/cmd.exe | grep -i title
GetConsoleTitleW
SetConsoleTitleW

ここで、Win32 APIのSetConsoleTitleW()というのが呼ばれていることがわかりました。wslマジ有能。

それじゃあこのWin32 APIを叩けるPythonモジュールはないかと探したら、Pywin32にありました。

Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from win32api import SetConsoleTitle
>>> SetConsoleTitle("アブラカタブラ")
>>>

とまあこれだけでタイトルが変わりました。

どっとはらい。

0 件のコメント:

コメントを投稿

AstroNvimでtelescope.nvimがエラーを吐いたとき。

Windowsの環境でAstroNvimをインストールして、Find Fileしたらtelescopeがエラーを吐いてきました。 メッセージは、 Failed to run `config` for telescope.nvim ...a/lazy/telescope.nvim/...