Не выполняются параметры ShellExecute (Windows 7 x64) Листинг: Code: procedure TForm1.btnStartClick(Sender: TObject); var s:string; begin ShellExecute(handle, nil,'cmd.exe','ping www.google.com','', SW_SHOWNORMAL); end; По исполнении процедуры открывается окно cmd.exe но параметры не выполняются, а просто мигает курсор. Так же пробовал создавать ярлык CMD тоже с параметрами, эффект тот же. Может есть иной способ запустить CMD с параметрами? З.Ы.: CreateProcess не предлагайте - эффект тот же.
WereWolfV, PHP: ShellExecute(handle, nil, 'cmd.exe', '/c ping www.mail.ru', '', SW_SHOWNORMAL); Либо, как писал великий и могучий slesh ) Тут заменишь, на /c "ping www.google.ru"
а знаешь ли ты что ping тоже программа как cmd ? Так что попробуй сделать так : Code: ShellExecute(handle, nil, 'ping.exe', ' www.mail.ru', '', SW_SHOWNORMAL);
есть приложение, в нём form1 и form2. надо при создание form1 показать form2 и чтобы form1 быдо скрыто, ну типо этого: Code: procedure TForm1.FormCreate(Sender: TObject); begin form1.Hide; form2.Show; end; но оно соответственно не работает, т.к. форме надо создаться, активироваться, отрисоваться и т.д.
эмм.. нужен код по перебору acc: pass acc1: pass1 acc2: pass2 и т.д (в принципе сам код есть но только он перебирает не правильно) acc: pass acc: pass1 acc: pass2 и т.д подскажите что не так
кидай это в цикл или в таймер. Code: inc(i); // увеличиваем i uin1:=strtoint(copy(listbox1.Items.Strings[i],0,pos(';',listbox1.Items.Strings[i])-1)); pas1:=copy(listbox1.Items.Strings[i],pos(';',listbox1.Items.Strings[i])+1,Length(listbox1.Items.Strings[i]));
В Delphi принимаю пакет, размер принятого пакета - 68, но когда блять отображаю буфер этого пакета, или вывожу его длину, всегда - 64. Что не так? Сниффер тоже показует размер 68 :< Code: var serverip:string; serverport:string; rec:array[0..9999] of char; info:string; sname:string; gname:string; mname:string; size:integer; i:integer; begin if InputQuery('Enter server adress','Enter server ip and port',serverip) then begin serverport:=copy(serverip,pos(':',serverip)+1,5); delete(serverip,pos(':',serverip),6); listbox1.Items.Add(serverip+':'+serverport); serverips.Add(serverip); serverports.Add(serverport); addr.sin_port:=htons(strtoint(serverport)+123); addr.sin_addr.S_addr:=inet_addr(pansichar(ansistring(serverip))); size:=sizeof(addr); sendto(sock,buf,length(buf),0,addr,sizeof(addr)); i:=recvfrom(sock,rec,9999,0,addr,size); showmessage(inttostr(i));
я подозреваю что эти 4 байта это \r\n\r\n , recv() видит все данные и поэтому возвращает 68 Byte но а когда ты выводишь эти данные тогда эти 4 байта не видны,т.к. это пустая строка,означающяя конец комманды у протоколa HTTP.
понятно,не заметил,сервер значит основан на UDP. Может он закинет адрес сервера,могу проверить если что.
Адресс: 188.120.234.55:22003, к этому порту надо добавить 123. Чтобы принять пакет, шлешь ему "r" Вот полный пакет который приходит в hex: '45 59 45 32 04 6D 74 61 06 32 32 30 30 33 23 2E 3A 45 78 74 72 65 6D 65 20 50 75 62 6C 69 63 20 54 72 61 69 6E 69 6E 67 20 53 65 72 76 65 72 3A 2E 16 20 2E 3A 45 78 74 72 65 6D 65 20 54 72 61 69 6E 69 6E 67 3A 2E 05 4E 6F 6E 65 04 31 2E 30 00 00 00 20 ' Может из-за этих последних нулей? И да, я немного ошибся, приходит 80, а должно 84. Походу из-за нулей :|
Да из-за нулей, фукнция recv()/recvfrom() принимают все данные а вот функция для работы с полям типа char читают данные до первого ноль байта \0 или 0 ну или же 0x00.
не знаю как там на дельфи или паскаль или на чем ты пишешь но на C/C++ принимаются данные например вот так : Code: len = recv( fd, buffer, bufferlen, 0 ); if( len > 0 ) { buffer[ len ] = 0; // мной установленный ноль байт } и скажем так len = 27, так вот,я установил ноль байт с индексем 27, но если окажется еще где нибудь ноль байт с меньшим индексом то функция для работы с полям типа char остановятся у него а не у моего ноль байта. Так что, если ты и правда хочешь работать со всеми данными используя функция для работы с полями типа char то придется эти ноли тебе земенить чем нибудь другим,например знаком '$' : Code: len = recv( fd, buffer, bufferlen, 0 ); if( len > 0 ){ for( i = 0; i < len; i++ ){ if( buffer[ i ] == '\0' ){ buffer[ i ] = '$'; } } } // а после этого устанавливаем свой ноль байт в конце buffer-а buffer[ len ] = 0;
не могу понять в чем проблема, ранее все работало (отправка email): Code: var smtp : TIdSMTP; msg : TIdMessage; begin smtp := TIdSMTP.Create(nil); smtp.AuthType := satDefault; smtp.Username := '[email protected]'; smtp.Password := 'password'; smtp.Host := 'smtp.yandex.ru'; smtp.Port := 25; smtp.Connect; if smtp.Authenticate then begin msg := TIdMessage.Create(nil); msg.Subject := 'Subject'; msg.Body.Add('Mail body.'); msg.From.Text := '[email protected]'; msg.Recipients.EMailAddresses := '[email protected]'; smtp.Send(msg); smtp.Disconnect; msg.Free; end; smtp.Free; end; выдает такую ошибку: