![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
создание переменных в cmd [D7, 2000, XP]
antonn © (2008-12-27 13:30:00)Сформулировать не могу, задача такая: вызывается 1.bat, в нем запускается мое консольное приложение, после его отработки в "переменых" 1.bat должны появиться переменные созданые моей консолькой.
Т.е. в батнике переменная создается так:
SET TEMP_VAR=123456
echo %TEMP_VAR%
моя консоль отрабатывая в контексте этого батника сама инициализоровать эти переменные (либо если они уже есть - переделать), т.е. теперь батник будет выглядеть так:
mycmd.exe
echo %TEMP_VAR%
Как вот это действие называется, что искать? Пересмотрел кучу примеров и статей, везде консолька раскрашивается и ставятся обработчики всякие (искал по "вывод из консоли").
Leonid Troyanovsky (2008-12-28 17:05:00) [1]
> Ляпа (28.12.08 13:44) [28]
> Просто в твоём примере я этого не вижу (ничего личного и
> буквоедского, обычное уточнение)
В msdn подобная статья есть, и если уж это кого интересует, то
тот не сможет, IMHO, пройти мимо.
Пока о намерениях мы можем только гадать, я не вижу смысла
в полнофункциональных примерах.
--
Regards, LVT.
antonn (2008-12-28 16:20:00) [2]батник проще править, ничего не надо перкомпилировать.
Юрий Зотов (2008-12-28 15:12:00) [3]Непонятно, зачем тут вобще нужен батник. Все, что он делает, может сделать сама программа и тогда проблемы с переменными среды просто исчезают (ведь программа может не только запустить дочерний процесс, но и передать ему свое окружение).
Ляпа (2008-12-28 13:44:00) [4]
> h := FindWindow('ConsoleWindowClass', nil);
> Окну присваивается уникальное имя путем SetConsoleTitle,
>
> это имя и используется для поиска.
Просто в твоём примере я этого не вижу (ничего личного и буквоедского, обычное уточнение)
antonn (2008-12-28 13:43:00) [5]
> Тогда меняй заголовок из своей программы,
> а по окончанию - вернешь на место старый.
хм.. как, если копий батников запустивших меня несколько (и вероятно даже запущенных "меня" несколько)? можно как то получить хендл консоли меня запустившей?
Leonid Troyanovsky (2008-12-28 13:39:00) [6]
> antonn © (28.12.08 13:32) [25]
> да запускаю не я, мое дело вернуть в него мою прогу и обеспечить
> поручение результата после ее отработки. Т.е. диктовать
> как ее запускать я не могу.
Тогда меняй заголовок из своей программы,
а по окончанию - вернешь на место старый.
--
Regards, LVT.
antonn (2008-12-28 13:32:00) [7]
> Пускаешь его с параметром, в нем
да запускаю не я, мое дело вернуть в него мою прогу и обеспечить поручение результата после ее отработки. Т.е. диктовать как ее запускать я не могу.
Leonid Troyanovsky (2008-12-28 13:31:00) [8]
> antonn © (28.12.08 13:25) [23]
> так батник вызывает меня (причем один и от же, но может
> быть в нескольких экземплярах), а я не я батник, поэтому
> вероятней батник вернет мне параметром его заголовок.
Пускаешь его с параметром, в нем
title %1
exe.exe "%1"
--
Regards, LVT.
antonn (2008-12-28 13:25:00) [9]
> Leonid Troyanovsky © (28.12.08 13:17) [22]
так батник вызывает меня (причем один и от же, но может быть в нескольких экземплярах), а я не я батник, поэтому вероятней батник вернет мне параметром его заголовок. По идее в cmd должен быть какой нибудь random() (ну я бы сделал, пойду проверю), чтобы соли в заголовок добавить.
Leonid Troyanovsky (2008-12-28 13:17:00) [10]
> antonn © (28.12.08 13:13) [21]
> ну в теории можно загнять туда время :)
Уж лучше параметром передавать, от юзера.
--
Regards, LVT.
antonn (2008-12-28 13:13:00) [11]
> Только где ты там возьмешь уникальное имя?
ну в теории можно загнять туда время :)
sniknik (2008-12-28 13:06:00) [12]> vbs не пашет :)
да ну?
положи в файл с названием Hello.vbs следующую строчку
WScript.Echo "Hello Word!"
и выполни (в проводнике двойной клик мыши). а то ты его из "dos-а" наверно проверял...
Leonid Troyanovsky (2008-12-28 13:03:00) [13]
> antonn © (28.12.08 12:59) [18]
> > Окну присваивается уникальное имя путем SetConsoleTitle,
> в самом батнике это возможно?
Можно и в батнике - TITLE, IMHO.
Только где ты там возьмешь уникальное имя?
--
Regards, LVT.
antonn (2008-12-28 12:59:00) [14]
>
> Окну присваивается уникальное имя путем SetConsoleTitle,
>
в самом батнике это возможно?
antonn (2008-12-28 12:54:00) [15]
> Leonid Troyanovsky © (28.12.08 11:14) [14]
спасибо, попробую (vbs не пашет :))
Leonid Troyanovsky (2008-12-28 12:12:00) [16]
> Ляпа (28.12.08 11:30) [15]
> А что будет, если есть несколько таких окон?
Окну присваивается уникальное имя путем SetConsoleTitle,
это имя и используется для поиска.
--
Regards, LVT.
Ляпа (2008-12-28 11:30:00) [17]
> Leonid Troyanovsky © (28.12.08 11:14) [14]
А что будет, если есть несколько таких окон?
Leonid Troyanovsky (2008-12-28 11:14:00) [18]
> antonn © (27.12.08 15:56) [6]
> Меня лишь интересует, можно ли вернуть текст который будет
> "выполнен" той копии cmd,
program setenvvar2;
uses
Windows,
Messages,
SysUtils;
{$APPTYPE CONSOLE}
const
s : String = 'set x=y'#13;
var
h: HWND;
i : Longint;
begin
h := FindWindow('ConsoleWindowClass', nil);
for i := 1 to Length(s) do
PostMessage(h, WM_CHAR, WParam(s[i]), 0);
end.
--
Regards, LVT.
Leonid Troyanovsky (2008-12-28 11:03:00) [19]
> antonn © (27.12.08 18:54) [8]
> хотелось бы отдать кусок текста на выполнение).
Пусти telnet service и напиши своего клиента к нему.
--
Regards, LVT.
Leonid Troyanovsky (2008-12-28 11:00:00) [20]
> antonn © (27.12.08 14:47) [2]
http://groups.google.com/group/fido7.ru.delphi.chainik/browse_thread/thread/ad6df8e4a327fbb8/105efa8d48c49726#105efa8d48c49726
Во-ще-то, для таких вещей пользуют vbscript.
--
Regards, LVT.