回答編集履歴
6
設定の反映方法について追記
test
CHANGED
@@ -21,8 +21,9 @@
|
|
21
21
|
desktop.ini ファイルをエディタで直接編集や、プログラムで直接編集した場合は即時反映されないようです。
|
22
22
|
(訂正: ~~恐らくキャッシュなどの影響~~ 変更した設定は再読み込みまで反映されない)
|
23
23
|
|
24
|
+
|
24
|
-
|
25
|
+
追記: 設定の反映方法について、SHChangeNotify により通知できるようです。folderikonより、ctypesを用いた呼び出し例
|
25
|
-
|
26
|
+
https://github.com/demberto/FolderIkon/blob/master/folderikon/notify_shell.py
|
26
27
|
|
27
28
|
----
|
28
29
|
尚、できれば Python でとのことですが、ファイルを直接編集するコードの場合は
|
5
参考コードの追加
test
CHANGED
@@ -28,9 +28,12 @@
|
|
28
28
|
尚、できれば Python でとのことですが、ファイルを直接編集するコードの場合は
|
29
29
|
desktop.ini は 標準ライブラリの configparser モジュールにより扱うことができます。
|
30
30
|
より簡潔で解りやすいコードにできるはずです。
|
31
|
-
|
31
|
+
|
32
32
|
※ サムネイルではなくアイコンですが、desktop.ini を configparser で操作するコードの参考に。
|
33
|
+
- [windows folder icon changer](https://github.com/JIHONGO/windows-folder-icon-changer/blob/master/windows-folder-icon-changer.py)
|
34
|
+
- 外部ライブラリで [folderikon](https://pypi.org/project/folderikon/)
|
33
35
|
|
36
|
+
----
|
34
37
|
ctypes でwin32 API を使う方法(質問に掲載のコードの方法) は、
|
35
38
|
同様のコードを書く場合は C言語で書いたほうが短くかけます。
|
36
39
|
(ctypes で扱う場合は、構造体館の宣言が必要ですが、C言語では必要なヘッダを読み込むのみ)
|
@@ -40,3 +43,5 @@
|
|
40
43
|
C 言語の学習コストがあるかもしれませんが、C言語で行う必要があるのは API 呼び出し部分のみなので
|
41
44
|
Python でフォルダーの一覧のループ処理をして、path 情報のみを C言語で作ったプログラムへ subprocess.call 等で渡す
|
42
45
|
といった使い方であれば、学習コストを必要最低限に抑えることができます。
|
46
|
+
|
47
|
+
|
4
即時反映は、キャッシュではなく設定変更の通知が必要だったためなので訂正。
test
CHANGED
@@ -10,7 +10,8 @@
|
|
10
10
|
- PathMakeSystemFolder (`attrib +s FolderName` コマンド) で
|
11
11
|
対象フォルダをシステムフォルダに変更 (desktop.ini によるカスタマイズを有効にする)
|
12
12
|
- desktop.ini を配置
|
13
|
-
- エクスプローラー(explorer.exe) を再起動。キャッシュが影響しないように再読込。
|
13
|
+
- エクスプローラー(explorer.exe) を再起動。~~キャッシュが影響しないように~~ 設定変更を反映させるため再読込。
|
14
|
+
追記: SHChangeNotify により設定変更を通知
|
14
15
|
|
15
16
|
フォルダプロパティのカスタマイズから変更した場合
|
16
17
|
フォルダー内の desktop.ini の `[ViewState]` セクション内の `Logo` に記録されます。
|
@@ -18,7 +19,7 @@
|
|
18
19
|
|
19
20
|
カスタマイズから変更した場合や、上記のスクリプト(win32 API)で変更した場合は即時反映されますが
|
20
21
|
desktop.ini ファイルをエディタで直接編集や、プログラムで直接編集した場合は即時反映されないようです。
|
21
|
-
(恐らくキャッシュなどの影響)
|
22
|
+
(訂正: ~~恐らくキャッシュなどの影響~~ 変更した設定は再読み込みまで反映されない)
|
22
23
|
|
23
24
|
注意点、desktop.ini は特殊なファイルなので、
|
24
25
|
書き込みの際には、権限やファイルの属性に注意。
|
3
実行結果のキャプチャを追加
test
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
私の環境では win10/python3.10 で、WindowsError が出ますが、設定自体は正常に変更できました。
|
2
2
|
(追記: SHGetSetFolderCustomSettings 迄で変更可能だったので、関数内の後半は不要です)
|
3
|
+
|
4
|
+

|
5
|
+
|
3
6
|
隠しファイルを表示する設定にして、対象フォルダ内のdesktop.ini ファイルの中身を確認してみてください。
|
4
7
|
|
5
8
|
[Desktop.iniを使用してフォルダーをカスタマイズする方法](https://learn.microsoft.com/ja-jp/windows/win32/shell/how-to-customize-folders-with-desktop-ini)
|
2
追記: エラーが出る部分は、目的の用途にとっては不要なコードでした。
test
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
私の環境では win10/python3.10 で、WindowsError が出ますが、設定自体は正常に変更できました。
|
2
|
+
(追記: SHGetSetFolderCustomSettings 迄で変更可能だったので、関数内の後半は不要です)
|
2
3
|
隠しファイルを表示する設定にして、対象フォルダ内のdesktop.ini ファイルの中身を確認してみてください。
|
3
4
|
|
4
5
|
[Desktop.iniを使用してフォルダーをカスタマイズする方法](https://learn.microsoft.com/ja-jp/windows/win32/shell/how-to-customize-folders-with-desktop-ini)
|
1
説明補足を追記
test
CHANGED
@@ -23,7 +23,15 @@
|
|
23
23
|
尚、できれば Python でとのことですが、ファイルを直接編集するコードの場合は
|
24
24
|
desktop.ini は 標準ライブラリの configparser モジュールにより扱うことができます。
|
25
25
|
より簡潔で解りやすいコードにできるはずです。
|
26
|
+
参考: [windows folder icon changer](https://github.com/JIHONGO/windows-folder-icon-changer/blob/master/windows-folder-icon-changer.py)
|
27
|
+
※ サムネイルではなくアイコンですが、desktop.ini を configparser で操作するコードの参考に。
|
26
28
|
|
27
29
|
ctypes でwin32 API を使う方法(質問に掲載のコードの方法) は、
|
28
30
|
同様のコードを書く場合は C言語で書いたほうが短くかけます。
|
29
31
|
(ctypes で扱う場合は、構造体館の宣言が必要ですが、C言語では必要なヘッダを読み込むのみ)
|
32
|
+
|
33
|
+
C言語と言うと、巨大な開発環境のインストールが必要そうに思われるかもしれませんが、
|
34
|
+
これくらいの規模のユーティリティーであれば、tcc (Tiny C Compiler) がお勧めです。
|
35
|
+
C 言語の学習コストがあるかもしれませんが、C言語で行う必要があるのは API 呼び出し部分のみなので
|
36
|
+
Python でフォルダーの一覧のループ処理をして、path 情報のみを C言語で作ったプログラムへ subprocess.call 等で渡す
|
37
|
+
といった使い方であれば、学習コストを必要最低限に抑えることができます。
|