1)При отправки сообщения выдает ошибку "Socket error 10060 Connection Timed out". Уже 3ий день ищу как исправить, но не могу найти. Перерыл множество форумов. Много где встречается ошибка, но как исправить не написано.
Вот код отправки:
Код:
idsmtp2.AuthenticationType:=atLogin;
idsmtp2.Host:='SMTP.yandex.ru';
idsmtp2.Port:=25;
idsmtp2.Username:='***';
idsmtp2.Password:='***';
IdMessage1.Body.Text:='Тест ';
IdMessage1.From.Text:='7919044****@sms.mts.ru';
IdMessage1.Recipients.EMailAddresses:='flop88@yandex.ru';
IdMessage1.Subject:='тест';
idsmtp2.Connect();
if idsmtp2.Connected=True then
idsmtp2.send(IdMessage1);
idsmtp2.Disconnect;
2) Хочется сделать чтобы при нажатии на кнопку закрывались все процессы, которые записаны в файле(по названию процесса), не получается. Если в файл написать одно название процесса - закрывает, если больше одного - нет.
вот функция
Код:
function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
так добавляем новое название процесса в файл, процессы которого должны закрываться
Код:
procedure TForm1.btn6Click(Sender: TObject);
begin
if MessageDlg('Добавить запись?', mtInformation, [mbOk,mbCancel],0) = mrOK
then
begin
FileSetReadOnly(system32+'\drivers\etc\progs', false);
lst2.Items.Add(edt2.text);
lst2.Items.SaveToFile(system32+'\drivers\etc\progs');
FileSetAttr(system32+'\drivers\etc\hosts', faReadOnly);
edt2.Clear;
end;
end;
и сама кнопка
Код:
procedure TForm1.btn7Click(Sender: TObject);
begin
KillTask(lst2.Items.CommaText);
end;
<---- закрываем те процессы, название которых находится в lst2