Форум: "WinAPI";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
ВнизWinExec или ShellExecute Найти похожие ветки
← →
PONTIY (2001-11-01 10:06) [0]Хотелось без лишних усилий распечатать текстовой файл (досовская кодировка) простой командой в шелле: copy c:\aa.txt \\printsrv\epson
Попытался это сделать функцией ShellExecute, так:
ShellExecute(Handle, "print","aa.txt","D:\\printsrv\epson",nil,SW_HIDE);
Ничего не получилось, он открывал notepad и распечатывал из него, в итоге страдал кодировка текста. А еще не смотря на явное указание параментра (путь дивайса), он все время печатал на принтер установленный в системе по умолчанию. Что еще можно сделать далеко не уходя от этих функций?
← →
Anatoly Podgoretsky (2001-11-01 15:41) [1]Если ты хочешь через шелл, то ты должен вызывать командный процессор и передавать ему ккак агрумент команду copy
← →
PONTIY (2001-11-02 06:19) [2]А как это сделать, можно пример в коде показать?
← →
Anatoly Podgoretsky (2001-11-02 09:44) [3]Процессор copy c:\aa.txt \\printsrv\epson
Запускаешь с помощью ShellExecute
Имя процессора узнаешь через системные переменные
← →
PONTIY (2001-11-02 18:56) [4]2 Anatoly Podgoretsky
ты меня совсем за идиота держишь? :) покажи как эту консольную команду использовать в ShellExecute. Типа такого...
ShellExecute(Handle, "open","cmd.exe","copy c:\aa.txt \\printsrv\epson
,nil,SW_HIDE);
естественно этот код неправильный, а вот как его написать правильно?
← →
Anatoly Podgoretsky (2001-11-02 23:18) [5]Ну что ты, тебе же выдана вся информация, все таки программы должен каждый сам писать.
И что у тебя не работает? Работает ли из командной строки?
Ну у меня нет ни "cmd.exe", что бы проверить список его ключей (cmd /?), ни НТ что бы испытать, ни \\printsrv\epson, но для Win9x код примерно следующий, для другой команды, которую я могу проверить:
ShellExecute(Handle,"open","C:\Command.com","/c dir C:\ /s","C:\",SW_SHOWNORMAL);
Твой код грешит следующими погрешностями:
Имя командного процессора надо получать из переменных среды,
Процессор должен запускаться с нужными тебе ключами, я здесь применил /c, Не указан каталог по умолчанию.
Это все неважно, но это погресности.
← →
PONTIY (2001-11-03 11:38) [6]Да, действительно нужно было начинать задавать параметр с ключа /C, все работает, спасибо. Вообще-то на вряд ли когда-то этот проект будет работать на Win9x операционных системах, но все же на будущее, существует ли такая переменная которая указывает на командный процессор?
← →
Anatoly Podgoretsky (2001-11-03 15:10) [7]Выполни в досовском окне команду SET, у меня это COMSPEC
То что не будет работать на других ОС еще не означает, что в конкретной ОС имя процессора будет именно cmd.exe или что прочессор будет доступен без указания пути.
А ключ /C не является обязательным, это просто влияет на поведение процессора, также как и другие ключи
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c