无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 16281|回复: 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, 下载次数: 363, 下载积分: 无忧币 -2

PETFIND.DLL

评分

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

查看全部评分

52#
发表于 2017-10-8 17:26:08 | 只看该作者
学习一下外置程序petools!
回复

使用道具 举报

51#
发表于 2010-4-1 21:51:23 | 只看该作者
原帖由 slore 于 2010-4-1 20:56 发表
EXE我知道能小。写了个截图的也就3KB

DLL实在不清楚。


usbfix也加壳了,不过不加也挺小,第四版都10多天了还没更新。。。


打开
VC,选第一个ATL COM AppWizard

然后选动态链接库 确定。

CL ...


那就没错了,看样子你也是很久没编程了,不过比我好很多,我基本上已经彻底忘光了,从头学起了

我现在知道为什么高手编程都用 ultraedit,notepad之类的文本编辑器了,就是因为不要那些自动加入的垃圾代码
回复

使用道具 举报

50#
 楼主| 发表于 2010-4-1 20:56:27 | 只看该作者
EXE我知道能小。写了个截图的也就3KB

DLL实在不清楚。


usbfix也加壳了,不过不加也挺小,第四版都10多天了还没更新。。。


打开
VC,选第一个ATL COM AppWizard

然后选动态链接库 确定。

CLASS右键新建ATL。。。写个类名,然后用MinDependency方式编译。。。就32KB

我知道用什么可以清除多余的东西。
回复

使用道具 举报

49#
发表于 2010-4-1 20:36:07 | 只看该作者
原帖由 slore 于 2010-4-1 20:29 发表
加个壳可能就10KB左右了,反正压到内核所以我就不管这20KB,加壳压缩率比较低,不加的话压缩率高点点。

你说对了,就是VC建立一个ATL板子,然后:

