Просмотр полной версии : cmd - Delphi
Подскажите пожалуйста!
Как написать правельно такое
чтоб дельфи исполняло фукцию cmd?
допустим при открытии delphi идет ping на узел?
ping -n 350 -l 10000 00.000.00.00
Извеняюсь, я очень нубский новичег)
Можно записать нужные тебе команды в файл с расширением *.cmd, а потом использовать функцию ShellExecute. Хотя это не лучший вариант, но рабочий :)
Вот пример, кинь на форму один button.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
cmd: TStringList;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
cmd.Add('ping -n 350 -l 10000 00.000.00.00');
cmd.Add('pause');
cmd.SaveToFile('delphicmd.cmd');
ShellExecute(Form1.Handle, nil, 'delphicmd.cmd', nil, nil, SW_RESTORE);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cmd:=TStringList.Create;
end;
end.
хм..) не это сильно палевно)))
Я хочу своему другу кинуть в автозагрузку прогу которая бы пинговала один сайтичег))) по этому вид консольда излишний)
хм..) не это сильно палевно)))
Я хочу своему другу кинуть в автозагрузку прогу которая бы пинговала один сайтичег))) по этому вид консольда излишний)
Если не ошибаюсь то (если ошибся то полюбому связанно с winexec)
winexec('cmd /c ping -n 350 -l 10000 00.000.00.00', SW_HIDE);
С автозагрузкой сам разберешся, не сложно будет (сам погуглишь на эту тему)
Hiro Protagonist
17.09.2009, 01:19
CreateProcess/Pipe - наиболее гибкий вариант.
WinExec/ShellExecute - бяки
wolmer, спасибо большое) я проверел с другом, его файрвол в бешенстве канает на ура))
Всем кто помогал и пытался помочь +++++ ))
)
Крайне извеняюсь за наглость) Но хотел бы ещё узнать)
На форме создать Edit1 и кнопку, и в Edit1 вписывать IP и кнопкой начать пинговать, как правельно осуществить, подскажите пожалуйста)?
winexec('cmd /c ping -n 350 -l 10000 00.000.00.00', SW_HIDE);" - эта функция действительно работает))) Но в место IP то что вверху пишится 00.000.00.00 должно вводимое в поле Edit1 IP)) Блин трудно объяснить) но думаю меня понять можно)
Хотел бы воспользоваться ситуацией и задать ещё один вопрос, если сайт какойто слабенький типо на движке мойвеб пинговать с разных компов, что с сайтом будет?)) и какой его конечный результат?
Maxxxtri23
17.09.2009, 14:06
Результат будет 0. Если же конечно в качестве сервера не используется P1 166mhz
winexec('cmd /c ping -n 350 -l 10000 00.000.00.00', SW_HIDE); - эта функция действительно работает))) Но в место IP то что вверху пишится 00.000.00.00 должно вводимое в поле Edit1 IP)) Блин трудно объяснить) но думаю меня понять можно)
winexec('cmd /c ping -n 350 -l 10000 '+edit1.text, SW_SHOW);
winexec('cmd /c ping -n 350 -l 10000 '+edit1.text, SW_SHOW);
Не компилит!(
ты помойму забыл закрыть кавычку как бы! после +edit1.text ) я закрыл серовно не компилит, не так не так!
Вот что пишит как ошибку в твоем варианте
" [Error] Unit1.pas(31): Incompatible types: 'String' and 'PAnsiChar' "
Если так то
winexec('cmd /c ping -n 350 -l 10000 '+edit1.text', SW_SHOW);
такая ошибка
[Error] Unit1.pas(31): Unterminated string
хакеры =(
winexec('ping -n 350 -l 10000 yandex.ru', SW_SHOW);
нафига вообще cmd???
Не компилит!(
ты помойму забыл закрыть кавычку как бы! после +edit1.text ) я закрыл серовно не компилит, не так не так!
Вот что пишит как ошибку в твоем варианте
" [Error] Unit1.pas(31): Incompatible types: 'String' and 'PAnsiChar' "
Если так то
winexec('cmd /c ping -n 350 -l 10000 '+edit1.text', SW_SHOW);
такая ошибка
[Error] Unit1.pas(31): Unterminated string
Вот так надо
winexec('ping -n 350 -l 10000 '+pchar(edit1.text), SW_SHOW);
Неа, не так.
Вот так!
winexec(PChar('ping -n 350 -l 10000 ' + edit1.text), SW_SHOW);
Только что пробовал, работает.
А почему бы тебе не использовать winsock? А фаерволы отключать програмно? Вполне рабочий вариант. Если нужны какието советы и помощь стучи в асю 194826нулёк
Да действительно работает))) Душевное спасибо Sams и всем людям что помогают новичкам)
Неа, не так.
Вот так!
winexec(PChar('ping -n 350 -l 10000 ' + edit1.text), SW_SHOW);
Только что пробовал, работает.
Дозрел ещё один вопросичег)
Если создать на форме ещё два Edit и расположить так чтоб это было 350 количество пакетов и вписываемым в Edit2, и соответственно количество байт в Edit3 =)
Как осуществить?
Логически если подумать то както так чтоли
winexec(PChar('ping -n +edit2.text -l +edit3.text ' + edit1.text), SW_SHOW);
Но чтото не так! Оно компилирует но толку 0!
И ещё вопрос...
Вот если использовать этот код
"winexec(PChar('ping -n 350 -l 10000 ' + edit1.text), SW_SHOW);"
При нажатии на кнопку откроется cmd и будет писатся о обмене пакетов, а как это можно ликвидировать?
Дозрел ещё один вопросичег)
Если создать на форме ещё два Edit и расположить так чтоб это было 350 количество пакетов и вписываемым в Edit2, и соответственно количество байт в Edit3 =)
Как осуществить?
Логически если подумать то както так чтоли
winexec(PChar('ping -n +edit2.text -l +edit3.text ' + edit1.text), SW_SHOW);
Но чтото не так! Оно компилирует но толку 0!
И ещё вопрос...
Вот если использовать этот код
"winexec(PChar('ping -n 350 -l 10000 ' + edit1.text), SW_SHOW);"
При нажатии на кнопку откроется cmd и будет писатся о обмене пакетов, а как это можно ликвидировать?
http://www.google.ru/search?hl=ru&client=opera&rls=en&hs=3H6&newwindow=1&q=Скачать учебник по делфи&lr=&aq=f&oq=
winexec(PChar('ping -n '+edit2.text+' -l '+edit3.text+' '+edit1.text), SW_SHOW);
)))СПасибо большое wolmer =)
Пока меня за наглость не забанели воспользуюсь случаем и спрошу ещё коечто по этой теме)
Как сделать так что при нажатии на кнопку врубалось это (это текст батника), но нужно чтоб при нажтии кнопки был тот же эффект что и если я открыл бы БАТник), только не нужно говорить типо укажи путь к батнику)
@echo off
color 071
set check="w:\usr\local\mysql\bin\mysql.exe"
set mysqlPath="w:\usr\local\mysql\bin\mysql"
set gsuser=admin
set gspass=la2offline
set gsdb=l2jdb
set gshost=127.0.0.1
if NOT EXIST %check% goto error
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < del.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\accounts.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\access_levels.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\account_data.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\admin_command_access_rights.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\auction.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\auction_bid.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\auction_watch.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\augmentations.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\boxaccess.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\castle.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\castle_manor_procure.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\castle_manor_production.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\char_templates.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_friends.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_hennas.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_macroses.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_quests.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_recipebook.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_recommends.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_shortcuts.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_skills.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_skills_save.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\character_subclasses.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\characters.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\clan_data.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\clan_privs.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\clan_skills.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\clan_subpledges.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\clan_wars.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\clanhall.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\clanhall_functions.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\class_list.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\cursed_weapons.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\fortsiege_clans.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\forums.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\heroes.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\items.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\olympiad_nobles.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\pets.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\posts.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\seven_signs.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\seven_signs_festival.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\seven_signs_status.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\siege_clans.sql
%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < server\sql\topic.sql
echo.
echo.
echo ############################
echo # #
echo # Installation complete: #
echo # #
echo ############################
echo.
pause
exit
:error
echo.
echo.
echo ##################################
echo. # #
echo # Yo need run "DataBase & Site" #
echo. # #
echo ##################################
echo.
pause
exit
только не нужно говорить типо укажи путь к батнику)
А как еще? Это самый выгодный и простой способ, или же можно положить батник вместе с программой и потом из программы запустить батник (он же у нас будет находится вместе с программой)(могу написать такой код как я описал если хочешь)
НУ сейчас постараюсь обьяснить поставленую себе задачу!
Хочу сделать чтоб через программу можно было изменять "число" в таблицах БД! В конкретной таблице!
Решил сделать сразу запрос sql, но потом подумал также не сделаешь чтоб "приложение дельфи" изменяло конкретный параметр в .sql, и за этим инъектировало в БД... Как мне показалось самый оптимальный вариант, это сделать bat'ник в проге как бы, в котором остается лишь вписать в edit "число" и подтвердить кнопкой... И запросом таким в базе данных конкретный парамерт был изменен!
SQL запрос на повышение нужным мне числе выглядит так
UPDATE `accounts` SET `access_level`='127' WHERE (`login`='logan22')
Можешь посоветовать чтото, чтоб в проге в Edit можно было на выбор ставить числа, в этом запросе нужное число 127...
Кстати понадобится ещё edit2 для вводи логина, так как в таблице ID логинов разные, а определить access_level нужно одному!
Вот прикреплю скрин
http://thumbnails19.imagebam.com/4921/9c82f349205030.gif (http://www.imagebam.com/image/9c82f349205030)
мда вот извращенец... через прогу юзать консольный клиент mysql ) вообщето с mysql сервером идут либы и хеадеры, заюзав которые ты сможешь использовать функции для работы с бд...
но если ты хочешь извратится, заюзай пайп :)
Изучай )))
Q. Как использовать базу данных MySQL в своей программе? (под Windows) (http://www.mysql.ru/faq/)
Win32 API. Урок 21. Пайп (http://wasm.ru/article.php?article=1001021)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot