Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как перейти к нужному ключу в Regedit?


Автор: Poseidon 9.6.2005, 21:31
Код
unit Unit1; 

interface 

uses 
  Windows, Messages, Classes, Controls, Forms, 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; 
  Sleep(500); 
  SendMessageA(hWin, WM_KEYDOWN, VK_RIGHT, 0); 
  Sleep(500); 
  i := 1; 
  n := Length(Key); 
  repeat 
    if Key[i] = '\' then 
    begin 
      SendMessageA(hWin, WM_KEYDOWN, VK_RIGHT, 0); 
      Sleep(500); 
    end 
    else 
      SendMessageA(hWin, WM_CHAR, Integer(Key[i]), 0); 
    i := i + 1; 
  until i = n; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  JumpToKey('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer'); 
end; 

end. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)