Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
ВнизIScheduledWorkItem.SetAccountInformation Найти похожие ветки
← →
alxx (2002-09-11 15:55) [0]Пытаюсь программировать планировщик. Если добавлять задание и не давать пароля, то задача не выполняется. Однако, в MSDN сказано:
HRESULT SetAccountInformation(
LPCWSTR pwszAccountName,
LPCWSTR pwszPassword
);
pwszPassword
[in] String that contains the password for the account specified in pwszAccountName.
Set this parameter to NULL if the local account is specified or, optionally, for an account other than local system if the TASK_FLAG_RUN_ONLY_IF_LOGGED_ON flag was not passed to IScheduledWorkItem::SetFlags. (The TASK_FLAG_RUN_ONLY_IF_LOGGED_ON flag is provided so that applications can schedule tasks in their own accounts without knowing their own accounts" passwords.)
т.е. я так понимаю, если сделать так:SetAccountInformation("", nil);
то задача должна выполняться для текущего аккаунта даже если пароль не задан. Но! выполняется она как то непонятно. Звук есть, а окна и сообщения на экран НЕ ВЫВОДЯТСЯ. Где я не прав?
← →
alxx (2002-09-11 16:00) [1]Кстати, нигде не могу найти декларации
TASK_FLAG_RUN_ONLY_IF_LOGGED_ON!
← →
alxx (2002-09-11 17:22) [2]A?
← →
Ученик (2002-09-11 17:24) [3]#define TASK_SUNDAY (0x1)
#define TASK_MONDAY (0x2)
#define TASK_TUESDAY (0x4)
#define TASK_WEDNESDAY (0x8)
#define TASK_THURSDAY (0x10)
#define TASK_FRIDAY (0x20)
#define TASK_SATURDAY (0x40)
#define TASK_FIRST_WEEK (1)
#define TASK_SECOND_WEEK (2)
#define TASK_THIRD_WEEK (3)
#define TASK_FOURTH_WEEK (4)
#define TASK_LAST_WEEK (5)
#define TASK_JANUARY (0x1)
#define TASK_FEBRUARY (0x2)
#define TASK_MARCH (0x4)
#define TASK_APRIL (0x8)
#define TASK_MAY (0x10)
#define TASK_JUNE (0x20)
#define TASK_JULY (0x40)
#define TASK_AUGUST (0x80)
#define TASK_SEPTEMBER (0x100)
#define TASK_OCTOBER (0x200)
#define TASK_NOVEMBER (0x400)
#define TASK_DECEMBER (0x800)
#define TASK_FLAG_INTERACTIVE (0x1)
#define TASK_FLAG_DELETE_WHEN_DONE (0x2)
#define TASK_FLAG_DISABLED (0x4)
#define TASK_FLAG_START_ONLY_IF_IDLE (0x10)
#define TASK_FLAG_KILL_ON_IDLE_END (0x20)
#define TASK_FLAG_DONT_START_IF_ON_BATTERIES (0x40)
#define TASK_FLAG_KILL_IF_GOING_ON_BATTERIES (0x80)
#define TASK_FLAG_RUN_ONLY_IF_DOCKED (0x100)
#define TASK_FLAG_HIDDEN (0x200)
#define TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET (0x400)
#define TASK_FLAG_RESTART_ON_IDLE_RESUME (0x800)
#define TASK_FLAG_SYSTEM_REQUIRED (0x1000)
#define TASK_FLAG_RUN_ONLY_IF_LOGGED_ON (0x2000)
#define TASK_TRIGGER_FLAG_HAS_END_DATE (0x1)
#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END (0x2)
#define TASK_TRIGGER_FLAG_DISABLED (0x4)
#define TASK_MAX_RUN_TIMES ( 1440 )
← →
alxx (2002-09-11 17:35) [4]Спасибо. У меня такого просто не было, видимо старые версии какие-то...
Но проблема то, похоже все равно остается. Приложения, которые запускает планировщик остаются невидимыми, даже если их показыватьShowWindow(Application.Handle, SW_SHOW);
А если задать нормальный правильный пароль, то все работает нормально.
← →
alxx (2002-09-12 10:04) [5]Никто не знает?
← →
Ученик (2002-09-12 10:07) [6]>alxx © (12.09.02 10:04)
Приведи код, так будет быстрее
← →
alxx (2002-09-12 12:48) [7]Спасибо, я разобрался уже.
Там оказывается надо имя пользователя дать, а пароль nil, и флаг
TASK_FLAG_RUN_ONLY_IF_LOGGED_ON.
N:=SizeOf(Buf)-1;
Windows.GetUserName(Buf, N);
sUSER := StringToOleStr(PChar(@Buf[0]));
pWorkItem.SetAccountInformation(sUSER,nil);
SysFreeString(sUSER);
pWorkItem.SetTaskFlags(TASK_FLAG_RUN_ONLY_IF_LOGGED_ON);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c