![]() |
|
|
|
|
#1
|
|||
|
|||
|
Прошу откликнуться тех, кто знает программирование низкого уровня
(ассемблер, питон, перл и т.п.) Не могу найти в процедуре API которая работает с командой *defrag c: -a* её результат в первоначальном виде работы функции . Ну т.е 0 или 1 к примеру. Что будет соответствовать результату анализа диска (нужна ли дефрагментация или нет) В ниже приведённом примере hPipeOutputRead заполняет buf - строковую переменную содержанием анализа диска в виде *дефрагментация этого тома не требуется* или другим. Но это не cовсем то, что нужно. Код:
procedure fffffff ();
var
securityattributes: TSecurityAttributes;
startupinfo: TStartupInfo;
processinformation: TProcessInformation;
begin
{securityattributes.lpSecurityDescriptor:=nil;
CreatePipe(hPipeOutputRead, hPipeOutputWrite, @securityattributes, 0);
ZeroMemory(@startupinfo, SizeOf(TStartupInfo));
startupinfo.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
startupinfo.hStdOutput:=hPipeOutputWrite;
CreateProcess(nil, PChar('defrag c: -a'), nil, nil, True,
CREATE_NEW_CONSOLE,
nil, nil, startupinfo, processinformation);
hProcess:=processinformation.hProcess;
readthread:=TReadThread.Create; // запуск constructor
TReadThread.Create; }
end;
constructor TReadThread.Create;
begin
inherited Create(False);
FreeOnTerminate:=False;
end;
procedure TReadThread.Execute;
begin
while not Terminated do
if ReadFile(FormMain.hPipeOutputRead, buf, Length(buf), dummy, nil) then
Synchronize(UpdateForm);
showmessage(buf );
end;В связи со скудностью знаний в этой области, прошу помочь в получении (кажется) параметра CreatePipe, который характеризует результат выполнения команды *defrag c: -a*. Хотя возможно я совсем не с того края подхожу. Буду благодарен любой помощи. Код в Делфи. Последний раз редактировалось Admin, 13.04.2012 в 11:02. |
|
#2
|
|||
|
|||
|
можно найти функцию GetDosOutput, она вернёт весь текст, при помощи Pos например решить, что имелось ввиду 0 или 1
|