Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2017, 20:58   #1
alex0097
Форумчанин
 
Аватар для alex0097
 
Регистрация: 06.07.2010
Сообщений: 123
По умолчанию Как захватить текущий ключ из Реестра

Всем привет. Как захватить текущий ключ из Реестра
Знаю что можно использовать, все проштудировал, но ответа так и не нашел
FindWindow(nil, 'Редактор Реестра');


Нашел пример только для IE, может есть у кого идеи или может кто сталкивался
Код:
Описываем две функции GetText и GetURL:


 function GetText(WindowHandle: hwnd):string;
 var
   txtLength : integer;
   buffer: string;
 begin
   TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
   txtlength := txtlength + 1;
   setlength (buffer, txtlength);
   sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));
   result := buffer;
 end;
 
 function GetURL:string;
 var
   ie,toolbar,combo,
   comboboxex,edit,
   worker,toolbarwindow:hwnd;
 begin
   ie := FindWindow(pchar('IEFrame'),nil);
   worker := FindWindowEx(ie,0,'WorkerA',nil);
   toolbar := FindWindowEx(worker,0,'rebarwindow32',nil);
   comboboxex := FindWindowEx(toolbar, 0, 'comboboxex32', nil);
   combo := FindWindowEx(comboboxex,0,'ComboBox',nil);
   edit := FindWindowEx(combo,0,'Edit',nil);
   toolbarwindow := FindWindowEx(comboboxex, 0, 'toolbarwindow32', nil);
   result := GetText(edit);
 end;
 

Ну а затем пользуемся функцией GetURL, например, можем в поле ввода по нажатию на кнопку выводит текущий URL:


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   Edit1.Text := GetURL;
 end;

Последний раз редактировалось alex0097; 22.11.2017 в 21:02.
alex0097 вне форума Ответить с цитированием
Старый 22.11.2017, 21:00   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что такое "текущий ключ"?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.11.2017, 21:48   #3
alex0097
Форумчанин
 
Аватар для alex0097
 
Регистрация: 06.07.2010
Сообщений: 123
По умолчанию

Который пользователь сейчас просматривает в реестре
alex0097 вне форума Ответить с цитированием
Старый 22.11.2017, 21:53   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А для чего такие сложные извращения?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.11.2017, 07:56   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

есть версия, что некто на общем компьютере любит шурудить в реестре и менять настройки. так вот, надо отследить его действия: куда он заходил и что менял. угадал?
тогда уж лучше каждые 5 минут делать копию реестра. а потом его сравнивать - каждый ключ с параметрами - детально и дотошно. не пойдёт?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 23.11.2017, 08:45   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А разграничивать правами по доступу уже не модно?
p51x вне форума Ответить с цитированием
Старый 23.11.2017, 08:54   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Так приведённый пример с FindWindow(nil, 'Редактор Реестра');
вообще никак не связан с реестром - он всего лишь ищет окно запущенного регедита, что само по себе не даст Вам ключа, который сейчас в нём выбран. Я так понимаю, Вам как раз нужно отслеживать запуск regedit и логировать действия пользователя в нём?

Тогда spy Вам в помощь, запускайте его и отслеживайте наименование классов и компонент, из которых состоит сам regedit.exe. А потом из кода ищите нужный объект в найденном ранее окне, а в этом объекте - выбранный элемент дерева.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 23.11.2017, 09:15   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию


Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.11.2017, 09:18   #9
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Вот, кстати, аналогичный вопрос хотел задать, но постеснялся :D

А вообще - существует же такая штука, называется regmon, мониторит доступ программ к реестру. В итоге нужно будет только определить, кто какую программу запустил, чтобы идентифицировать пользователя.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 23.11.2017, 10:46   #10
alex0097
Форумчанин
 
Аватар для alex0097
 
Регистрация: 06.07.2010
Сообщений: 123
По умолчанию

Мне нужно, что бы пользователь не менял Настройки, в стандартном реестре(про другие программы речи не шло). Не нужно ограничивать в правах и т.д. Мне нужно увидеть открыт ли раздел с ключами в данный момент или нет.
alex0097 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как захватить окно и нажать ок!? Art22 Win Api 25 08.04.2017 00:48
Удалить ключ из реестра Aoizora Win Api 3 11.11.2016 23:13
Ключ реестра KolaSh Общие вопросы Delphi 7 30.05.2013 08:37
Как захватить весь вывод в консоли??? alexfmf Общие вопросы Delphi 5 13.05.2009 21:54
изменить разрешения на папку и ключ реестра Deceased Общие вопросы Delphi 0 18.10.2008 21:47