Для работы со службами в Windows, существует утилита командной строки sc, также для управления можно использовать утилиту net. В данной стать я не буду пытаться описать все их параметры. Цель статьи - показать как со службами производить основные действия: установка, удаление, запуск, остановка.
понедельник, 14 января 2013 г.
KickNetwork: "пинаем" глючный сетевой адаптер
Появился у меня глючный китайский PCI WiFi адаптер TP-LINK 150Mbps Wireless N Adapter (PCI\VEN_168C&DEV_002D). Не то чтобы совсем глючный, с большего он работает вполне себе хорошо, но совершенно не любит p2p соединения: так и норовит перестать видеть роутер при запущенном uTorrent'e. Другими словами, мой WiFi-адаптер, то и дело пишет "соединение ограничено", хотя на других устройствах WiFi работает замечательно и роутер ни при чём. Уж не знаю почему так происходит, вот только перестановка дров ничего не дала. Однако, было замечено, что достаточно переподключиться к беспроводной сети и проблема на время исчезает. Но есть загвоздка: т.к. соединение не рвётся, выключать и включать соединение надо вручную. Чтож, займёмся нашим любимым делом, проектированием "костылей".
Функция выполнения консольной команды в Delphi (в том числе в 2009, 2010, XE)
function ExecAndWait(const FileName, Params: ShortString; const WinState: Word): boolean; export;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: ShortString;
begin
CmdLine :=Filename+ Params;
FillChar(StartInfo, SizeOf(StartInfo), #0);
with StartInfo do
begin
cb := SizeOf(StartInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WinState;
end;
Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);
if Result then
begin
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
{ Free the Handles }
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: ShortString;
begin
CmdLine :=Filename+ Params;
FillChar(StartInfo, SizeOf(StartInfo), #0);
with StartInfo do
begin
cb := SizeOf(StartInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WinState;
end;
Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);
if Result then
begin
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
{ Free the Handles }
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
Функция определения каталога Windows в Delphi
function GetWindowsDir: string;
var
p : PChar;
begin
GetMem(p, MAX_PATH);
result := '';
if GetWindowsDirectory(p, MAX_PATH) > 0 then
result := string(p);
FreeMem(p);
end;
var
p : PChar;
begin
GetMem(p, MAX_PATH);
result := '';
if GetWindowsDirectory(p, MAX_PATH) > 0 then
result := string(p);
FreeMem(p);
end;
Системные ошибки Windows. Их перехват в Delphi
В Delphi код последней системной ошибки живет в GetLastError
Перечень системный ошибок Windows, с которыми мне довелось встретится:
123 - Ошибка соединения
267 - Неверное имя папки
воскресенье, 13 января 2013 г.
Включение и отключение сетевого адаптера (интерфейса) через консоль Windows
Включить (отключить) сетевой адаптер (интерфейс) в Windows через консоль можно используя системную утилиту netsh, выглядеть команда будет следующим образом:
netsh interface set interface name="Имя сетевого интерфейса" admin=enable //включениеПросмотреть сетевые интерфейсы в системе можно командой:
netsh interface set interface name="Имя сетевого интерфейса" admin=disable //отключение
netsh interface show interfaceСледует помнить, что в случае, если имя сетевого интерфейса имеет русские символы, то, при использовании команды из bat-файла, необходимо учесть возможные проблемы с кодировкой, рассмотренные в этой статье.
Так же, не забывайте, что в Windows 7, данную команду надо выполнять от имени администратора.
Подробнее об утилите netsh можно почитать в Википедии
Ошибка XCOPY "Недопустимы путь". Использование русских символов в комманде XCOPY.
Команда виндовой консоли (cmd) XCOPY гораздо лучше своего досовского собрата COPY тем, что позволяет копировать всё содержимое папки с подпапками, что не заменимо при написании bat-файлов для задач резервного копирования. И, если описание этой команды найти не сложно (например, тут), то описание ошибок практически невозможно.
Обычно после написания первого скрипта мы получаем ошибку "Недопустимый путь".
Вызвана она может быть следующими причинами (в продолжении):
Обычно после написания первого скрипта мы получаем ошибку "Недопустимый путь".
Вызвана она может быть следующими причинами (в продолжении):
Подписаться на:
Сообщения (Atom)


