2

ドロップボックス フォルダーの同期に似たものを作成しようとしていますが、オーバーレイ アイコンの追加に問題があります。次のガイドを確認しました。

http://timgolden.me.uk/python/win32_how_do_i/add-my-own-icon-overlays.html http://msdn.microsoft.com/en-us/library/bb776858%28VS.85%29.aspx ?topic=306117

その後、Golden の例にわずか 2 つの変更を加えました。2. GetOverlayInfo メソッドで、ダウンロードしたアイコンを指すようにパスを変更しました。

コードを実行した後、レジストリを確認しました。キーはありますが、アイコンは表示されません。私は 32 ビットの Windows XP 仮想マシンを使用しています。

コード:

import os
from win32com.shell import shell, shellcon
import winerror

class IconOverlay:
    _reg_clsid_ = '{642A09BF-DE34-4251-A0C2-588CCE0DB935}'
    _reg_progid_ = 'TJG.PythonPackagesOverlayHandler'
    _reg_desc_ = 'Icon Overlay Handler to indicate Python packages'
    _public_methods_ = ['GetOverlayInfo', 'GetPriority', 'IsMemberOf']
    _com_interfaces_ = [shell.IID_IShellIconOverlayIdentifier]

    def GetOverlayInfo(self):
        return (r'C:\Users\Administrator\Downloads\netvibes.ico', 0, shellcon.ISIOI_ICONFILE)

    def GetPriority(self):
        return 1

    def IsMemberOf(self, fname, attributes):
        if os.path.exists(os.path.join(fname, 'kala.txt')):
            return winerror.S_OK
        return winerror.E_FAIL

if __name__=='__main__':
    import win32api
    import win32con
    import win32com.server.register
    win32com.server.register.UseCommandLine (IconOverlay)
    keyname = r'Software\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\PyPackageOverlay'
    key = win32api.RegCreateKey (win32con.HKEY_LOCAL_MACHINE, keyname)
    win32api.RegSetValue (key, None, win32con.REG_SZ, IconOverlay._reg_clsid_)
4

2 に答える 2

0

コードに問題は見られませんが、確認すべき点がいくつかあります。

  1. 例の元のコードが機能するかどうかを確認します (例で使用されているアイコンなどをダウンロードします)。そうでない場合は、お使いの Windows のバージョンで何かが異なります。
  2. 例に合わせて優先度を上げます。これは 50 を使用しており、値が機能にどのように影響するかは明確ではありません。
  3. アイコンエディタでアイコンと例の両方を開いて、アイコンの形式が正しいことを確認します。
于 2014-09-28T14:37:55.443 に答える
0

私は問題を解決しました:

ハンドラーを登録する前に、既存の同じ名前のハンドラーを削除する必要があります。これを行うには、実行 > regedit > Software\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\ を参照 > 同じ名前のハンドラーを削除します。

この後、新しいハンドラを追加できます。

ハンドラーを機能させるには、プロセス explorer.exe を強制終了して再起動する必要があります。

于 2014-10-01T14:24:33.720 に答える