Как перейти к нужному ключу в Regedit? |
Previous Top Next |
Code: |
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. |
©Drkb::02303
Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php