Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запуск своей программы. / 10 сообщений из 10, страница 1 из 1
05.11.2003, 18:03
    #32316513
Basketbol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
Доброе время суток.
Подскажите пожалуйста. Как в прогрмме вызвать свой .exe'шник с передачей ему (.exe'шнику) параметров. В качестве параметров надо использовать значения некоторых полей. Я писал "BC.exe m.nsf m.nfs". Естественно моя прога воспринимает всё буквально. Мне надо значения полей, а не сами символы "m.nsf". Наппишите пожалуйста по подробнее. Я с Фоксом "на вы". Заранее благодарен.
...
Рейтинг: 0 / 0
05.11.2003, 18:21
    #32316539
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
Подскажите пожалуйста. Как в прогрмме вызвать свой .exe'шник с передачей ему (.exe'шнику) параметров. В качестве параметров надо использовать значения некоторых полей. Я писал "BC.exe m.nsf m.nfs".

m.nsf - строка... если нет то конвертишь в строку...
в этой строке не должно быть КАВЫЧЕК(одинарных и двойных)
x1 = strtran(m.nsf,"'","")
x1 = strtran(m.nsf,'"',"")
x2 = strtran(m.nfs,"'","")
x2 = strtran(m.nfs,'"',"")

param1 = "'" + x1 +"'"
param2 = "'" + x2 +"'"

! /N BC.exe &param1 &param2
...
Рейтинг: 0 / 0
05.11.2003, 18:28
    #32316546
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
¶m1 ¶m2
Во блин конвертнуло...
А я написал:
¶m1 -> амперсант+param1
¶m2 -> амперсант+param2
...
Рейтинг: 0 / 0
05.11.2003, 19:03
    #32316570
Basketbol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
Если учесть, что в этом поле не встречается ни каких кавычек, то как надо написать?

Я написал вот так.

param1 = "'" + m.nsf + "'"

! /N BC.exe &param1

НЕ ПОЛУЧИЛОСЬ.
Программа воспринимает только одинарную кавычку в качестве первого параметра. Куда девается всё остальное не понятно.
Подскажите...
...
Рейтинг: 0 / 0
05.11.2003, 19:07
    #32316572
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
Почему все забывают про API?


DECLARE integer WinExec IN kernel32 string lpCmdLine, integer nCmdShow

WinExec('BC.exe '+m.nsf+' '+ m.nfs, 10)
...
Рейтинг: 0 / 0
05.11.2003, 19:29
    #32316586
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
Сорри обшибся...

У тебя наверно вначале m.nsf стоит пробел
что б данные типа:
m.nsf = "a1 a2 a3"
не передавались в exe'шник как
a1 - первый параметр
a2 - второй
a3 - трейтий

Надо строку помещать в двойную кавычку а не в одинарную

v1 = '"' + Alltrim(m.nsf) + '"'
! /N BC.exe &v1

Проверил -> пашит...

lnu:
WinExec - все равно не спасет если в строке есть пробелы...
...
Рейтинг: 0 / 0
05.11.2003, 19:39
    #32316590
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
WinExec - все равно не спасет если в строке есть пробелы...
Ты о чем?

s="Explorer.exe c:\" && Строка с пробелом
WinExec(s, 10)
...
Рейтинг: 0 / 0
05.11.2003, 19:49
    #32316600
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
lnu:
WinExec - все равно не спасет если в строке есть пробелы...
Ты о чем?

s="Explorer.exe c:\" && Строка с пробелом
WinExec(s, 10)


А если s="Explorer.exe c:\ d:\ e:\" && Строка с 3 пробелами
где "c:\ d:\ e:\" - параметр

Я говорил если строка - параметр имеет пробел...
что б оно не разнесло эту строку как два параметра...

И зачем WinExec
Есть и стандартная RunAndWait в Foxrun.pif
Оно еще и ждет пока выполнится...
...
Рейтинг: 0 / 0
05.11.2003, 20:06
    #32316609
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
Сорри не то скопировал...

Есть и стандартная RunAndWait в Tool.dll
Оно еще и ждет пока выполнится...

DECLARE Integer RunAndWait in Tools String, Integer
strarch = "vfp.exe"
lcVerWin = os()
If 'NT' $ lcVerWin or '5.0' $ lcVerWin or '5.1' $ lcVerWin
strfoxrun = 'cmd.exe'
Else
strfoxrun = 'foxrun.pif'
Endif
Run_Wait=RunAndWait('&strfoxrun /C &strarch',1)

Че то я ПО-завершении рабочего дня... совсем рассеяным стал
...
Рейтинг: 0 / 0
05.11.2003, 20:09
    #32316613
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск своей программы.
В таком случае в MSDN написано
The executable name is treated as the first white space-delimited string in lpCmdLine. If the executable or path name has a space in it, there is a risk that a different executable could be run because of the way the function parses spaces. The following example is dangerous because the function will attempt to run "Program.exe", if it exists, instead of "MyApp.exe".

WinExec("C:\Program Files\MyApp", ...)
If a malicious user were to create an application called "Program.exe" on a system, any program that incorrectly calls WinExec using the Program Files directory will run this application instead of the intended application.

To avoid this problem, make sure the application name is enclosed in quotation marks as shown in the example below.

WinExec("\"C:\Program Files\MyApp.exe\" -L -S", ...)

И зачем WinExec
Есть и стандартная RunAndWait в Foxrun.pif
Оно еще и ждет пока выполнится...

Если надо подождать, тогда согласен.

А если за дачу поставить на оборот.
Есть у меня файл с расширением, например, *.xxx.
Как привязать к файлу с таким расширением, мою программу и в ней работать с файлом?
Т.е. кликаем по файлу с расширением doc, у нас загружается Word, а в нем наш файл.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запуск своей программы. / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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