Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

cmd.exe


Страницы:   1 2

chernoruk ©   (2002-11-15 20:02:00) 

Скажите, как из своего приложения взаимодействовать с коммандной строкой? да так, чтоб всё это не было видно извне -т.е. что не появлялось черное окно


chernoruk   (2002-11-21 21:05:00) [1]

ну не может быть что никто не знает как читать из пайпа на который есть открытый ххэндл на запись???????
весь измучился уже: в примере msdn этот хэндл закрывают, т. е. нельзя потом ещй раз послать команду для cmd line


chernoruk   (2002-11-20 18:38:00) [2]

вот последний вопрос:
с пайпом я разобрался, но как сделать так чтоб не закрывать пайп на STDIN каждый раз после посылки команды?
т.е. есть 2 пайпа- на stdin и stdout
с помощью DuplicateHandle(...false...)
и далее по msdn(там есть пример)
но если не закрывать пайп на stdin, то ничего не получается..
Может, кто сталкивался и знает?(


bak   (2002-11-20 16:16:00) [3]

Ппомогите плз, тема ведь еще не закрыта...


bak   (2002-11-20 09:57:00) [4]

и еще один мааленький вопросик: при вызове какого либо процесса, который автоматически не закрывается (например блокнота) из этой проги, она намертво останавливается на цикле

repeat
Result := Result + Buffer;
ZeroMemory(@Buffer, SizeOf(Buffer));
lpNumberOfBytesRead := 0;
until not ReadFile(hReadPipe, Buffer, SizeOf(Buffer) - 1, lpNumberOfBytesRead, nil);

а точнее на ReadFile. Как это можно побороть?


chernoruk   (2002-11-19 21:11:00) [5]

единственный глюк: ну никак не могу послать ничего в pipe с помощью WriteFile. Как надо оформить вызов этой функции?


chernoruk   (2002-11-19 14:37:00) [6]

усёк, всё просто, спасибо


Eugen Honeker   (2002-11-19 02:46:00) [7]

да задай просто в cmd-box"е "cmd /?".
увидешь все пояснения. ёлки палки...


chernoruk   (2002-11-18 23:50:00) [8]

что-то я такого в msdn не нашел...
может, ссылка акакя полезная есть?
было бы здорово


Anatoly Podgoretsky   (2002-11-18 19:18:00) [9]

А самому получить справку ну никак?


chernoruk   (2002-11-18 19:13:00) [10]

а что значит ключ /C (/K)


Eugen Honeker   (2002-11-18 17:57:00) [11]

что значит lpCommandLine=%ComSpec%?

ты не переводишь lpCommandLine с помощью
ExpandEnvironmentStrings("%ComSpec%",...?


chernoruk   (2002-11-18 17:43:00) [12]

вот, пожалуйста:
CreateProcess(lpCommandLine,nil, nil, nil, True, CREATE_NEW_CONSOLE,
nil, nil, lpStartupInfo, lpProcessInformation)
(lpCommandLine=%ComSpec%)
GetLastError= No access (998)


Eugen Honeker   (2002-11-17 16:01:00) [13]

какую ошибку?
что GetLastError на ету тему говорит?

в принципе можно вообще без %ComSpec%, сразу
передать комманду (например: "cmd.exe /C dir c:\");


chernoruk   (2002-11-16 23:14:00) [14]

странно:
CreateProcess(lpCommandLine,nil, nil, nil, True, CREATE_NEW_CONSOLE,
nil, nil, lpStartupInfo, lpProcessInformation)
(lpCommandLine=%ComSpec%)
уже выдает ошбку...
и вообще: как команду передавать не при запуске, а через WriteFile? что-то я с параметрами запутался


bak   (2002-11-16 13:39:00) [15]

>Eugen Honeker
с OemToCharBuffer ты прав - все пошло :)

а насчет папок - я понял в чем здесь прикол
в примере каждый раз по новому с помощью крейтпроцесс запускается новый процессор. естественно, что он не запоминает текущий каталог. наверное можно его запоминать по последней строке, которую выдает предыдущий процессор (или еще как)


Eugen Honeker   (2002-11-16 12:13:00) [16]

дополнение:

русские буквы: можно с OemToCharBuffer попробовать



repeat
...
until not ReadFile(hReadPipe, Buffer, SizeOf(Buffer) - 1, lpNumberOfBytesRead, nil


здесь надо или buffer увеличить или считаемое сохранить


Eugen Honeker   (2002-11-16 12:07:00) [17]

дареному коню в зубы не смотрят :)

дорогие, етот примерчик вам на растерзание,
мне лень разбиратся.


bak   (2002-11-16 11:28:00) [18]

>chernoruk

я попробовал так
if ExpandEnvironmentStrings("%ComSpec% /K", lpCommandLine,
SizeOf(lpCommandLine) - 1) > 0 then

пишет больше, но все равно глючит.
не понимает русских букв, и не знаю, как выйти по cd выше, чем на 1 папку


chernoruk   (2002-11-15 22:38:00) [19]

что-то она возвращает резултат не полностью-щас разберусь, почему...


chernoruk   (2002-11-15 20:44:00) [20]

спасибо, сейчас попробую...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо