无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 14754|回复: 52
打印 上一主题 下一主题

[原创]把PETools放到 搜索 菜单

  [复制链接]
跳转到指定楼层
1#
发表于 2010-3-25 05:06:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[原创]把PETools放到搜索菜单
菜单截图:


运行效果:


如何DIY自己的工具菜单

写了个通用的DLL文件,你可以加入自己的菜单,执行自己要
运行的命令!

用任意一款资源编辑器打开PETFIND.DLL
如图看到:
REGISTRY 101 资源



HKCR
{
        PETSearch.PETSearch.1 = s 'PETSearch Class'
        {
                CLSID = s '{977DA8D2-41D5-11D2-BC00-AC6805C10E27}'
        }
        PETSearch.PETSearch = s 'PETSearch Class'
        {
                CurVer = s 'PETSearch.PETSearch.1'
        }
        NoRemove CLSID
        {
                ForceRemove {977DA8D2-41D5-11D2-BC00-AC6805C10E27} = s 'PETSearch Class'
                {
                        ProgID = s 'Process.Process.1'
                        VersionIndependentProgID = s 'PETSearch.PETSearch'
                        ForceRemove 'Programmable'
                        InprocServer32 = s '%MODULE%'
                        {
                                val ThreadingModel = s 'Apartment'
                        }
                }
        }
}

HKLM
{ Software
  { Microsoft
    { Windows
          { CurrentVersion
            { Explorer
                  { FindExtensions
                    { Static
                      { PETSearch = s '{977DA8D2-41D5-11D2-BC00-AC6805C10E27}'
                        {
                                  0 = s '外置程序到 程序(&P)'
                                  {
                                        DefaultIcon = s '%MODULE%,0'
                                  }
                                }
                  }
            }
          }
        }
      }
    }
  }
}

HKLM
{ Software
  { Microsoft
    { Windows
          { CurrentVersion
            { Explorer
                  { FindExtensions
                    { Static
                      { PETSearch = s '{977DA8D2-41D5-11D2-BC00-AC6805C10E27}'
                        {
                                  1 = s '外置程序到 桌面(&D)'
                                  {
                                        DefaultIcon = s '%MODULE%,0'
                                  }
                                }
                  }
            }
          }
        }
      }
    }
  }
}


将蓝色部分复制,然后将红色的部分菜单ID向后累加,后面是菜单显示的字符串。
DefaultIcon都知道吧?设置默认的图标。

%MODULE%表示DLL本身,你也可以指向其他包含图标的文件。

菜单做好了,我们来关联执行命令。

转到字符串资源可以看到:
STRINGTABLE
LANGUAGE 4, 2
{
100, "ProcFind"
201, "CLINK.CMD"
202, "DLINK.CMD"
}

//这里的CLINK.CMD是一个搜索PETools的脚本。

201是 菜单ID为0执行的命令。
202是 菜单ID为1执行的命令。
依次类推。。。
比如:
203,"ELINK.CMD"


是不是很简单呢?你要是有好看的图标和准确菜单名记得告诉我。
修改好自己的菜单,图标,关联命令后放入PE中,执行
Regsvr32 /S PETFIND.DLL
即可看到菜单。

我是在PECMD.INI加入
EXEC ^!REGSVR32 /S %WS%\PETFind.dll
放到Shel后,估计放到前面注册也应该能显示。



PS:这不是什么很重要的Patch,可以说不要也行。
   36KB(未压缩)自己要不要集成由自己决定吧。





(想到一个可以把外置程序放到 程序 和 文档 菜单中间一个单独的菜单,特殊的文件夹
中,不过...如果是维护盘倒是无所谓利用了不用的东西罢了,要是带网络有点点冲突了。)


[ 本帖最后由 slore 于 2010-3-25 05:09 编辑 ]

PETFIND.rar

10.98 KB, 下载次数: 361, 下载积分: 无忧币 -2

PETFIND.DLL

评分

参与人数 3无忧币 +20 收起 理由
wuxin9712 + 5
刀刀是条狗 + 5 很给力!
NicTense + 10 原创内容

查看全部评分

2#
发表于 2010-3-25 06:15:04 | 只看该作者
楼主太有创意!佩服…
回复

使用道具 举报

3#
发表于 2010-3-25 06:27:08 | 只看该作者
实用性较强,很好!
回复

使用道具 举报

4#
发表于 2010-3-25 06:42:29 | 只看该作者
创意不错,试一下...........
回复

使用道具 举报

5#
发表于 2010-3-25 08:02:24 | 只看该作者
很好的创意,谢谢分享。
回复

