![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
А это все ради того, что бы командой ftp воспользоваться, если да, то помойму овчинка выделки не стоит, т.к. лично я бы заблокировал напрочь программу, которая вдруг полезла в Инет не сама а вызывая ftp. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Ну в конце концов, делаешь так:
Например, у меня VirtualShellTools проинсталирован в каталог P:\$Lib\VirtualShellTools\. Соответственно, в каталоге P:\$Lib\VirtualShellTools\Source\ лежат все его исходники. Тогда, добавляешь путь P:\$Lib\VirtualShellTools\Source\ в список Tools -> Environment Options... -> Library -> Library path Теперь, можешь спокойно компилировать свою прогу, все недостающие .dcu для VirtualShellTools будут скомпилированны автоматически. На всякий случай, в проекте выключи компиляцию с пакетами (Project Options -> Packages -> Build with runtime packages). -------------------- Все знать невозможно, но хочется |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
2Alex: нет не только для фтп а еще и для пинга копирования и пр. файлов просмотр прав и задач, управления процессами и учетными записями, навигации и управления дисками и пр. и пр.
если вы все это хотите писать с помощью shellapi да потом еще и отлаживать пожалуйста а я все-таки попытаюсь вмонтировать в свое приложение cmd.exe.
2Петрович: завтра попробую - седня работы много, о результатах обязательно сообщу. |
|||
|
||||
| Петрович |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Дело в том, что ты наверное всетаки хочешь знать результаты выполнения перечисленных тобой команд. В противном случае, зачем тебе перехватывать их вывод. Так вот, анализировать их выход будет не проще чем написать большинство из них. А может даже и сложнее, поскольку формат вывода не специфицирован, и может отличаться от версии к версии. Да и когда пишешь самостоятельно, получается гораздо гибче. Например, реализация ping'а на API получится короче чем код аналза результатов работы ping.exe. Да и гибчее - можно будет легко менять размер пакетов, число попыток и пр.
Смею тебя заверить, что из командной строки тебе будут доступны далеко не все возможности имеющиеся в API. Хотя, конечно. Можно писать программы и на языке cmd.exe. Только они убогие будут получаться -------------------- Все знать невозможно, но хочется |
||||
|
|||||
| Alex |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Петорович все хорошо расписал, а я от себя еще хочу добавить, что ты потратил уже две недели на поиск кода, который будет не очень то и хорошим решением (я бы сказал ужасным) и пока ничего не добился толком. За это время уже можно было написать все, что ты хочешь использовать и еще больше при этом код был бы универсальным и гибким.
Честно меня твоя позиция просто убивает, зачем писать программу используя сомнительные методы, когда есть куча библиотек, в которых все функции, о которых ты говоришь присутствуют, они отлажены и проверены. PS: Если ты все же полезешь в консоли то знайте, что даже cmd.exe под разными ОС нужно передавать параметры немного по-разному, не факт, что такой бедой не страдают и другие консольные приложения компании MS. Ты просто замучаешься отлаживать свое приложение. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
||||
|
|||||
| Bes |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
2Петрович, 2Alex: Блин ничего вы не понимаете.
1)
нет, мне не надо именно программно разбирать вывод консоли - я буду передавать содержимое мемо-поля на мою машину и читать глазами, другой вывод? ну и фиг с ним, в таком случае выходными данными будет ошибка после которой можно написать чтото вроде /? и получить данные по версии цмд-шки и пр. 2)
а мне не нужны все возможности апи, мне нужен доступ к инструменту, предназначенному для управления машиной. 3)
Это будет просто отличным решением!!! Я понял, Вы все думаете что я буду писать процедуры для парсинга выходных данных.... (отсюда это становится понятным)
Нафиг? Я просто буду их читать. Это как раз вы мне предлагаете руками писать удобный для чтения вывод данных который уже реализован в цмд.ехе И кстати, я это все уже написал руками, но вопрос в том. как прикрутить цмдшную консоль. Короче, щас напишу подробную депешу еще раз со всеми секретами чтобы было понятно |
||||||||
|
|||||||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Задача:
Получить управление над другим компом не мешая при этом пользователю (как в случае с РАдмином) можете называть это трояном, на самом деле программа нужна для тог чтобы оперативно работать с большим парком машин меняя права, доступ к ресурсам и т.п. не отвлекая пользователя от работы, во-первых для того того чтобы он не знал, что там меняется (зачем, правда?) во-вторых пользователь постоянно работает с большим числов клиентов и отвлекать его просто нельзя Очевидно, что нужно написать клиентскую часть программы и серверную, соединив их для простоты Фастнетовскими компонентами типа НММсгСерв и т.п. теперь а) что предлагаю я: клиент имеет встроенную смдшную консоль и получает некоторое сообщение. Потом он тупо кидает его в консоль, получает ответ и тупо передает его на серверную часть. Я на серверной части получаю сообщение и выгружаю его в мемо поле - вижу результат и в зависимости от того какой он, даю соответствующую команду. результат - как будто я работаю с смдшкой на другой машине. б) что предлагаете вы: приделать кнопку на серверной части с надписью ПИНГ при нажатии на нее выпадет ИнпутБокс в который я забью ИПшник после чего сформируется по опредеренным правилам строка команды с параметрами и будет передана на клиента. клиент в свою очередь разбирает эту строку потом из "отлаженной" библиотеки вызывает процедуру пинг , получает по ней результаты, опять же формирует из них определенную строку и отправляет на серверную часть, серверная часть разбирает строку "помня" что она отправляла именно пинг а не другую комманду и высвечивает мне в месаджбоксе "ОК"! Уф, Круто! теперь нам нужно просмотреть содержимое папки на чужой машине. АААААаааааааааааааааааа!!!!!!!!!!!!!!!!!1 мы лепим еще одну кнопку опять вводим путь формируем отправляем клиент проверяет есть ли такая папка если нет отправляет ошибку, ВНИМАНИЕ сервер не должен попутать ошибку с результатом. если же папка есть то прочитать результат полученный из "отлаженной" библиотеки сформировать отчет, указать что это именно комманда дир и отправить, теперь сервер................ Ну и как вам? Ну и какой вариант проще и надежнее? Ой, забыл, нужно еще файл запускать уметь. ААААААААААААААААААААААААААААААААААААААААААААААААААААА |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Хм... видно народ не ждал такого поворота..
Добавлено @ 15:30 ну извините, я вам говорил что мне нужна консоль, а вы меня пытались убедить что это неправильно, не думал что так подробно придется изложить проблему чтобы убедить вас. С уважением. |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Да нет, здесь народ трудно чем-то удивить. Просто не всегда есть возможность почитать и ответить. Что-ж, для данной задачи может это и правильный подход. Но, сразу предупрежу, что далеко не все команды которые работают в консоли смогут работать в такой среде. Не все что выводится в консольное окно, выводится через потоки в/в. Например, сам-же cmd, читает ввод не из потока ввода. Да и пресловутый ftp.exe кажется тоже. Дело в том, что они интерактивные, и при этом обеспечивают простейшую функциональность при вводе команд - редактирование коммандной строки. Т.е. им необходимо обрабатывать нажатие клавиш, в том числе управляющих (Left, Right, Top, Bottom, PgUp, и т.п.) Такое не допускается технологией Input/Output потоков. Поэтому, мой тебе совет. Посмотри повнимательнее на API консольных окон. Мне кажется что это тебе больше подойдет. Там, как мне кажется, у тебя будет полный контроль над консольным приложением. А вообще, тебе нужен просто терминальный сервер. Кажется это так называется. -------------------- Все знать невозможно, но хочется |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Я сейчас проверил - что cmd, что ftp в большинстве случаев читают команды из входных потоков. cmd.exe всегда выводит на выходной поток... А вот ftp.exe - не всегда в выходной поток.. Поэтому управлять ftp можно, но правда немного вслепую
-------------------- С уважением, г-н Посол. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
А нет! Всё-таки на help ftp.exe реагирует и выводит команды... но как-то странно... Вобщем, прикрепляю проект...
При запуске сразу жмите кнопку "послать команду" - внизу увидите, что ftp.exe выведет список команд. Теперь интересно, что если попробовать набирать каждые из выполненных команд по-отдельности, т.е. ftp, а потом help - то списка команд не увидим... можно после этого даже набрать какую-либо фигню, он напишет внизу "invalid command"... Список команд выведется лишь после того, как введем "quit" ... Можно несколько раз сподряд набрать help, и после quit'а они все выведутся... Присоединённый файл ( Кол-во скачиваний: 5 )
cmd.ZIP 9,58 Kb-------------------- С уважением, г-н Посол. |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
На самом деле, некоторые программы в состоянии определить что их запустили с переназначением в/в и в этом случае буфиризируют вывод. Соответственно, пока буфер не будет заполнен полностью, или программа не завершится, реально в поток ничего не попадет. Т.е. интерактивно работать будет крайне затруднительно. Особенно учитывая что грамотные проги делают вывод не только в stdOut, но и в stdErr. При буферизации, получается забавная каша. Скажу более, сталкивался с тем, что какая-то из Win9x систем всегда буферизирует переназначенный вывод, даже если он переназначен на pipe!. -------------------- Все знать невозможно, но хочется |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Ааа... понятно
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Короче, хрен с маслом? Я правильно понял?
|
|||
|
||||
| Петрович |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Блин. Я же уже писал:
-------------------- Все знать невозможно, но хочется |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |