powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа как служба без логона
19 сообщений из 19, страница 1 из 1
Работа как служба без логона
    #36049118
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется нехитрое приложение, утилитка которая архивирует файлики , там пишет лог, и потом после дела лог это отправляет . На залогниненной машине всё ок, а вот если запускать через nncron (планировщик) как службу, на незалогиненной машине доходит до момента
Код: plaintext
oSMTP=NEWOBJECT("smtpmail","smtpmail.prg")

и тишина висит процесс в памяти и ничего не делает :( , что надо сделать что бы класс образовался и отработал ?

спасибо!

____________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36051485
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запуск все равно от имени какого-то пользователя происходит. По другому виндовс не умеет.
Есть подозрение что класс smtpmail использует почтового клиента по умолчанию, а у этого пользователя он не настроен.

Для проверки - зайди под тем пользователем под которым планировщик запускает, запусти руками свою прогу и посмотри что происходит.
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36051820
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую для отправки почты использовать библиотеку Владимира Кныра (через Winsock, те не требует установки какого-либо почтовика!). Подробности см. на forum.foxclub.ru, в разделе решения... или поиск по форуму. Пользуюсь, не жалею.
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054207
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! за ответы. smtpmail - класс который самодостаточен, вроде бы, я его в ехе скомпили и отсылает всё супер куда надо с указанием что да как там почтового сервера получателя и т.д. а вот когда не в логоне то не хочет запускается процесс и висит, даже непонятно что ему надо :) не нужен ему почтовый клиент он сам. да он именно через winsock :) оттуда даже наверно и взят :)
думаю уже от него отказаться и забирать логи из папки с машины которая всегда залогинена , что конечно пошло.

________________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054255
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. В винде процесс запускается всегда от имени какого-то юзера.

2. Если при запуске задача подвисает в процессах, то

2.1. выскакиевает интерфейсное окно (messagebox, wait window ....)
2.2. не хватает прав для выполнения (опять же модальный интерфейс)
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054286
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
2PaulWist

по первому согласен :)

автор2.1. выскакиевает интерфейсное окно (messagebox, wait window ....)
2.2. не хватает прав для выполнения (опять же модальный интерфейс)


есть какая нибудь возможность это увидеть? как посмотреть , а приходится всё время срубать задачу, а чего там не так не понятно , логи писал ну останавливаются на строчке и всё, кстати идея появилась.. поставить как там её команда .. которая тайминг записывает время выполнения каждой команды , может так ? есть идеи?

