powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запуск своей программы.
10 сообщений из 10, страница 1 из 1
Запуск своей программы.
    #32316513
Basketbol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток.
Подскажите пожалуйста. Как в прогрмме вызвать свой .exe'шник с передачей ему (.exe'шнику) параметров. В качестве параметров надо использовать значения некоторых полей. Я писал "BC.exe m.nsf m.nfs". Естественно моя прога воспринимает всё буквально. Мне надо значения полей, а не сами символы "m.nsf". Наппишите пожалуйста по подробнее. Я с Фоксом "на вы". Заранее благодарен.
...
Рейтинг: 0 / 0
Запуск своей программы.
    #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
Запуск своей программы.
    #32316546
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
¶m1 ¶m2
Во блин конвертнуло...
А я написал:
¶m1 -> амперсант+param1
¶m2 -> амперсант+param2
...
Рейтинг: 0 / 0
Запуск своей программы.
    #32316570
Basketbol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если учесть, что в этом поле не встречается ни каких кавычек, то как надо написать?

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

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

! /N BC.exe &param1

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


DECLARE integer WinExec IN kernel32 string lpCmdLine, integer nCmdShow

WinExec('BC.exe '+m.nsf+' '+ m.nfs, 10)
...
Рейтинг: 0 / 0
Запуск своей программы.
    #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
Запуск своей программы.
    #32316590
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinExec - все равно не спасет если в строке есть пробелы...
Ты о чем?

s="Explorer.exe c:\" && Строка с пробелом
WinExec(s, 10)
...
Рейтинг: 0 / 0
Запуск своей программы.
    #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
Запуск своей программы.
    #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
Запуск своей программы.
    #32316613
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
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запуск своей программы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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