Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Планировщик задач 
V
    Опции темы
x77
Дата 19.4.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



тот, который живёт в Start\Programs\Accessoires\System Tools\Scheduled tasks

требуется вытащить список заданий с параметрами запуска.

бодаюсь уже с неделю. удалось нарыть, что

1) функции netapi32 типа NetScheduleJobEnum не работают.
2) формат файла в Windows\Tasл\*.job - в мсдн не описан и никто его не знает.
3) есть mstask.dll, в которой, насколько я понял, описан некий COM-интерфейс для работы с виндовым планировщиком. в Visual C++ удалось скомпилять и выполнить пример из Platform SDK, который выдал список назначенных заданий. но сам этот интерфейс в системе не зарегестрирован, по крайней мере, создать COM-объект по GUID'у из mstask.h мне не удалось. писать на сях длл-ку, которая будет делать то, что надо, и потом вызывать её - мне тоже не улыбается, потому что получать список тасков мне надо из-под своего DCOM-сервера, и мусорить чужую машину какими-то левыми длл-ками - очень сильно не хочется. зарегестрировать в системе mstask также не удаётся, ни как COM-сервер, ни как библиотеку типов.
4) есть mstask.IDL, который, насколько я понимаю, можно как-то заюзать в дельфях, чтобы получить "свой" ком-объект и работать дальше с ним. если да, то как это делается? эксперименты с idl2pas, midl и протчим успехом не увенчались.

кто-нибудь когда-нибудь решал такую задачу smile? 


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 19.4.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



Snowy, если не получится сделать самому - то да, пойдёт. отдам 30 баксов и посмотрю, как умные люди пишут smile спасибо!

а реализовывать эту байду сам никто не пробовал? smile 


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 19.4.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



ещё вот нарылась забавная команда. 

schtasks

в крайнем случае можно либо перенаправить вывод пайпами в мемору-стрим какой-нить, либо юзать голый редирект с waitforsingleobject. 

блин, даже в дос это включено! а нормального интерфейса - нету. ненавижу мелкософт.  

Это сообщение отредактировал(а) x77 - 19.4.2006, 15:02


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Snowy
Дата 19.4.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Сам не юзал.
(У меня эта дыра в системе вообще вырезается сразу после установки виндов.)
Но, покопавшись в своих закромах, нашел API с демой: 

Присоединённый файл ( Кол-во скачиваний: 40 )
Присоединённый файл  TaskScheduler.zip 27,44 Kb
PM MAIL   Вверх
Rouse_
Дата 19.4.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Цитата(x77 @  19.4.2006,  15:24 Найти цитируемый пост)
функции netapi32 типа NetScheduleJobEnum не работают.

Работают, просто они показывают записи по текущему аккаунту планировщика. Без соответствующего переключения он является SYSTEM. Для проверки попробуй создать через планировщик задачу, а потом еще одну но уже из кода программы руками и посмотри на колонку Creator.
Для переключения выполни SetNetScheduleAccountInformation...
Примеров под рукой нет, так что топчи MSDN сам smile 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
x77
Дата 19.4.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



Snowy, это оно! спасибо smile


Rouse_, да пробовали, и в дельфи, и в сях. потом вычитали в СДК, что оно локально работать всё равно не будет, и забили на это всё smile 


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 19.4.2006, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



короче, вот, вдруг, сгодится кому smile

Код

procedure TForm1.Button1Click(Sender: TObject);
const
  fName: string = '\temp';
var
  pi : TProcessInformation;
  si : TStartupInfo;
begin
  if FileExists (fName) then
    DeleteFile (fName);
  ZeroMemory(@si,sizeof(si));
  si.cb:=SizeOf(si);
  if CreateProcess (PChar('c:\windows\system32\cmd.exe'),
   PChar ('/c schtasks /query /FO csv /v /nh > ' + fName),
   nil, nil, False, 0, nil, nil, si, pi ) then begin
     WaitForSingleObject(pi.hProcess,INFINITE);
     CloseHandle(pi.hProcess);
     CloseHandle(pi.hThread);
     ListBox1.Items.LoadFromFile(fName);
     ListBox1.Items.CommaText := ListBox1.Items.Text;
     DeleteFile (fName);
  end;
end;


 smile  smile  smile  


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.