HRESULT CPETSearch::InvokeCommand( LPCMINVOKECOMMAND ...


代码我知道很简单,我上次弄的那个9kb,但是那个不能用,因为我把代码写到dllmain去了,导致很严重的后果,乱响应

下午看到这个又想起这个事情,去网上搜了半天,还是不知道pb里怎么定义IContextMenu.InvokeCommand

。。。。。。。。

你的编译方法估计有问题,cnad写的那个usbfix才5k,好象就是vc写的吧

vc的hello,world应该就3,4k吧

你是不是用的模板建立的dll,本身调用了一大堆用不着的库文件

[ 本帖最后由 NicTense 于 2010-4-1 20:42 编辑 ]
回复

使用道具 举报

48#
 楼主| 发表于 2010-4-1 20:29:03 | 只看该作者
加个壳可能就10KB左右了,反正压到内核所以我就不管这20KB,加壳压缩率比较低,不加的话压缩率高点点。

你说对了,就是VC建立一个ATL板子,然后:

HRESULT CPETSearch::InvokeCommand( LPCMINVOKECOMMANDINFO lpcmi )
{
        long ret;
        char RunCommand[255];
        ret = DWORD(lpcmi->lpVerb);
        ret = LoadString(_Module.m_hInst,IDS_COMMAND1 + ret,RunCommand,256);
        if (ret > 0) ShellExecute(NULL,NULL,RunCommand,NULL,NULL,SW_HIDE);
        return S_OK;
}

代码简单吧?
LoadString就是读取字符串资源
然后ShellExecute调用下就完了,我看了系统的,REGINST,注册是INF格式,是自己处理的,不是一般的RGS自动注册。


主要VC建立一个空的也32KB所以我也没辙,只知道不用Debug生成会小很多。
回复

使用道具 举报

47#
发表于 2010-4-1 18:44:20 | 只看该作者
@slore

核心句子是不是就是给
IContextMenu.InvokeCommand
指定执行的命令,例如pelink.cmd

好象网上都是用vc或者delphi来做这个事情,找个vb的都没有,更别说pb了,我都不知道怎么声明对象为IContextMenu了。。。。
回复

使用道具 举报

46#
发表于 2010-4-1 14:44:12 | 只看该作者
原帖由 lxl1638 于 2010-3-31 19:10 发表
无忧又多了一个高脚,将PETools的功能集成进去可能会更好更高效,
或者做成EXE文件(不采用DLL方式)可能会省些内存,也可能使文件的体积更小。

不能楼主这个DLL是作什么编的,按这样的功能(一个搜索扩展 + 一 ...


老实说,一直觉得老九每个回帖都让人摸不着头脑

高脚是褒奖,还是讽刺?

说wimtool的优秀,如果是为了给人作为参考的范例,提高大家的编程技巧,那么应该把外壳扩展相关的这段代码公布出来,要不说了也白说

如果是为了炫耀,貌似没这个必要,无忧没人怀疑你的编程水平

所以说。。。完全不知道你到底要说什么

[ 本帖最后由 NicTense 于 2010-4-1 14:55 编辑 ]
回复

使用道具 举报

45#
 楼主| 发表于 2010-4-1 12:50:36 | 只看该作者
原帖由 wama 于 2010-4-1 12:31 发表
我其實是想好像你在#1楼的范例一樣,加載PETools的,但連notepad.exe也試了,還是不成功,
希望楼主指點及發個範例文件給我學習,謝謝!



如果notepad不成功,加什么也一样。。。
你在你当前系统注册下看看有没有效果。
你用的PE是哪个?


那个范例是
请试试 #463 haiou327 版主提供的 PETOOLS 补丁
回复

使用道具 举报

44#
发表于 2010-4-1 12:31:08 | 只看该作者
我其實是想好像你在#1楼的范例一樣,加載PETools的,但連notepad.exe也試了,還是不成功,
希望楼主指點及發個範例文件給我學習,謝謝!
回复

使用道具 举报

43#
 楼主| 发表于 2010-3-31 20:46:14 | 只看该作者
原帖由 wama 于 2010-3-31 17:56 发表
我已照着楼主在#36楼的指示做,但仍然无反应,楼主可否给个在#1楼的范例文件,以便测试及学习,谢谢楼主分享。


CLINK.CMD
内容为:
notepad.exe


放到system32下。。。


你执行菜单没有运行记事本程序麽?
已经有人成功了呀.
回复

使用道具 举报

42#
 楼主| 发表于 2010-3-31 20:45:22 | 只看该作者
原帖由 lxl1638 于 2010-3-31 19:10 发表
无忧又多了一个高脚,将PETools的功能集成进去可能会更好更高效,
或者做成EXE文件(不采用DLL方式)可能会省些内存,也可能使文件的体积更小。

不能楼主这个DLL是作什么编的,按这样的功能(一个搜索扩展 + 一 ...


VC写了个空的也得32KB。。。我也很郁闷。不知道怎么做能小,已经用了最小依赖方式编译,
debug的话200多KB。

PETools大家写的可能不一样,有的喜欢放菜单顶,有的喜欢放到程序中?
也许想搜索别的东西,所以写出来可以按自己需要做,不想写死。

就是VC的ATL架子加了个3,4行通过ID执行字符串资源的ShellExecute
如果要源码的可以PM下我,我改天发过去,没在现在的电脑上。

[ 本帖最后由 slore 于 2010-3-31 20:47 编辑 ]
回复

使用道具 举报

41#
发表于 2010-3-31 19:10:03 | 只看该作者
无忧又多了一个高脚,将PETools的功能集成进去可能会更好更高效,
或者做成EXE文件(不采用DLL方式)可能会省些内存,也可能使文件的体积更小。

不能楼主这个DLL是作什么编的,按这样的功能(一个搜索扩展 + 一个执行PETools的功能)做成DLL,应该在8K至16K的范围内就可以实现。

WimTool工具组也带一个DLL(WimShext.DLL),集成了三个外壳扩展(外壳菜单、外壳图标、外壳执行),还有BASE64编码/解码、图标解码/ICO_DTAT to HICON、WIM的常用功能及注册这个DLL的4个导出函数(其中两个是默认函数,三个外壳扩展可以用参数指定注册或卸载),24K左右就实现了(三个外壳扩展共用一个CLSID GUID)。
回复

使用道具 举报

40#
发表于 2010-3-31 17:56:23 | 只看该作者
我已照着楼主在#36楼的指示做,但仍然无反应,楼主可否给个在#1楼的范例文件,以便测试及学习,谢谢楼主分享。
回复

使用道具 举报

39#
发表于 2010-3-31 14:13:00 | 只看该作者
太有才了,学习了,谢谢分享,
回复

使用道具 举报

38#
发表于 2010-3-31 00:39:27 | 只看该作者
支持一下,有了这个方便多了。
回复

使用道具 举报

37#
发表于 2010-3-30 23:25:02 | 只看该作者
感觉怪怪的,试试吧.
回复

使用道具 举报

36#
发表于 2010-3-30 17:33:24 | 只看该作者
正好需要,感谢slore大侠分享经典创意,本人菜鸟按大侠教程已安装成功,效果很酷,在此深表感谢
回复

使用道具 举报

35#
 楼主| 发表于 2010-3-30 15:02:43 | 只看该作者
你在system32(环境变量Path存在的目录都可以)放一个CLINK.CMD

内容:
notpead.exe

就会打开一个记事本程序。

在CLINK.CMD里面写上对应PETOOLS的命令才能有效果
回复

使用道具 举报

34#
发表于 2010-3-30 14:31:39 | 只看该作者
為何在"外置程序到 程序" & " 外置程序到 桌面"按下沒有反應的?
回复

使用道具 举报

33#
发表于 2010-3-29 10:39:38 | 只看该作者
谢谢分享,努力学习中
回复

使用道具 举报

32#
发表于 2010-3-28 22:50:10 | 只看该作者
这个方法很不错呀,谢谢了
回复

使用道具 举报

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


需要加载的时候用
regsvr32命令注册下就是了。


To:
天使,利用系统的很好,我最初就是想用打开IE的,你们都删除我想利用下,苦于一直
没有找到=。=所以才自己写DLL了。
回复

使用道具 举报

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

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

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

使用道具 举报

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

使用道具 举报

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 编辑 ]
回复

使用道具 举报

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


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

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


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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-28 06:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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