Текущий архив: 2007.01.14;
Скачать: CL | DM;
Вниз
RESULT от WINEXEC Найти похожие ветки
← →
Parus © (2006-12-23 11:17) [0]я из проги делаю это: WINEXEC("NET VIEW",SW_HIDE);
А как узнать что там было выведенно.
← →
Gero © (2006-12-23 11:39) [1]> [0] Parus © (23.12.06 11:17)
> я из проги делаю это
Не делай это. Эта функция давно устарела.
← →
_RusLAN © (2006-12-23 11:51) [2]ИМХО самий простой вариант єто перенапрвить вывод в файл.
и потом его читать.
Перенаправить вывод в файл: net view>result.txt
Есть другой - использовать "каналы" (Pipes), про него в инете много написано.
← →
DrPass © (2006-12-23 12:02) [3]
> я из проги делаю это: WINEXEC("NET VIEW",SW_HIDE);
Сделай CreateProcess вместо WinExec + пайп на поток вывода
← →
BiN © (2006-12-23 12:26) [4]Самостоятельная реализация функциональности NET VIEW не сложнее любого выше перечисленного метода.
← →
Parus © (2006-12-23 13:50) [5]
> BiN
NET VIEW как ПРИмЕР
← →
BiN © (2006-12-23 16:28) [6]
> Parus © (23.12.06 13:50) [5]
>
> NET VIEW как ПРИмЕРNET VIEW - эта команда выводит список доступных для совместного использования
ресурсов данного компьютера. Kогда используется без параметров, отображает
список компьютеров текущего домена или сети. (c)
NetServerEnum
The NetServerEnum function lists all servers of the specified type that are visible in a domain. For example, an application can call NetServerEnum to list all domain controllers only or all SQL servers only.
You can combine bit masks to list several types. For example, a value of 0x00000003 combines the bit masks for SV_TYPE_WORKSTATION (0x00000001) and SV_TYPE_SERVER (0x00000002)
(c) msdn
← →
Parus © (2006-12-23 17:34) [7]
> Перенаправить вывод в файл: net view>result.txt
Пасиб
ЗЫ ответ от человека с таким же именем :)
← →
ors_archangel © (2006-12-23 17:39) [8]Пример с пайпом:
function ExecConsoleApp(commandLine: string): cardinal;
var
sa: TSECURITYATTRIBUTES;
si: TSTARTUPINFO;
pi: TPROCESSINFORMATION;
hPipeOutputRead: THANDLE;
hPipeOutputWrite: THANDLE;
hPipeErrorsRead: THANDLE;
hPipeErrorsWrite: THANDLE;
res, bTest: Boolean;
env: array[0..100] of Char;
szBuffer: array[0..256] of Char;
dwNumberOfBytesRead: DWORD;
//Stream: TMemoryStream;
begin
sa.nLength := sizeof(sa);
sa.bInheritHandle := true;
sa.lpSecurityDescriptor := nil;
CreatePipe(hPipeOutputRead, hPipeOutputWrite, @sa, 0);
CreatePipe(hPipeErrorsRead, hPipeErrorsWrite, @sa, 0);
ZeroMemory(@env, SizeOf(env));
ZeroMemory(@si, SizeOf(si));
ZeroMemory(@pi, SizeOf(pi));
si.cb := SizeOf(si);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.wShowWindow := SW_HIDE;
si.hStdInput := 0;
si.hStdOutput := hPipeOutputWrite;
si.hStdError := hPipeErrorsWrite;
(* Remember that if you want to execute an app with no parameters you nil the
second parameter and use the first, you can also leave it as is with no
problems. *)
try
res := CreateProcess(nil, pchar(CommandLine), nil, nil, true,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, @env, nil, si, pi);
except
res := false;
end;
// Procedure will exit if CreateProcess fail
if not res then
begin
CloseHandle(hPipeOutputRead);
CloseHandle(hPipeOutputWrite);
CloseHandle(hPipeErrorsRead);
CloseHandle(hPipeErrorsWrite);
exit;
end;
CloseHandle(hPipeOutputWrite);
CloseHandle(hPipeErrorsWrite);
repeat
bTest := ReadFile(hPipeOutputRead, szBuffer, 1, dwNumberOfBytesRead,
nil);
if dwNumberOfBytesRead <> 0 then Output(szBuffer[0]);
until bTest = false;//WaitForSingleObject(pi.hProcess, 111) <> WAIT_TIMEOUT;
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, result);
//result := 0;
CloseHandle(pi.hProcess);
CloseHandle(hPipeOutputRead);
CloseHandle(hPipeErrorsRead);
end;
Страницы: 1 вся ветка
Текущий архив: 2007.01.14;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.011 c