Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / С 1 программы запустить 2 программу / 14 сообщений из 14, страница 1 из 1
17.01.2018, 12:51
    #39585724
-tim-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
Здравствуйте!
Мне нужна Ваша помощь.
Запуская первую программу "dogovor.exe" проверяю наличие обновления данной программы на сервере с помощью
Pver_1 = AGETFILEVERSION(ArrayVersion_1, pat1+"\dogovor.exe") && Первая программа на ПК пользователя
Pver_2 = AGETFILEVERSION(ArrayVersion_2, ALLTRIM(rek_cotr.path_upd)+"dogovor.exe") && Программа обновленная на сервере

IF ArrayVersion_1[11] == ArrayVersion_2[11]
ELSE
= MESSAGEBOX('Необходимо обновить программу ',48,'Проверка')
Вот здесь возможно ли мне закрыть текущую программу "dogovor.exe" и запустить "update_dogovor.exe" ?
Как это можно сделать? Обе программы находятся в одной папке

Pzapusk = 'update_dogovor.exe' && Вторая программа где копируется "dogovor.exe" с сервера на ПК пользователя
! &Pzapusk && Запускаю программу
ENDIF

Спасибо за Ваше время.
...
Рейтинг: 0 / 0
17.01.2018, 12:56
    #39585727
Amiri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
-tim-,

*=ShellExecute(0,"OPEN","c:\bin\1.exe","","",-1)
Не?
или run
...
Рейтинг: 0 / 0
17.01.2018, 13:05
    #39585739
-tim-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
Amiri,

Мне нужно сначала закрыть программу "dogovor.exe"
А затем запустить "update_dogovor.exe"
...
Рейтинг: 0 / 0
17.01.2018, 13:16
    #39585756
Amiri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
-tim-,

RELEASE WINDOWS
CLOSE ALL
ON SHUTDOWN
QUIT
так не пробовали?
...
Рейтинг: 0 / 0
17.01.2018, 13:19
    #39585761
Amiri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
ON SHUTDOWN Do ExitProg
...
DO MainMenu.mpr
DO FORM MainForm.SCX
READ EVENTS
ON SHUTDOWN
PROCEDURE ExitProg
IF MessageBox('Closed app?',4+32+256,'Bye')=7
RETURN
ENDIF
...
CLEAR EVENTS
RETURN
...
Рейтинг: 0 / 0
17.01.2018, 13:25
    #39585765
-tim-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
Amiri,

Спасибо что уделили время, но используя это я просто выйду из программы "dogovor.exe".
А программа "update_dogovor.exe" должна еще и запустится.
Но как?
...
Рейтинг: 0 / 0
17.01.2018, 13:29
    #39585771
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
Amiri,
Ну задача не так проста, но решений у неё много как не странно.
Я лично решил задачу так, при запуске программа сама себя проверяет, если версия устарела, то она спрашивает разрешение у пользователя, если отказывается, то функционал программы переходит в режим ReadOnly, если же согласен, то качаем новый экзешник, даём ему другое имя и создаём батник, где прописываем переименование и запуск программы, сам же батник запускается с задержкой в 5 секунд, чтобы успеть закрыть приложение. Ну а реализацию думай сам, может быть тебе такое решение не понравится. Просто есть ещё более сложные решения, вплоть до создания сервиса, который работает независимо от пользователя и обновляет любое ПО, делает его перезапуск или завершение, даже управление можно забрать на себя, тут полёт фантазии не ограничен
...
Рейтинг: 0 / 0
17.01.2018, 13:29
    #39585773
-tim-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
Amiri,
Или рассмотрим так

IF ArrayVersion_1[11] == ArrayVersion_2[11]
ELSE
= MESSAGEBOX('Необходимо обновить программу ',48,'Проверка')
Pzapusk = 'update_dogovor.exe' && Вторая программа где копируется "dogovor.exe" с сервера на ПК пользователя
RUN &Pzapusk && Запускаю программу
ENDIF

Тогда в программе 'update_dogovor.exe' как закрыть программу "dogovor.exe" ?
...
Рейтинг: 0 / 0
17.01.2018, 13:31
    #39585774
Amiri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
-tim-,

почитайте о ShellExecute и CreateObject думаю это то что вы хотите.
...
Рейтинг: 0 / 0
17.01.2018, 13:34
    #39585779
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
-tim-Amiri,

Спасибо что уделили время, но используя это я просто выйду из программы "dogovor.exe".
А программа "update_dogovor.exe" должна еще и запустится.
Но как?
В первом посте написано как
Код: sql
1.
! &Pzapusk && Запускаю программу



Проблема не в том что она не запустится, а в том что она не сможет заменить "dogovor.exe" пока он запущен. Т.е. "update_dogovor.exe" должен сначала дождаться завершения "dogovor.exe".
В простейшем случае копировать с интервалом 0.1-0.5 сек и проверять что замена прошла успешно.
...
Рейтинг: 0 / 0
17.01.2018, 13:35
    #39585781
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
-tim-,

Код: sql
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.
	If mVerO<>mVerF
		answer=Messagebox('??? Есть новая версия программы, скачать обновление сейчас ???',36,'ВОПРОС')
		If answer=6
			If Right(mNameFileShort,3)='exe'
				answer=7
				If File(mName1)
					answer=Messagebox('??? Запустить обновление программы повторно ???',36,'ВОПРОС')
				Endif
				If answer=6 Or File(mName1)=.F.
					SQLExec(m1,"select SamFile from ProVersion where NaimFile='"+mNameFileShort+"'",'qProVersion')
					cMyFile=Strtofile(qProVersion.SamFile,mName1)
					SQLExec(aaa,"delete from monitor where NaimPro='schet9' and NaimCompFOX='"+Allt(Sys(0))+"'")
					lnH = Fcreate(mNameBat)
					=Fputs(lnH, 'echo off')
					=Fputs(lnH, 'PING 1.1.1.1 -n 1 -w 5000 2>NUL | FIND "TTL=" >NUL')
					=Fputs(lnH, 'del /q '+mNameFile)
					=Fputs(lnH, 'copy '+mName1+' '+mNameFile)
					=Fputs(lnH, 'del /q '+mName1)
					=Fputs(lnH, 'start /B '+mNameFile)
					=Fputs(lnH, 'del /q '+mNameBat)
					=Fclose(lnH)
					mStroka='Run /N '+mNameBat
					&mStroka
					Clear Events
					Quit
				Endif
			Else
				SQLExec(m1,"select SamFile from ProVersion where NaimFile='"+mNameFileShort+"'",'qProVersion')
				cMyFile=Strtofile(qProVersion.SamFile,mNameFile)
			Endif
		Endif
	Endif
...
Рейтинг: 0 / 0
17.01.2018, 13:50
    #39585798
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
-tim-Тогда в программе 'update_dogovor.exe' как закрыть программу "dogovor.exe" ?
Никак. "dogovor.exe" должен зам закрыться сразу после запуска 'update_dogovor.exe'. 21113635
...
Рейтинг: 0 / 0
17.01.2018, 16:12
    #39585930
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
-tim-,
Просто поменяйте немного логику.
Как сделано у меня.
есть прога UPG, она запускается, проверяет есть ли обновление, если есть, качает, потом запускает, если нет, просто, сразу запускает.

Никаких коллизий.
И все, в несколько строк (ну на лист точно влазит)))
...
Рейтинг: 0 / 0
18.01.2018, 06:37
    #39586161
-tim-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С 1 программы запустить 2 программу
asdor,

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


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