使用道具 举报

6#
发表于 2010-3-25 08:16:50 | 只看该作者
自己写dll ?专业选手 !
回复

使用道具 举报

7#
发表于 2010-3-25 09:03:59 | 只看该作者
向高手致敬,太有才了,历害啊
回复

使用道具 举报

8#
发表于 2010-3-25 09:07:09 | 只看该作者
原来slore是个纯高手!收下。
回复

使用道具 举报

9#
发表于 2010-3-25 09:10:32 | 只看该作者
dos联盟的纯高手。。。。
回复

使用道具 举报

10#
发表于 2010-3-25 09:44:51 | 只看该作者
楼主太有才了,收下
回复

使用道具 举报

11#
发表于 2010-3-25 10:51:46 | 只看该作者
很不错,有一点更正一下

原帖由 slore 于 2010-3-25 05:06 发表
我是在PECMD.INI加入
EXEC ^!REGSVR32 /S %WS%\PETFind.dll



这个 ^! 只有在TangoPE的更新程序里面需要这样用

其他地方的pecmd.ini,这里别加 ^


我觉得有一种办法应该可以不用dll,修改explorer.exe的menu资源项可以自行调换增加开始菜单和子菜单

这里要加上一个菜单是很容易的,系统在启动的时候对指定编号的字符串进行替换,只要找到这个替换的位置,修改一下,就可以了


ps:草帽需要资料看这里:http://delphi.sharpplus.com/Delphi_Old/SearchExt.htm

[ 本帖最后由 NicTense 于 2010-3-25 11:58 编辑 ]
回复

使用道具 举报

12#
发表于 2010-3-25 13:06:31 | 只看该作者
原帖由 zhxy9804 于 2010-3-25 13:04 发表
我想问一下,gif是用什么软件制作的啊?

gif录制FISHCAP.rar (21.42 KB, 下载次数: 89) GIF动画录制.rar (129.62 KB, 下载次数: 87)
回复

使用道具 举报

13#
发表于 2010-3-25 13:07:12 | 只看该作者
原帖由 zhxy9804 于 2010-3-25 13:04 发表
我想问一下,gif是用什么软件制作的啊?

ggg  dos版版主告诉我的!

下载:
GIF动画录制.rar (129.97 KB, 下载次数: 72)
回复

使用道具 举报

14#
发表于 2010-3-25 13:10:10 | 只看该作者

回复 #11 NicTense 的帖子

谢天使 我看看啊, 不一定弄的明白,基础知识很差!
回复

使用道具 举报

15#
发表于 2010-3-25 13:19:51 | 只看该作者
原帖由 caomaoLBL 于 2010-3-25 13:10 发表
谢天使 我看看啊, 不一定弄的明白,基础知识很差!


其实简单的dll或者exe写起来可能比批处理还容易,主要是编程环境不一样而已
像delphi,vb那些有很多现成的函数可以用,一些小软件纯粹就是调用2个函数而已
不过如果是像vc,或者汇编类的就比较麻烦了
回复

使用道具 举报

16#
 楼主| 发表于 2010-3-25 13:20:59 | 只看该作者
原帖由 NicTense 于 2010-3-25 10:51 发表
很不错,有一点更正一下




这个 ^! 只有在TangoPE的更新程序里面需要这样用

其他地方的pecmd.ini,这里别加 ^


我觉得有一种办法应该可以不用dll,修改explorer.exe的menu资源项可以自行调换增加 ...


菜单改注册表就可以有。。。关键是相应事件。。。执行自己的命令。

那个文章也说了


注册一个静态扩展
    这种扩展通常对于比较小的DLL(动态连接库)比较有效,因为它可以加载得很快,并且不占用内存。另外如果你用DHTML实现扩展也必须是静态的,注册方式:创建一个子键FindExtensions subkey,名字不能被别的扩展使用,也不能同其他搜索扩展同名。
    上下文相关的扩展的注册需要设定Name子键,缺省值为自己的类标示符(CLSID GUID),在Name子键下创建一个子键0, 然后设定它的缺省值为想要显示在查找菜单中的名字。你还可以通过在字符串中加入&符号实现快捷方式。另外还可以在0键下建立一个DefaultIcon子键来指定要显示在菜单右边的图标。设定值为包含图标的文件名全称,并用逗号隔开,跟着一个以0为底的图标索引值。
    下面的例子注册了一个MySearchEngine搜索扩展,菜单项文本为"My Search Engine",图标在C:\MyDir\MySearch.dll中,其索引值为2。



还是要个DLL的。
回复

使用道具 举报

