Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 10:00
в общем вставил библиотеку и код как написано в msdn . запуск , останов , пауза . всё работает . есть только 2 проблемы по которым я что то не пойму в чём дело :
1. в апликейшн лог валится каждую секудну сообщение
Не найдено описание для события с кодом ( 1 ) в источнике ( 1C_Robot ). Возможно, на локальном компьютере нет нужных данных в реестре или файлов DLL сообщений для отображения сообщений удаленного компьютера. Попробуйте использовать ключ /AUXSOURCE= для получения этого описания, - дополнительные сведения об этом содержатся в справке. В записи события содержится следующая информация: [0] .
и 2 . когда всё стартует на серваке и заходишь под терминал сервисом почему то не видно запущенного приложения в трее . (хотя я думаю потому что запускается сервис от имени того кто залогинился . ) тогда вопрос как сделать его системным ?
-
Sebas
-
- Неуловимый Джо

-

-
- Сообщения: 3626
- Зарегистрирован: 12.02.2002 (Вт) 17:25
- Откуда: столько наглости такие вопросы задавать
-
Sebas » 29.06.2005 (Ср) 10:33
сервис не должен взаимодействовать с рабочим столом напрямую...
это нарушение безопасности.
Используй другой ехе , который будет работать на раб столе пользователя и взаимодействовать с твоей службой
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?
sebas<-@->mail.ru
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 10:53
А шде можно посмотреть пример описания взаимодействия exe сервиса и exe для работы с пользователями (на основе NTSVC.ocx)?
как я понимаю надо будет чтобы exe отвечал на команды сервиса . а в сервисе было описано что и откуда запускать .
-
Sebas
-
- Неуловимый Джо

-

-
- Сообщения: 3626
- Зарегистрирован: 12.02.2002 (Вт) 17:25
- Откуда: столько наглости такие вопросы задавать
-
Sebas » 29.06.2005 (Ср) 11:16
можно по TCP, Pipes. Или ДКОМ.
А протокол обмена сам думай.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?
sebas<-@->mail.ru
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 11:23
что то я не пойму . всё что мне нужно это просто чтобы приложение запускалось само . это автоматический обмен почтой с филиалами . максимум что там есть это кнопка ручной отправки . спрашивается можно ли как нибудь превратить всё это в сервис ? без написания протокола обмена данными . между файлами . то есть запустилась система - запустилось приложение - оно висит в трее . всё . или максимум что можно это поубирать оттуда все интерфейсы ,сделать вывод в eventlog при событиях ?
-
Sebas
-
- Неуловимый Джо

-

-
- Сообщения: 3626
- Зарегистрирован: 12.02.2002 (Вт) 17:25
- Откуда: столько наглости такие вопросы задавать
-
Sebas » 29.06.2005 (Ср) 11:38
Обьъясни требования к приложению, нужно ли ему иметь интерфейс?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?
sebas<-@->mail.ru
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 12:00
иметь интерфейс желательно . чтобы не лезть в логи для того чтобы посмотреть какие письма ушли . а также для того чтобы отправить письма вручную (так там установлен обмен почтой через заданный интервал времени)
-
Konst_One
-
- Член-корреспондент академии VBStreets

-

-
- Сообщения: 3041
- Зарегистрирован: 09.04.2004 (Пт) 13:47
- Откуда: Химки
-
Konst_One » 29.06.2005 (Ср) 13:29
это уже не сервис будет, а просто обычная прога, которая в трее у тебя будет висеть и все, что тебе надо, делать в фоновом режиме
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 13:36
1. необходимо чтобы прога запускалась до того как логинишься в сервак .
2. чтобы если я захожу на сервак терминалом я мог смотреть на фейс этой проги и видеть что куда ушло (там это высвечивается) .
3. может можно использовать srvany.exe .
-
Sebas
-
- Неуловимый Джо

-

-
- Сообщения: 3626
- Зарегистрирован: 12.02.2002 (Вт) 17:25
- Откуда: столько наглости такие вопросы задавать
-
Sebas » 29.06.2005 (Ср) 13:59
Ты не сможешь из приложения ЗАПУЩЕННОГО РАНЬШЕ ЛОГОН-СЕССИИ получить доступ к её рабочему столу! тоесть оно будет видно только при ЛОКАЛЬНОМ входе, но кнопки нажиматься не будут))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?
sebas<-@->mail.ru
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 14:09
значит как я понял надо написать сервис , и всё что он делает выводить в eventlog . никаких форм и кнопок . вот гимор !
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 15:17
вопрос . как написать приложение в котором нет ни 1 формы ? сервис и таймеры то надо добавлять куда то ? может проект по другому должен быть создан ?
-
Sebas
-
- Неуловимый Джо

-

