![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Службы Windows [D6, WinXP]
noname123 © (2009-11-16 14:41:00)procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
if reg.OpenKey('\Software', False) then
{Какое то действие}
end;
end;
почему этот код проходит
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
if reg.OpenKey('\Software\65', False)then
{Какое то действие}
end;
end;
а вот этот не проходит, т.е. открывает только первый ключ в разделе а если вложенный тогда не открывает, почему??
noname123 (2009-11-18 06:02:00) [1]
> Leonid Troyanovsky © (17.11.09 15:21) [24]
>
>
> > noname123 (17.11.09 14:56) [22]
>
> Ну, если Алекса Федотова так быстро осилил, читай рядом,
>
> там много всякой мудрости.
>
> --
> Regards, LVT.
еще не читал. но, там примеры на С. Буду читать. Спасибо!
noname123 (2009-11-18 05:58:00) [2]
> Игорь Шевченко © (17.11.09 15:14) [23]
>
>
> > Материалы по созданию служб и по работе с процессами
>
>
> тебя в гугле навсегда забанили ?
Нет! просто хотел узнать может у кого нить есть
Leonid Troyanovsky (2009-11-17 15:21:00) [3]
> noname123 (17.11.09 14:56) [22]
Ну, если Алекса Федотова так быстро осилил, читай рядом,
там много всякой мудрости.
--
Regards, LVT.
Игорь Шевченко (2009-11-17 15:14:00) [4]
> Материалы по созданию служб и по работе с процессами
тебя в гугле навсегда забанили ?
noname123 (2009-11-17 14:56:00) [5]Материалы по созданию служб и по работе с процессами
noname123 (2009-11-17 14:55:00) [6]
> Сергей М. © (17.11.09 13:20) [20]
>
>
> > а в службе не пашет
>
>
> А кто за тебя должен выяснять, почему "не пашет" ?
> Где у тебя анализ LastError хотя бы одной из используемых
> WinAPI-функций ?
> Нет его, напрочь отсутствует.
почему не понял но функция заработала, буду разбираться.
> Сергей М. © (17.11.09 10:20) [16]
>
> А где в [15] "определение запущенных процессов" ?
> В упор не вижу.
> Вижу лишь несуразную попытку получить имя файла исполняемого
> модуля некоего чужого поцесса.
а как еще можно определить путь к файлу? Не судите строго я навичек, если есть материал дайте ссылку. Спасибо!
Сергей М. (2009-11-17 13:20:00) [7]
> а в службе не пашет
А кто за тебя должен выяснять, почему"не пашет" ?
Где у тебя анализ LastError хотя бы одной из используемых WinAPI-функций ?
Нет его, напрочь отсутствует.
Leonid Troyanovsky (2009-11-17 12:26:00) [8]
> noname123 (17.11.09 12:21) [18]
> файла процесса по названию главного окна.
Во, снова запутался. Нет никого "главного".
Но, все равно, нет там никакого окна.
--
Regards, LVT.
noname123 (2009-11-17 12:21:00) [9]
> Сергей М. © (17.11.09 10:20) [16]
>
> А где в [15] "определение запущенных процессов" ?
> В упор не вижу.
> Вижу лишь несуразную попытку получить имя файла исполняемого
> модуля некоего чужого поцесса.
а, да запутался там определение полного пути исполняемого файла процесса по названию главного окна. Но все равно эта функция работает в обычной программе а в службе не пашет
Leonid Troyanovsky (2009-11-17 11:15:00) [10]
> noname123 (17.11.09 09:51) [15]
http://rsdn.ru/summary/2393.xml
--
Regards, LVT.
Сергей М. (2009-11-17 10:20:00) [11]А где в [15] "определение запущенных процессов" ?
В упор не вижу.
Вижу лишь несуразную попытку получить имя файла исполняемого модуля некоего чужого поцесса.
noname123 (2009-11-17 09:51:00) [12]
function ProcessFileName(Description: string): string;
var
Handle: THandle;
wnd: HWND;
PID: DWORD;
begin
wnd := FindWindow(nil, PChar(Description));
if wnd<>0 then begin
PID := INVALID_HANDLE_VALUE;
GetWindowThreadProcessId(Wnd, @PID);
Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID);
if Handle <> 0 then
try
SetLength(Result, MAX_PATH);
if GetModuleFileNameEx(Handle, 0, PChar(Result), MAX_PATH) > 0 then
SetLength(Result, StrLen(PChar(Result)))
else
Result := '';
finally
CloseHandle(Handle);
end;
end;
end;
тогда почему вот эта функция не работает внутри службы, а если обычная программа все нормально работает
Сергей М. (2009-11-17 09:36:00) [13]Нет, не тоже самое
noname123 (2009-11-17 09:17:00) [14]с реестром никакого, я имел ввиду в службе
Сергей М. (2009-11-17 09:00:00) [15]
> с определением запущенных процессов тоже самое?
Чего "тоже самое" ?
Какое отношение к этому имеет работа с реестром ?
noname123 (2009-11-17 08:38:00) [16]
> Сергей М. © (17.11.09 08:13) [10]
>
>
> > Там есть такой ключ
>
>
> Может и есть - в HKCU того пользователя, от имени которого
> ты стартовал Regedit и узрел этот ключ.
> А в HKCU другого пользователя, от имени которого стартовал
> твой сервис, такого ключа, по всей вероятности, нет.
ясно! Буду разбираться. А с определением запущенных процессов тоже самое??
Сергей М. (2009-11-17 08:13:00) [17]
> Там есть такой ключ
Может и есть - в HKCU того пользователя, от имени которого ты стартовал Regedit и узрел этот ключ.
А в HKCU другогопользователя, от имени которого стартовал твой сервис, такого ключа, по всей вероятности, нет.
noname123 (2009-11-17 08:06:00) [18]
> brother © (17.11.09 07:59) [8]
>
> 1. из твое кода не понятно, ты читаешь или пишешь?
> 2.
> Procedure TForm1.Button2Click (Sender: TObject);
> Var
> Reg: TRegistry;
> Begin
> Reg:=TRegistry.Create;
> Reg.RootKey:=HKEY_LOCAL_MACHINE;
> Reg.OpenKey ('Software\Proga\Primer', true);
> // Если ветка существует, то
> If Reg.ValueExists ('parameter') then
> // Присваиваем компоненту TEdit значение записанного нами
> параметра
> Edit1.Text:=Reg.ReadString ('parameter')
> Else showmessage (‘Запись не найдена’)
> Reg.CloseKey;
> Reg.Free;
> end;
> где?
>
в моем коде я открываю ключ HKCU\Software\65, мне надо просто открыть ключ про чтение или запись там не было вопроса. По умолчанию RootKeyимеет значение HKCU.
brother (2009-11-17 07:59:00) [19]1. из твое кода не понятно, ты читаешь или пишешь?
2.
Procedure TForm1.Button2Click (Sender: TObject);
Var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey ('Software\Proga\Primer', true);
// Если ветка существует, то
If Reg.ValueExists ('parameter') then
// Присваиваем компоненту TEdit значение записанного нами параметра
Edit1.Text:=Reg.ReadString ('parameter')
Else showmessage (‘Запись не найдена’)
Reg.CloseKey;
Reg.Free;
end;
где?
noname123 (2009-11-17 07:54:00) [20]
> brother © (17.11.09 07:43) [3]
>
> читай это:
> http://www.mycomp.com.ua/text/11132;jsessionid=9C3833D54770DEA520F2E84908ABF1FD
> все поймешь...
ничего нового не узнал. Что я должен был понять?