【问题标题】:What is the minimum functionality needed to create Shell Replacement for Windows?为 Windows 创建外壳替换所需的最低功能是什么?
【发布时间】:2011-01-19 01:14:20
【问题描述】:

如您所知,我们可以通过更改 Shell 键来更改 Windows Shell HKEY_CURRENT_USER\Software\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

但我意识到缺少某些 shell 功能。例如,当我使用 Chrome 下载时,我无法使用“打开文件夹”菜单来下载文件。似乎 shell 以某种方式提供了这些功能。

创建足够的外壳替换必须实现的最基本的东西是什么??

谢谢!

【问题讨论】:

    标签: shell emacs cygwin


    【解决方案1】:

    从技术上讲,shell 没有“必需的”功能——您根本不需要任何东西(当然,这样的 shell 没有任何用处)。

    在实践中,当您完全更换外壳时,有时会遇到问题(就像您所做的那样)。这是因为默认外壳程序 (explorer.exe) 与也显示为 Windows 资源管理器的进程相同。根据 Chrome 使用的 API 调用,它可能无法打开文件夹窗口,因为没有正在运行的 explorer.exe 实例。

    出于这个原因,今天的大多数 shell 替换并没有真正“替换”默认 shell,而是在 explorer.exe 之上运行,而是隐藏桌面和/或任务栏,而是呈现自己的界面。

    【讨论】:

    • 我不这么认为。当我尝试过 Aston Shell 时,我注意到 explorer.exe 不在进程列表中。所以,我来宾它确实试图完全替换 shell 功能。好吧,不完全是。因为有时应用程序安装确实会引起麻烦:)
    • 我接受这个作为答案,因为它清楚地定义了我的问题。顺便说一句,firefox 在打开文件夹下载文件时工作得很好。
    【解决方案2】:

    您所描述的是没有进程与简单文件名或路径的默认协议相关联的现象。例如,Chrome 可能会尝试将C:\Users\You\Downloads 作为进程启动。但是,由于您替换了默认 shell,因此没有可执行文件与该行为相关联。

    但是,我不知道 AutoHotKey 是否可以处理传递给它的普通参数。

    【讨论】:

    • 哦,好吧2。也许我应该这样深入了解一下 chrome
    猜你喜欢
    • 2016-06-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多