Какая минимальная функциональность необходима для создания Shell Replacement для Windows? - PullRequest
1 голос
/ 19 января 2011

Как вы знаете, мы можем изменить Windows Shell, изменив ключ Shell в HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon

Я создаю простой AutoHotKey сценарий, компилирую его в cgywin.exe и внедряю базовые WIN + R, WIN + E и т. Д. Я нацелился на среду Windows, где нет панели задач, полноэкранного режима. Консоль Cygwin и Emacs внутри. Я обнаружил, что мне достаточно простого AutoHotkey

Вот скрипт AutoHotKey (скомпилированный в cygwin.exe)


Run C:\Development\Tools\Cygwin\Cygwin.bat,,max
Run C:\Development\Tools\Fun\xeyes.exe
run c:\Program Files\Digsby\digsby.exe
#h::
    run rundll32.exe powrprof.dll,SetSuspendState Hibernate
    return
#w::
    ifWinExist "@Gameloft:)"
    {
        WinActivate
    }else{  
        run e:\Data\vs.net\At Gameloft\At Gameloft\At Gameloft\bin\Release\At Gameloft.exe
        WinWait "@Gameloft:)"
        WinActivate
    }
    return
#y::
    run c:\Program Files\Digsby\digsby.exe
    return
#f::
    run firefox
    return
#t::
        run thunderbird
        return
#c::
        Run C:\Development\Tools\Cygwin\Cygwin.bat,,max
    return
#r::
    DllCall(DllCall("GetProcAddress", "Uint", DllCall("GetModuleHandle", "str", "shell32"), "Uint", 61), "Uint", 0, "Uint", 0, "Uint", 0, "Uint", 0, "Uint", 0, "Uint", 0)
    return
#g::
    run chrome
    return
#e::
    run c:\Program Files\zabkat\xplorer2_lite\xplorer2_lite.exe
    return
#^e::
    run explorer
    return
#d::
    WinSet, Style, -0xC00000, A
    WinMaximize, A
    return

Но я понимаю, что определенная функция оболочки отсутствует. Например, когда я загружаю с помощью Chrome, я могу использовать меню «Открыть папку» для загруженного файла. Похоже, что оболочка как-то обеспечивает эти функциональные возможности.

Что является самым простым, что должно быть реализовано для создания достаточной замены оболочки ??

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 января 2011

Технически, для оболочки нет «требуемой» функциональности - вам вообще ничего не нужно (но, конечно, такая оболочка не будет служить какой-либо полезной цели).

На практике, вы будете иногда сталкиваться с проблемами (как вы это сделали), когда вы полностью замените оболочку.Это связано с тем, что оболочка по умолчанию (explorer.exe) - это тот же процесс, что и Windows Explorer.В зависимости от того, какие API-вызовы использует Chrome, он может не открыть окно папки, потому что нет запущенного экземпляра explorer.exe.

По этой причине большинство замен оболочек сегодня не "заменяют" стандартную настройку.оболочки, но они запускаются поверх файла explorer.exe, но скрывают рабочий стол и / или панель задач и вместо этого представляют собственный интерфейс.

1 голос
/ 19 января 2011

То, что вы описываете, это явление, когда ни один процесс не связан с протоколом по умолчанию простого имени файла или пути. Например, Chrome, вероятно, пытается запустить C:\Users\You\Downloads как процесс. Однако, поскольку вы заменили оболочку по умолчанию, с этим поведением не связано ни одного исполняемого файла.

Я не знаю, может ли AutoHotKey обрабатывать простые аргументы, переданные ему.

...