powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / С 1 программы запустить 2 программу
14 сообщений из 14, страница 1 из 1
С 1 программы запустить 2 программу
    #39585724
-tim-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Мне нужна Ваша помощь.
Запуская первую программу "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
С 1 программы запустить 2 программу
    #39585727
Amiri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-tim-,

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

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

RELEASE WINDOWS
CLOSE ALL
ON SHUTDOWN
QUIT
так не пробовали?
...
Рейтинг: 0 / 0
С 1 программы запустить 2 программу
    #39585761
Amiri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
С 1 программы запустить 2 программу
    #39585765
-tim-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amiri,

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

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

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



Проблема не в том что она не запустится, а в том что она не сможет заменить "dogovor.exe" пока он запущен. Т.е. "update_dogovor.exe" должен сначала дождаться завершения "dogovor.exe".
В простейшем случае копировать с интервалом 0.1-0.5 сек и проверять что замена прошла успешно.
...
Рейтинг: 0 / 0
С 1 программы запустить 2 программу
    #39585781
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-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
С 1 программы запустить 2 программу
    #39585798
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-tim-Тогда в программе 'update_dogovor.exe' как закрыть программу "dogovor.exe" ?
Никак. "dogovor.exe" должен зам закрыться сразу после запуска 'update_dogovor.exe'. 21113635
...
Рейтинг: 0 / 0
С 1 программы запустить 2 программу
    #39585930
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-tim-,
Просто поменяйте немного логику.
Как сделано у меня.
есть прога UPG, она запускается, проверяет есть ли обновление, если есть, качает, потом запускает, если нет, просто, сразу запускает.

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

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


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