Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как использовать ShellExecuteWait / 20 сообщений из 20, страница 1 из 1
17.02.2013, 19:25
    #38154791
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Коллеги!

На странице http://autoit-script.ru/autoit3_docs/functions/ShellExecuteWait.htm
описывается полезная функция ShellExecuteWait.

Если я правильно понимаю, с ее помощью можно приостановить выполнение программы на VFP, пока запущенное внешнее приложение не отработает.

Хочется избавиться от = sleep(t), где t подбирается эмпирически в разных ситуациях.

На нашем форуме я не нашел пример ее использования в среде VFP.

Как ею пользоваться?

Приведите пример ее вызова на VFP, пожалуйста!

Я что-то никак не могу ее вызвать.
...
Рейтинг: 0 / 0
17.02.2013, 19:49
    #38154807
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAPХочется избавиться от = sleep(t), где t подбирается эмпирически в разных ситуациях.
WaitForSingleObject() будет ждать ровно столько сколько надо, если у тебя CreateProcess() используется.
Если не используется, то подумай над его использованием, т.к. все остальное это обертки над CreateProcess(), лучше один раз свою обертку сделать чтобы не зависеть от ограничений чужих поделок.

Тут я свой класс-обертку показывал.
...
Рейтинг: 0 / 0
18.02.2013, 01:04
    #38155059
Beresnev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Ну зачем использовать какую-то функцию, если уже имеется ООП-решение
Код: sql
1.
2.
loWshShell = CREATEOBJECT("Wscript.Shell")
lnReturn = loWshShell.Run(lcExe,0,.T.)


В книге Клепинина и Агофоновой подробно расписана роль 3-го параметра в методе Run() объекта Wscript.Shell.
...
Рейтинг: 0 / 0
19.02.2013, 02:23
    #38156667
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Уважаемый Beresnev!

Подскажите как в качестве lcExe указать не только имя exe файла типа "WinWord.exe", "Calc.exe",
а путь к выполняемому файлу.

У меня возникает ошибка, если lcExe = "d:\papka\programma.exe"
...
Рейтинг: 0 / 0
19.02.2013, 10:11
    #38156865
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Забыл важное обстоятельство - у меня W7 x64.
Тут зачастую есть нюансы.
...
Рейтинг: 0 / 0
19.02.2013, 10:32
    #38156906
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAPЗабыл важное обстоятельство - у меня W7 x64.
Тут зачастую есть нюансы.
Есть ньюансы. На W7 x64 у меня ShellExecute() отказался EXE запускать.

Про Wscript.Shell тут почитай . Примеры на VB но под фокс поправить не сложно.
...
Рейтинг: 0 / 0
19.02.2013, 11:10
    #38156983
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Уважаемый Dima T!

Я ходил по данной Вами ссылке.
Непонятный синтаксис.
Пожалуйста, приведите работоспособный пример в пару строк.
...
Рейтинг: 0 / 0
19.02.2013, 11:59
    #38157100
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAPУважаемый Dima T!

Я ходил по данной Вами ссылке.
Непонятный синтаксис.
Пожалуйста, приведите работоспособный пример в пару строк.
Выше был пример. Попробовал. У меня работает
Код: sql
1.
2.
loWshShell = CREATEOBJECT("Wscript.Shell")
lnReturn = loWshShell.Run(lcExe,0,.T.)


0 вторым параметром - Не отображать окно.
и рабочая папка там та же что и твоей проги которая этот код вызывает.
Может из-за этого у тебя проблемы были.
...
Рейтинг: 0 / 0
19.02.2013, 12:03
    #38157115
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAPНепонятный синтаксис.
Почти как фоксе, немного отличается.
Например
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("nslookup 127.0.0.1")
WScript.Sleep 7000
Set TextStream = WshExec.StdOut
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & Trim(TextStream.ReadLine()) & vbCrLf
Wend
MsgBox Str