-
- Сообщения: 3626
- Зарегистрирован: 12.02.2002 (Вт) 17:25
- Откуда: столько наглости такие вопросы задавать
-
Sebas » 29.06.2005 (Ср) 15:23
формы то могут быть, тока не рассчитывай на интерактивность..
Ну вообщето, таймер можно добавить.... WithEvents
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?
sebas<-@->mail.ru
-
Konst_One
-
- Член-корреспондент академии VBStreets

-

-
- Сообщения: 3041
- Зарегистрирован: 09.04.2004 (Пт) 13:47
- Откуда: Химки
-
Konst_One » 29.06.2005 (Ср) 15:24
Unattended Execution в свойствах проекта, а таймер тебе зачем?
в процедуре Main просто цикл определяй и все дела:
- Код: Выделить всё
If IsNTService Then
' ******************
' Here you may initialize and start service's objects
' These objects must be event-driven and must return control
' immediately after starting.
' ******************
If Service_Initialize(ServiceName) = 0 Then
SetServiceState SERVICE_RUNNING
Do
' ******************
' It is main service loop. Here you may place statements
' which perform useful functionality of this service.
' ******************
' Loop repeats every second. You may change this interval.
Interval = Service_Loop()
Loop While MsgWaitObj(Interval, hStopPendingEvent, 1&) = WAIT_TIMEOUT
End If
' ******************
' Here you may stop and destroy service's objects
' ******************
Service_Terminate
SetServiceState SERVICE_STOPPED
SetEvent hStopEvent
' Waiting for service thread termination
MsgWaitObj INFINITE, hnd, 1&
CloseHandle hnd
End If
а это функция ожидания:
- Код: Выделить всё
' The MsgWaitObj function replaces Sleep,
' WaitForSingleObject, WaitForMultipleObjects functions.
' Unlike these functions, it
' doesn't block thread messages processing.
' Using instead Sleep:
' MsgWaitObj dwMilliseconds
' Using instead WaitForSingleObject:
' retval = MsgWaitObj(dwMilliseconds, hObj, 1&)
' Using instead WaitForMultipleObjects:
' retval = MsgWaitObj(dwMilliseconds, hObj(0&), n),
' where n - wait objects quantity,
' hObj() - their handles array.
Public Function MsgWaitObj(Interval As Long, _
Optional hObj As Long = 0&, _
Optional nObj As Long = 0&) As Long
Dim t As Long, T1 As Long
If Interval <> INFINITE Then
t = GetTickCount()
On Error Resume Next
t = t + Interval
' Overflow prevention
If Err <> 0& Then
If t > 0& Then
t = ((t + &H80000000) _
+ Interval) + &H80000000
Else
t = ((t - &H80000000) _
+ Interval) - &H80000000
End If
End If
On Error GoTo 0
' T contains now absolute time of the end of interval
Else
T1 = INFINITE
End If
Do
If Interval <> INFINITE Then
T1 = GetTickCount()
On Error Resume Next
T1 = t - T1
' Overflow prevention
If Err <> 0& Then
If t > 0& Then
T1 = ((t + &H80000000) _
- (T1 - &H80000000))
Else
T1 = ((t - &H80000000) _
- (T1 + &H80000000))
End If
End If
On Error GoTo 0
' T1 contains now the remaining interval part
If IIf((T1 Xor Interval) > 0&, _
T1 > Interval, T1 < 0&) Then
' Interval expired
' during DoEvents
MsgWaitObj = STATUS_TIMEOUT
Exit Function
End If
End If
' Wait for event, interval expiration
' or message appearance in thread queue
MsgWaitObj = MsgWaitForMultipleObjects(nObj, _
hObj, 0&, T1, QS_ALLINPUT)
' Let's message be processed
DoEvents
If MsgWaitObj <> nObj Then Exit Function
' It was message - continue to wait
Loop
End Function
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 15:29
я говорю об использовании NTSVC.ocx . я не говорю о проекте сервис своими руками с тонной кода .
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 15:35
я убрал свойство Interactive . но по прежнему появляются ошибки в eventlog см. 1 сообщение
-
stallion
-
- Начинающий

-
-
- Сообщения: 10
- Зарегистрирован: 16.06.2005 (Чт) 13:36
stallion » 29.06.2005 (Ср) 15:56
если мы не используем сервис тогда :
1. в проекте sample есть управление сервисом .
2. в основном сервисе присутствует файл related documents - service.res / также там 2 модуля ntservice и sample /
вопрос - что из этого нужно для создания собственного сервиса .
вопрос 2 - как назвать сервис своим именем
вопрос 3 - в каком месте модуля вставлять свой код и иницилизировать переменные .
вопрос 4 - как там выводить текст в eventlog
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot, Yandex-бот и гости: 9