回答編集履歴
1
`GetConsoleWindow()` を使用した解決案を正しく追記
answer
CHANGED
@@ -80,10 +80,17 @@
|
|
80
80
|
但し、これにより [Chrome のログ出力機能](https://www.chromium.org/for-testers/enable-logging) 全体が無効になってしまいますので、その点は御留意頂く必要が御座います。
|
81
81
|
|
82
82
|
|
83
|
-
## 2-
|
84
|
-
|
83
|
+
## 2-c) `conhost.exe` の画面を探して非表示にする
|
84
|
+
※ `GetConsoleWindow()` の存在を知らず、誤った回答となっておりましたので、修正致しました
|
85
85
|
|
86
|
-
|
87
|
-
[Microsoft Docs に記載された方法](https://support.microsoft.com/ja-jp/help/124103/how-to-obtain-a-console-window-handle-hwnd) ですら「`SetConsoleTitle()` でウィンドウ名にユニークな値を与え、それを `FindoWindow()`で探す」という、ちょっとどうなんだと思わざるを得ない実装であり、あまり手軽とは言えません。
|
86
|
+
その他の方法としては、 [コンソール画面は `conhost.exe` という別プロセスによって実現されている](https://superuser.com/questions/624270/when-is-conhost-exe-actually-necessary) のですが、 Python スクリプトが **自身の使用している `conhost.exe` の画面を探し出し、 [`ShowWindow()` API](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow) によって非表示にしてから終了する** というやり方も考えられます。
|
88
87
|
|
88
|
+
```python
|
89
|
+
import ctypes
|
90
|
+
import subprocess
|
91
|
+
|
92
|
+
console_hwnd = ctypes.windll.kernel32.GetConsoleWindow()
|
93
|
+
ctypes.windll.user32.ShowWindow(console_hwnd, subprocess.SW_HIDE)
|
94
|
+
```
|
95
|
+
|
89
|
-
|
96
|
+
この方法であれば、 **スクリプト自身が必要な場合のみに不要となったコンソール画面を非表示とできる** メリットが御座いますが、不用意に実行すると、例えば開発作業中に使用していた `cmd.exe` の画面を意図せずに消してしまい、操作ができなくなるような事故も生じ得ますので、御利用には御注意下さいませ。
|