будет так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
WshShell = CreateObject("WScript.Shell")
WshExec = WshShell.Exec("nslookup 127.0.0.1")
WScript.Sleep(7000)
TextStream = WshExec.StdOut
Str = ""
do While Not TextStream.AtEndOfStream
    Str = Str + allTrim(TextStream.ReadLine()) + chr(13)
enddo
MessageBox(Str)
...
Рейтинг: 0 / 0
19.02.2013, 14:17
    #38157395
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Dima TWScript.Sleep(7000)


Да не волнуйтесь вы так ... не убежит.
...
Рейтинг: 0 / 0
19.02.2013, 14:46
    #38157453
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Господа!

Пожалуйста, обратите внимание на МОЙ вопрос.

Как сделать так, чтобы lcExe = "d:\papka\programma.exe"

в нижеследующем фрагменте не вызывало ошибку ?

loWshShell = CREATEOBJECT("Wscript.Shell")
lnReturn = loWshShell.Run(lcExe,0,.T.)

Если lcExe = "WinWord.exe" - все работает.

Либо наоборот.

Как упомянутой программе programma.exe дать статус видимой без пути программы.
...
Рейтинг: 0 / 0
19.02.2013, 14:54
    #38157465
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAP,

ты бы хоть написал какая ошибка.
У меня работает при
Код: sql
1.
lcExe = "d:\papka\programma.exe"


если путь правильный.
Если неправильный (файла EXE не существует) - происходит ошибка, тут надо в TRY ... CATCH оборачивать.

sg12, флуди в своей ветке, там можно.
...
Рейтинг: 0 / 0
19.02.2013, 15:01
    #38157479
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Dima T!

Вот программа

PROCEDURE wsh

lcExe = "C:\Program Files\JPEG to PDF\JpegtoPDF.exe"

* lcExe = "WinWord.exe"

loWshShell = CREATEOBJECT("Wscript.Shell")

lnReturn = loWshShell.Run(lcExe,,.T.)

RETURN

Ошибка такова:
...
Рейтинг: 0 / 0
19.02.2013, 15:03
    #38157481
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Заработало!

lcExe = '"'+"C:\Program Files\JPEG to PDF\JpegtoPDF.exe" + '"'

Нужны еще кавычки !!!

Спасибо за помощь!
...
Рейтинг: 0 / 0
19.02.2013, 15:10
    #38157493
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAPНужны еще кавычки !!!
Конечно, иначе как разобрать где путь, а где параметры.

PS Можно строку писать в квадратных скобках, выглядит читабельнее.
Код: sql
1.
lcExe = ["]+"C:\Program Files\JPEG to PDF\JpegtoPDF.exe" + ["]
...
Рейтинг: 0 / 0
26.02.2013, 19:27
    #38167060
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Господа!

Можно ли сделать так, чтобы вновь открывшееся окно с загружаемой программой было модальным?
...
Рейтинг: 0 / 0
27.02.2013, 06:55
    #38167397
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAPГоспода!

Можно ли сделать так, чтобы вновь открывшееся окно с загружаемой программой было модальным?
Нельзя, т.к. это окно другой программы (процесса). Максимум - можно вывести окно запущенной программу перед своей.
...
Рейтинг: 0 / 0
27.02.2013, 13:23
    #38167916
Reese
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAP,

Можно установить LockScreen = .T. и отслеживать существование этого окна. Как окно закрылось - LockScreen = .F.
...
Рейтинг: 0 / 0
27.02.2013, 13:32
    #38167950
UAP
UAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
Уважаемый Reese!

Подскажите куда записать LockScreen.

Мне это неясно, поскольку речь идет об окне ВНЕШНЕГО по отношению к моей программе приложения.
...
Рейтинг: 0 / 0
27.02.2013, 13:44
    #38167971
Reese
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать ShellExecuteWait
UAP,

Lockscreen - это свойство. У объектов Form и _SCREEN
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как использовать ShellExecuteWait / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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