Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Интерактивное приложение не идёт из-под Планировщика задач... / 4 сообщений из 4, страница 1 из 1
21.10.2004, 18:27:28
    #32749153
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерактивное приложение не идёт из-под Планировщика задач...
Тихо-мирно юзеры использовали VB-приложение "Отчёты".
Потребовалось готовить некоторые отчёты из-под Планировщика задач
(не царское это дело - директорам думать, какие AnyKeys нажимать!).
Оказалось, что приложение, исполняющееся в фоновом режиме,
"тормозит наглухо" на совсем неинтерактивных операторах: Form.Show и .SetFocus.
И, если в исходном коде Form.Show встречается сравнительно редко,
то .SetFocus может использоваться гораздо чаще.
Следовательно, правка кода "под фоновый режим"
должна проводиться в бОльшем количестве мест.

Вопрос:

Можно ли заставить интерактивное приложение работать в фоновом режиме
средствами ОС, а не переделкой кода?
...
Рейтинг: 0 / 0
21.10.2004, 20:43:05
    #32749337
МаксимВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерактивное приложение не идёт из-под Планировщика задач...
А если понизить приоритет отчетов, запускаемых из Планировщика задач? Т.е. запускать приложение через коммандный файл(cmd).
Например запускаем "Блокнот" из cmd-файла:
Код: plaintext
start /low %SystemRoot%\system32\notepad.exe
...
Рейтинг: 0 / 0
21.10.2004, 21:48:58
    #32749380
МаксимВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерактивное приложение не идёт из-под Планировщика задач...
Или повысить приоритет фонового приложения? Я тут пример написал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Explicit

Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

 '/* -- флаги приоритетов для процессов -- */ 
Private Const NORMAL_PRIORITY_CLASS   As Long = &H20     ' средний 
Private Const IDLE_PRIORITY_CLASS     As Long = &H40     ' низкий 
Private Const HIGH_PRIORITY_CLASS     As Long = &H80     ' высокий 
Private Const REALTIME_PRIORITY_CLASS As Long = &H100    ' реального времени 

Private Const PROCESS_SET_INFORMATION As Long = &H200



Private Sub Form_Load()
     'Call SetPriorityClass(ByVal OpenProcess(ByVal PROCESS_SET_INFORMATION, ByVal 0&, GetCurrentProcessId), ByVal IDLE_PRIORITY_CLASS) 
    Call SetPriorityClass(ByVal OpenProcess(ByVal PROCESS_SET_INFORMATION, ByVal  0 &, GetCurrentProcessId), ByVal HIGH_PRIORITY_CLASS)
End Sub
...
Рейтинг: 0 / 0
22.10.2004, 13:31:07
    #32750364
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерактивное приложение не идёт из-под Планировщика задач...
МаксимВповысить приоритет фонового приложения...
Я забыл написать, что "фоновость" вызвана Планировщиком.
Задание выполняется, можно сказать, монопольно, тёмной ночью,
на железке без "головы", клавы и мыши, от имени сетевого админа.
Нет никаких сеансов пользователя.
Флаг "Разрешить взаимодействие с рабочим столом"
(Службы-->Планировщик заданий-->Вход в систему) не влияет никак.
Вследствие доработки программы напильником "интерактивность"
заменена на "If AutoMode Then... Else... End If", в которых
клики мышью заменены вызовами соответствующих обработчиков.
Однако исполняемый код, натыкаясь на .Show или .SetFocus,
не имеет рычагов управления этим фокусом и смотрит на команду,
как на локоть, который близко, но укусить нельзя.
И не пишет ничего ни в какой лог!
То-есть эта ситуация - не критическая с т.зрения приложения или системы.

Вопрос и заключается в том, чтО из системного окружения нужно приложению,
чтобы оно (приложение) получало ответ от системы "Форма показана",
"Фокус установлен на тот контрол, который Вы заказывали" и т.д.

Спасибо.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Интерактивное приложение не идёт из-под Планировщика задач... / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]