Форум: "Основная";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
ВнизКомандная строка Найти похожие ветки
← →
Oitxr © (2004-12-10 04:45) [0]Например, печатаю в командной строке команду «dir d:\». А как выполнить это с помощью Delphi? Как открыть к.строку понятно, а вот как выполнить в ней команду?
← →
Рамиль © (2004-12-10 08:57) [1]набери в командной строке
cmd /?
← →
megabyte-ceercop © (2004-12-10 09:29) [2]Нафига. Любую команду команденой строки (или альтернативную) можно выполнить без вызова командной строки.
← →
Oitxr © (2004-12-10 09:32) [3]Как это можно сделать?
← →
Александр Иванов © (2004-12-10 09:35) [4]А что тебе нужно конкретно?
Список файлов в директории, тогда - FindFirst, FindNext.
Вызов cmd, тогда CreateProcess.
← →
Oitxr © (2004-12-10 09:42) [5]Хочу написать триальную прогу и хранить данные о количестве запусков в альтернативном файловом потоке.
А с потоком умею работать только с помощью консоли.
← →
megabyte-ceercop © (2004-12-10 09:49) [6]Если нужна именно команда d:\ то делай:
ShellExecute(Form1.Handle,"open","d:\",NULL,"d:\",SW_SHOW);
описание см в хелпе.
← →
Александр Иванов © (2004-12-10 10:04) [7]megabyte-ceercop © (10.12.04 09:49) [6]
Точнее:
ShellExecute(Form1.Handle,"open","d:\","","d:\",SW_SHOW);
Oitxr © (10.12.04 09:42) [5]
Насколько я понял вам нужно при каждом запуске приложения знать номер этого запуска?
← →
Oitxr © (2004-12-10 11:50) [8]Я хочу с помощью делфи выполнить любую команду командной строки
не запуская её(cmd).Вот.Можно ли это сделать на делфи?
← →
Александр Иванов © (2004-12-10 12:12) [9]Некоторые команды жестко "зашиты" в cmd, тогда придется их переписывать :)
← →
Anatoly Podgoretsky © (2004-12-10 12:24) [10]Команды командной строки зашиты в командный интерпритатор.
← →
Leksiy © (2004-12-10 12:28) [11]это исходник функции
function RunCaptured(const _dirName, _exeName, _cmdLine: string): Boolean;
var
start: TStartupInfo;
procInfo: TProcessInformation;
tmpName: string;
tmp: Windows.THandle;
tmpSec: TSecurityAttributes;
return: Cardinal;
Begin
Result := False;
try
//Создание временного файла
tmpName := "Test.tmp";
FillChar(tmpSec, SizeOf(tmpSec), #0);
tmpSec.nLength := SizeOf(tmpSec);
tmpSec.bInheritHandle := True;
tmp := Windows.CreateFile(PChar(tmpName), Generic_Write, File_Share_Write, @tmpSec, Create_Always, File_Attribute_Normal, 0);
try
FillChar(start, SizeOf(start), #0);
start.cb := SizeOf(start);
start.hStdOutput := tmp;
start.dwFlags := StartF_UseStdHandles or StartF_UseShowWindow;
start.wShowWindow := SW_Minimize;
//Запуск программы
if CreateProcess(nil, PChar(_exeName + " " + _cmdLine), nil, nil, True, 0, nil, PChar(_dirName), start, procInfo) then
begin
SetPriorityClass(procInfo.hProcess, Idle_Priority_Class);
WaitForSingleObject(procInfo.hProcess, Infinite);
GetExitCodeProcess(procInfo.hProcess, return);
Result := (return = 0);
CloseHandle(procInfo.hThread);
CloseHandle(procInfo.hProcess);
Windows.CloseHandle(tmp);
Windows.DeleteFile(PChar(tmpName));
end
else
begin
Application.MessageBox(PChar(SysErrorMessage(GetLastError())), "RunCaptured Error", MB_OK);
end;
except
Windows.CloseHandle(tmp);
Windows.DeleteFile(PChar(tmpName));
raise;
end;
finally
end;
End;
ну и соответственно пример использования :)
RunCaptured("в какой директории", "cmd.exe", "/c команда");
← →
Leksiy © (2004-12-10 12:29) [12]да забыл сказать это для вин2000 и винхп
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c