Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Shell через Delphi (http://forum.oszone.net/showthread.php?t=29840)

fossil 05-04-2004 14:45 205996

Какая фукнция вставляет в командную строку текст введенный в edit?
Помня VB, там функция shell(), но в дельфи такого нет...

И еще....
Какая функция отключает/перезагружает комп?

[s]Исправлено: fossil, 14:45 5-04-2004[/s]

vasketsov 05-04-2004 21:26 205997

1) Нифига не понял
2) ExitWindowsEx

fossil 06-04-2004 13:13 205998

1) Мне нужно чтобы то что я написал в edit передавалось в командную строку, как это сделать?
Например если я ввел ipconfig то открывалась командная строка и выводила все что нужно.
2) Когда вставляю
ExitWindowsEx(EWX_FORCE + EWX_REBOOT, 0);
ничего не происходит

[s]Исправлено: fossil, 13:35 6-04-2004[/s]

UZER 06-04-2004 16:01 205999

fossil
1)WinExec('explorer cmd /C ipconfig',SW_SHOW);
думаю так...
2)Я так понимаю - система 2000/XP. Нужно дать право на выключение...
Код:

var
  hToken: THandle;
  tkp: TTokenPrivileges;
  ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege',tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1; // one privelege to set
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength)then

ExitWindowsEx(EWX_POWEROFF, 0)


Vich 06-04-2004 16:34 206000

ShellExecute попробуй из winapi

fossil 06-04-2004 17:36 206001

WinExec('cmd /C ipconfig',SW_SHOW);
Мда работает, и комп тоже выключается...
Но мне нужно чтобы выполнялась команда вводимая в edit, а здесь просто команда выполняется..
WinExec('cmd /C '+peremennaya,SW_SHOW);
не работает...

[s]Исправлено: fossil, 17:53 6-04-2004[/s]

fossil 07-04-2004 07:26 206002

Что-то я не догнал как через ShellExecute. Напиши примерный код.

UZER 07-04-2004 13:01 206003

fossil
Извини, не заметил, где ты это написал
Цитата:

+peremennaya
и сейчас этого не вижу в постах, отправленных тобой ранее...
Чтобы сделать то, что тебе нужно, создаешь переменную
Код:

var
A: string;
begin
A := 'cmd /C '+Edit1.Text

А дальше
Код:

WinExec(pchar(A),SW_SHOW);

fossil 07-04-2004 13:25 206004

ОК! Все работает, спасибо :)

UZER 07-04-2004 15:34 206005

fossil
Стараюсь ;)

fossil 07-04-2004 17:46 206006

Я делаю программу чтобы посылала сообщения по сети n-ое количество раз (net send). Спаибо тебе, отправляет :)
Еще один вопросик. Можно ли как-то изменить имя отправителя в этом сообщении? Я видел подобную программу (правда реализованную в С++) и там была такая строчка.
Если можно, то как?


Время: 02:52.

Время: 02:52.
© OSzone.net 2001-