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

Вопрос:

Можно ли заставить интерактивное приложение работать в фоновом режиме
средствами ОС, а не переделкой кода?
...
Рейтинг: 0 / 0
Интерактивное приложение не идёт из-под Планировщика задач...
    #32749337
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если понизить приоритет отчетов, запускаемых из Планировщика задач? Т.е. запускать приложение через коммандный файл(cmd).
Например запускаем "Блокнот" из cmd-файла:
Код: plaintext
start /low %SystemRoot%\system32\notepad.exe
...
Рейтинг: 0 / 0
Интерактивное приложение не идёт из-под Планировщика задач...
    #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
Интерактивное приложение не идёт из-под Планировщика задач...
    #32750364
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МаксимВповысить приоритет фонового приложения...
Я забыл написать, что "фоновость" вызвана Планировщиком.
Задание выполняется, можно сказать, монопольно, тёмной ночью,
на железке без "головы", клавы и мыши, от имени сетевого админа.
Нет никаких сеансов пользователя.
Флаг "Разрешить взаимодействие с рабочим столом"
(Службы-->Планировщик заданий-->Вход в систему) не влияет никак.
Вследствие доработки программы напильником "интерактивность"
заменена на "If AutoMode Then... Else... End If", в которых
клики мышью заменены вызовами соответствующих обработчиков.
Однако исполняемый код, натыкаясь на .Show или .SetFocus,
не имеет рычагов управления этим фокусом и смотрит на команду,
как на локоть, который близко, но укусить нельзя.
И не пишет ничего ни в какой лог!
То-есть эта ситуация - не критическая с т.зрения приложения или системы.

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

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


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