VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 9368|回复: 19

如何实现windows优化大师的注册表定位操作

[复制链接]
 楼主| 发表于 2008-4-25 10:06:59 | 显示全部楼层 |阅读模式
windows优化大师 有一个非常好的功能,那就是当扫描完注册表后,会出现一些注册表项,当你点击这些注册表项时,就会打开注册表,并把光带定位到那个注册表项或值上,请问VB如何实现这些功能?

[ 本帖最后由 icecept 于 2008-4-25 10:22 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2008-4-25 10:13:27 | 显示全部楼层
经过我测试,证实不是通过命令行参数,好像是模拟键盘操作
如果在优化大师打开REGEDIT的那一瞬间,你快速激活其他窗口,就不能正确定位了
回复 支持 反对

使用道具 举报

发表于 2008-4-25 12:31:56 | 显示全部楼层
论坛上搜索一下,我记得有代码的
回复 支持 反对

使用道具 举报

发表于 2008-4-25 13:39:35 | 显示全部楼层
就是sendkey
就象从资源管理器中的搜索界面定位某个文件道理一样,发送全名
比如先发送 hklm 子目的全名
在发送 software
在发送。。。
直到目录全部发送完毕后,在激活listview 发送子项
回复 支持 反对

使用道具 举报

发表于 2008-4-25 16:20:25 | 显示全部楼层
有消息的……(不过个人感觉不流畅)
有利用LASTKEY的……

LASTKEY简单些……(不能连续,定位次需要结束regedit再打开)

sendkeys的话,我觉得不太像……
回复 支持 反对

使用道具 举报

发表于 2008-4-25 17:32:53 | 显示全部楼层
原帖由 nbdld 于 2008-4-25 13:39 发表
就是sendkey
就象从资源管理器中的搜索界面定位某个文件道理一样,发送全名
比如先发送 hklm 子目的全名
在发送 software
在发送。。。
直到目录全部发送完毕后,在激活listview 发送子项


回答完全正确,regmon也是这样定位的
回复 支持 反对

使用道具 举报

发表于 2008-4-25 19:54:47 | 显示全部楼层
我记得以前见过  PostMessage还是什么来着
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-25 20:10:06 | 显示全部楼层
我在回去做试验,如果成功了,和大家一起分享我的成果。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-25 20:30:13 | 显示全部楼层

从http://74.220.217.145/bbs/viewthread.php?tid=819找的菜新大哥的帖子

注册表定位
菜新
版主

万剑归宗

1楼 发表于 2007-10-31 18:01  只看该作者
注册表定位
The  code:以文本方式查看复制代码打印关于程序

  • unit Unit1;   
  •   
  • interface  
  •   
  • uses   
  •   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   
  •   Dialogs, StdCtrls;   
  •   
  • type   
  •   TForm1 = class(TForm)   
  •     Button1: TButton;   
  •     procedure Button1Click(Sender: TObject);   
  •     procedure JumpToKey(Key: string);   
  •   private  
  •     { Private declarations }   
  •   public  
  •     { Public declarations }   
  •   end;   
  •   
  • var  
  •   Form1: TForm1;   
  •   
  • implementation   
  •   
  • {$R *.dfm}   
  •   
  • uses   
  •   ShellApi;   
  •   
  • procedure TForm1.JumpToKey(Key: string);   
  • var  
  •   i, n: Integer;   
  •   hWin: HWND;   
  •   ExecInfo: ShellExecuteInfoA;   
  • begin   
  •   hWin := FindWindowA(PChar('RegEdit_RegEdit'), nil);   
  •   if hWin = 0 then   
  •   {if Regedit doesn't run then we launch it}   
  •   begin   
  •     FillChar(ExecInfo, 60, #0);   
  •     with ExecInfo do  
  •     begin   
  •       cbSize := 60;   
  •       fMask  := SEE_MASK_NOCLOSEPROCESS;   
  •       lpVerb := PChar('open');   
  •       lpFile := PChar('regedit.exe');   
  •       nShow  := 1;   
  •     end;   
  •     ShellExecuteExA(@ExecInfo);   
  •     WaitForInputIdle(ExecInfo.hProcess, 200);   
  •     hWin := FindWindowA(PChar('RegEdit_RegEdit'), nil);   
  •   end;   
  •   ShowWindow(hWin, SW_SHOWNORMAL);   
  •   hWin := FindWindowExA(hWin, 0, PChar('SysTreeView32'), nil);   
  •   SetForegroundWindow(hWin);   
  •   i := 30;   
  •   repeat   
  •     SendMessageA(hWin, WM_KEYDOWN, VK_LEFT, 0);   
  •     Dec(i);   
  •   until i = 0;   
  •   SendMessageA(hWin, WM_KEYDOWN, VK_RIGHT, 0);   
  •   i := 1;   
  •   n := Length(Key);   
  •   repeat   
  •     if Key = '\' then   
  •     begin   
  •       SendMessageA(hWin, WM_KEYDOWN, VK_RIGHT, 0);   
  •     end   
  •     else  
  •       SendMessageA(hWin, WM_CHAR, Integer(Key), 0);   
  •     i := i + 1;   
  •   until i = n;   
  • end;   
  •   
  • procedure TForm1.Button1Click(Sender: TObject);   
  • begin   
  •   JumpToKey('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer');   
  • end;   
  •   
  • end.  







[ 本帖最后由 icecept 于 2008-4-25 20:32 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-4-26 00:08:21 | 显示全部楼层
原帖由 icecept 于 2008-4-25 20:30 发表
注册表定位 菜新
版主
http://74.22 ...


sendkeys 变节版....
其实sendkeys 不好用,还是直接用 kbevent 的那个系统api吧,好控制些
vb的sendkeys 会发送好多,而且很乱,不知道怎么回事总是控制不好

[ 本帖最后由 nbdld 于 2008-4-26 00:09 编辑 ]
回复 支持 反对

使用道具 举报

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

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-1 21:56

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表