17#
 楼主| 发表于 2010-3-25 13:21:42 | 只看该作者
原帖由 zhxy9804 于 2010-3-25 13:04 发表
我想问一下,gif是用什么软件制作的啊?



没看到任务栏 GIF.GIF.GIF呀。
回复

使用道具 举报

18#
发表于 2010-3-25 13:25:00 | 只看该作者
原帖由 slore 于 2010-3-25 13:20 发表


菜单改注册表就可以有。。。关键是相应事件。。。执行自己的命令。

那个文章也说了


注册一个静态扩展
    这种扩展通常对于比较小的DLL(动态连接库)比较有效,因为它可以加载得很快,并且不占用内 ...



explorer.exe的菜单机制应该是不一样的,findextentions应该只是这个菜单的一个特定的菜单

也就是说,如果通过explorer的菜单项加进去的,应该是不经过findextentions处理的,而是由系统的某个命令来执行字符替换,指定操作


对了,请教一下
CLSID GUID
这个根据什么得出来的,乱指定一个?
回复

使用道具 举报

19#
 楼主| 发表于 2010-3-25 13:28:31 | 只看该作者
全球唯一标示符

有GUI生成器
回复

使用道具 举报

20#
发表于 2010-3-26 08:12:58 | 只看该作者
谢谢分享,这个好玩。高手啊
回复

使用道具 举报

21#
发表于 2010-3-26 08:52:17 | 只看该作者
革命性的东西,还是要学习一下
回复

使用道具 举报

22#
发表于 2010-3-26 09:23:32 | 只看该作者
这个好像很好玩 先收藏一下
回复

使用道具 举报

23#
发表于 2010-3-26 09:31:20 | 只看该作者
这个很强大很好的创意!!顶了!!
回复

使用道具 举报

24#
发表于 2010-3-26 10:36:49 | 只看该作者
下载收藏了,谢谢楼主。
回复

使用道具 举报

25#
发表于 2010-3-26 13:34:49 | 只看该作者
楼主很了得,学习了。
回复

使用道具 举报

26#
发表于 2010-3-28 00:13:45 | 只看该作者
哈哈,测试成功,powerbasic第一个程序献给这个功能了,用一行代码实现了,一行代码编译完竟然还要9k,晕阿
回复

使用道具 举报

27#
 楼主| 发表于 2010-3-28 00:30:53 | 只看该作者
原帖由 NicTense 于 2010-3-28 00:13 发表
哈哈,测试成功,powerbasic第一个程序献给这个功能了,用一行代码实现了,一行代码编译完竟然还要9k,晕阿


呵呵,难道要我去用汇编写=。=

好呀,起码没白看半天PB。。。
搞好了就传上来看看。


算是抛砖引玉啦,多花点时间搞下内核呗。。。
回复

使用道具 举报

28#
发表于 2010-3-28 00:57:27 | 只看该作者
原帖由 slore 于 2010-3-28 00:30 发表


呵呵,难道要我去用汇编写=。=

好呀,起码没白看半天PB。。。
搞好了就传上来看看。


算是抛砖引玉啦,多花点时间搞下内核呗。。。


呵呵,你说pb,都会认为是power builder的

我看了半天都还没弄清楚那些变量的表示方法,貌似跟vb不太一样

我只写了一个 shell "petools.cmd" 语句而已,注册表项内置进shell32.dll,替换原来写搜索计算机的那项,删除搜索internet的那项,体积还缩小了,也不用注册了

然后测试了一下,我把petools.cmd的内容改成 start notepad.exe

然后点了一下 搜索那里的 petools外置程序,记事本弹出来了,证明方法正确了就可以了,这个放出来没啥用,我没搞定制

先继续研究powerbasic的语法,顺带休息几天

内核没啥搞的了,现有的功能基本上都完善了,驱动等n版方案出来再合并

[ 本帖最后由 NicTense 于 2010-3-28 01:08 编辑 ]
回复

使用道具 举报

29#
发表于 2010-3-28 09:32:11 | 只看该作者
呵呵,跟我的Udhelper其中的一项功能类似,只不过,不知道楼主大大,
用你的创建菜单,是全部加载到内存了,还是按需加载?
回复

使用道具 举报

30#
发表于 2010-3-28 13:13:23 | 只看该作者
哈哈,刚才重新试了一下,貌似被我搞成神经兮兮的了

点一下,执行程序
关掉,再点没反应
从此之后,打开或关闭任何一个程序,或者刷新shell就出来了

貌似我弄错地方了,是不应该放入dllmain还是需要加一个按键判断呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 19:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表