____________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054308
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
приложение запускается от пользователя с админскими правами :( единственно он никога не логинился на этом компе

_____________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054365
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newalexесть какая нибудь возможность это увидеть?
Я уже предлагал выше: залогиниться под этим пользователем и запустить прогу. И сразу все увидишь.

newalexостанавливаются на строчке и всё
Эта строчка:
Код: plaintext
oSMTP=NEWOBJECT("smtpmail","smtpmail.prg")
Вызывает метод Init() класса smtpmail там и ищи строку на которой виснет.
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054372
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для чистоты эксперимента: залогиниться под пользователем под которым запускается задание и запустить задание, а не прогу напрямую.
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054407
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так и сделал, залогинился под ним создал условия для запуска задания в ннкроне , прошло со свистом я даже окна не увидел всё пробежало :(, о а вот и файлик отчета по по почте пришел.
явно когда не в логоне возникает ошибка какая та а какая увидеть не могу, висит контуры окна чего там не видно!

___________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054422
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну точно висит окошко виден тока восклицательный знак сделать ничего не могу, окно убиваю прога дальше идёт но письмо не отправляет..

_____________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054522
Alexey-Ma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось выяснить с помощью какого механизма идет отсылка.
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36054863
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй этим классом отправлять. Точно работает без логина пользователя.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
DEFINE CLASS clssmtp AS custom
	*-- SMTP-server
	PROTECTED cserver
	cserver = ""
	PROTECTED clogin
	clogin = ""
	PROTECTED cpassword
	cpassword = .F.
	PROTECTED cmailfrom
	cmailfrom = ""
	PROTECTED clasterror
	clasterror = ""
	PROTECTED omsg
	omsg = .F.
	Name = "clssmtp"

	*-- Установка данных отправителя
	PROCEDURE setfrom
		lpara tcServer, tcLogin, tcPass, tcMailFrom
		this.cServer = tcServer
		this.cLogin = tcLogin
		this.cpassword = tcPass
		this.cMailFrom = tcMailFrom
	ENDPROC

	*-- Добавление файла
	PROCEDURE attachfile
		lpara tcFile
		local llOk
		if this.CreateMsg()
			Try
				this.oMsg.AddAttachment(tcFile)
				this.cLastError = ''
				llOk = .T.
			Catch To loError
				this.cLastError = loError.Message
			Finally
				*
			Endtry
		endif
		return llOk
	ENDPROC

	PROCEDURE send
		lpara tcTo, tcSubj, tcText
		local llOk
		if this.CreateMsg()
			Try
				with this.oMsg
			 		.To = tcTo
			 		.Subject = tcSubj
					.TextBody = tcText
			 		.TextBodyPart.Charset ="windows-1251"
			 		.TextBodyPart.ContentTransferEncoding ="quoted-printable"
			 		.Send()
			 	endwith
				this.cLastError = ''
				llOk = .T.
			Catch To loError
				this.cLastError = loError.Message
			Finally
				this.oMsg = .F.
			Endtry
		endif
		return llOk
	ENDPROC


	PROCEDURE getlasterror
		return this.cLastError
	ENDPROC


	PROTECTED PROCEDURE createmsg
		local lcSchema, llOk

		if vartype(this.oMsg) = 'O'
			llOk = .T.
		else
			Try
			 	this.oMsg = NewObject("CDO.Message")
			 	lcSchema = "http://schemas.microsoft.com/cdo/configuration/"
			 	with this.oMsg.Configuration.Fields
			 		.Item(lcSchema + "smtpserverport") =  25  && SMTP Port
			 		.Item(lcSchema + "sendusing") =  2  && Send it using port
			 		.Item(lcSchema + "smtpserver") = this.cServer && host of smtp server
			 		.Item(lcSchema + "smtpauthenticate") =  1  && Authenticate
			 		.Item(lcSchema + "sendusername") = this.cLogin && Username
			 		.Item(lcSchema + "sendpassword") = this.cPassword && Password
			 		.Update()
			 	endwith
				this.oMsg.From = this.cMailFrom
				this.cLastError = ''
				llOk = .T.
			Catch To loError
				this.cLastError = loError.Message
			Finally
				*
			Endtry
		endif
		return llOk
	ENDPROC


ENDDEFINE

Пользоваться так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
loSMTP = NewObject('clsSMTP')
loSMTP.SetFrom("smtp.mailserver.ru", "MyMailLogin", "Password", "От кого<MyMail@mailserver.ru>;")
...
if !loSMTP.Attachfile("c:\test.txt")
   ? "Не удалось приаттачить файл", loSMTP.GetLastError()
else
   if !loSMTP.Send("мыло получателя", "Тема письма", "Тело" + chr( 13 ) + chr( 10 ) + "письма")
      ? 'Не удалось отправить письмо', loSMTP.GetLastError()
   else
      ? 'Письмо ушло'
   endif
endif
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36055017
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newalexСпасибо!
2PaulWist

по первому согласен :)

автор2.1. выскакиевает интерфейсное окно (messagebox, wait window ....)
2.2. не хватает прав для выполнения (опять же модальный интерфейс)


есть какая нибудь возможность это увидеть? как посмотреть , а приходится всё время срубать задачу, а чего там не так не понятно , логи писал ну останавливаются на строчке и всё, кстати идея появилась.. поставить как там её команда .. которая тайминг записывает время выполнения каждой команды , может так ? есть идеи?

____________________________
я не волшебник, я только учусь

В стартовом файле добавь строчки вывода в лог, если возникнет ошибка она запишется в log.txt.

У класса smtpmail есть некие фичи, вернее у почтовых серверов есть эти фичи которые данный класс не учитывает, поэтому возникают висяки при приёме почты.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
* Переопределение  On error
ON ERROR DO ErrHandler with PROGRAM(), LINENO(), ERROR(), MESSAGE()

SET SAFETY OFF 
SET ALTERNATE TO FULLPATH(CURDIR()) + 'log.txt' ADDITIVE
SET ALTERNATE ON
SET CONSOLE OFF
? '____________________________________________________________________ '
? 'Начало выполнения задания ', DATETIME(), SPACE( 6 ) ,SYS( 0 )
? '-------------------------------------------------------------------- '


PROCEDURE ErrHandler
	PARAMETERS tcProgram, tnLineNo, lnError, lcMessage
	LOCAL i
	?"Ошибка:"
	?"   Модуль   :", tcProgram
	?"   Строка   :", tnLineNo
	?"   Код      :", lnError
	?"   Сообщение:", lcMessage

	IF AERROR(laError) >  0 
		FOR m.i =  1  TO ALEN(laError)
		?'laError(1,' + ALLTRIM(TRANSFORM(m.i)) + ')', laError( 1 , m.i)
		ENDFOR 
		
	ENDIF 

Кстати, можно вполне надёжно тспользовать CDO.Configuration/CDO.Message - кода там всего строчек 20-ть.
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36055124
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо! буду пробовать.
Напишу. как и что получилось. :)

2PaulWist
я не вижу окна , тока контуры., но ошибку в текстовик кинуть мысль. сначала попробую более простой вариант отправки. :)

___________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36055243
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newalex
2PaulWist
я не вижу окна , тока контуры., но ошибку в текстовик кинуть мысль. сначала попробую более простой вариант отправки. :)

___________________________
я не волшебник, я только учусь

По любому если задача будет работать без интерфейсного окна, необходимо процесс выполнения писать в лог, иначе как потом будешь разбираться с ошибками.
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36055346
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это да, он и пишет по делу, собственно его я по почте и отправляю :) ну т.е. или сделал или нет основную задачу.. а утилита она работала и работало почта приходила и всё не задумовался что там ошибка может быть....

по поводу вышеуказанного класса когда настраиваю на серер провайдера выдаёт

Не удалось отправить письмоOLE IDispatch exception code 0 from ?: The message could not be sent to the SMTP server. The transport error code was 0x80040217. The server response was not available

кхм... почему?
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36055371
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заработало в обычном режиме
в классе отменил обязательную аутентификацию и заработало!
теперь будем тестить в незалогиненом состоянии
_____________________________
я не волшебник, я только учусь
...
Рейтинг: 0 / 0
Работа как служба без логона
    #36055740
newalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вроде всё заработало! Всем спасибо!

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


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