Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Службы Windows [D6, WinXP]


Страницы:   1 2

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
> все поймешь...


ничего нового не узнал. Что я должен был понять?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо