выберите любую папку в качестве начальной папки для просмотра (win32gui, win32com, SHGetFolderLocation) - PullRequest
0 голосов
/ 11 июня 2018

Я хочу начать с папки, например, C: \ test \ вместо любой из предопределенных папок CSIDL _ *.Как мне этого добиться?

    ''' python 3.6.2 '''

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

    myfolder_pidl = shell.SHGetFolderLocation (0, shellcon.CSIDL_DESKTOP, 0, 0)

    pidl, display_name, image_list = shell.SHBrowseForFolder (
      win32gui.GetDesktopWindow (),
      myfolder_pidl,
      "Select a file or folder",
      0x00014050, #shellcon.BIF_BROWSEINCLUDEFILES and some more
      None,
      None
    )

    if (pidl, display_name, image_list) == (None, None, None):
      print ('Nothing selected')
    else:
      my_path = shell.SHGetPathFromIDList (pidl)

    file_to process = my_path.decode()

    ''' continue processing file_to_process
    '''

1 Ответ

0 голосов
/ 05 сентября 2018

Вам нужно получить PIDL для нужной папки.

myfolder_pidl = shell.SHParseDisplayName(u"C:\test", 0)[0]

, а затем передать его в SHBrowseForFolder

...