HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #6511  
Старый 09.05.2010, 14:10
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

Репутация: 108
Отправить сообщение для =Zeus= с помощью ICQ
По умолчанию

mailbrush, вот небольной пример, если я правильно понял вопрос. Положи 2 Листбокса на форму (для наглядности).

Код:
procedure TForm1.Button1Click(Sender: TObject);
var h: HWND;
    i: byte;
begin
ListBox1.Clear;
ListBox2.Clear;
h:=FindWindow(nil, PChar(Заголовок окна));
GetSubChild(h);
for i:=0 to ListBox1.Items.Count-1 do
  EnumProc(StrToInt(ListBox1.Items[i]), 0);
end;
Следующие процедуры взяты с delphikingdom.ru и чуть переделаны.
Код:
Procedure TForm1.GetSubChild(wd:HWnD); // 
Передаем  в процедуру описатель окна 
верхнего уровня
Var Cw:HWnd;			 // 
Описываем еще один описатель
Begin
// Очищать список в процедуре нельзя !!!
If WD=0 then Exit;	  	      // Если 
родительское окно не определено то уходим
Cw := FindWindowEx(Wd, 0, nil, nil); // Находим 
первый элемент произвольного класса
 while (Cw <> 0) do		     // Есть еще 
что искать ?
    begin
       ListBox1.Items.Add(IntToStr(Cw)); 	        // 
Добавим описатель в виде текста в список
       Application.ProcessMessages;                        
 // Дадим поработать другим
       GetSubChild(Cw);			
         //Вызываем себя, но родительское 
окно уже Cw
       Cw := FindWindowEx(Wd, Cw, nil, nil);       // 
Ищем следующие дочернее окно
     End;
End;

function TForm1.EnumProc (WD: HWnd; Param: 
LongInt): Boolean; stdcall;
var Nm:Array[0..255] of Char; // буфер для 
имени
    Cs: Array[0..255] of Char; // буфер для 
класса
Begin 
GetWindowText(Wd,Nm,255); // считываем 
текст заголовка окна
GetClassName(Wd,Cs,255); // считываем 
название класса окна 
ListBox2.Items.Add(String(Nm)+'/'+String(Cs));  
//Запихнули в список название и класс
EnumProc:=True;
End;
 
Ответить с цитированием

  #6512  
Старый 09.05.2010, 15:15
alexey-m
Познающий
Регистрация: 15.07.2009
Сообщений: 71
Провел на форуме:
520157

Репутация: 35
Отправить сообщение для alexey-m с помощью ICQ
По умолчанию

Цитата:
Сообщение от Vlad&slav  
Дайте плиз рабочую функцию для отправки файла на почту, желательно конешно на винапи. С меня +
Код:
unit smtp;

interface

uses
Windows, SysUtils, Classes, WinSock2;


const
CL = #13#10;
CL2 = CL + CL;

function SendMail(Server: String; Port: Integer; const User, Pass,
From,SentTo,Tema,Body,Files: String): Boolean;

implementation

uses Encoders;

function StrToAddr(Server: String; var InAddr: TInAddr): Integer;
var
HostEnt: PHostEnt;
begin
Result:= -1;
HostEnt:= GetHostByName(PChar(Server));
FillChar(InAddr, SizeOf(InAddr), 0);
if (HostEnt = nil) then Exit;
with InAddr, HostEnt^ do
begin
S_un_b.s_b1 := (h_addr^[0]);
S_un_b.s_b2 := (h_addr^[1]);
S_un_b.s_b3 := (h_addr^[2]);
S_un_b.s_b4 := (h_addr^[3]);
end;
Result:= 0;
end;

function SendText(Sock: TSocket; S: String): Integer;
var
Buff: array[0..1023] of Char;
iSize, i: Integer;
begin
Result:=0;
S:= S + CL;
while (Length(S)>0) do
begin
iSize:= Length(S);
if ( iSize > SizeOf(Buff) ) then iSize:= SizeOf(Buff);
FillChar(Buff, SizeOf(Buff), 0);
CopyMemory(@Buff, PChar(S), iSize);
Delete(S, 1, iSize);
i:= Send(Sock, Buff, iSize, 0);
if i = SOCKET_ERROR then Break;
Result:= Result + i;
end;
end;

function RecvData(Sock: TSocket; accept: string): Boolean;
var
Buff: array[1..255] of Char;
begin
Result:= (recv(Sock, buff, SizeOf(buff), 0) = SOCKET_ERROR) or (Copy(Buff, 1, 3) = accept);
end;

procedure SendFile(SendFile: String; const Sock: TSocket);
const
Base64MaxLength = 72;
var
base64String:String;
hFile: Integer;
Buf: array[0..2] Of Byte;
Base64:TBase64;
begin
SendText(Sock, 'Content-Type: application/octet-stream; name="'+
ExtractFileName(SendFile)+'"');
SendText(Sock, 'Content-Transfer-Encoding: base64');
SendText(Sock, 'Content-Disposition: attachment; filename="'+
ExtractFileName(SendFile)+'"');
SendText(Sock, 'Content-Description: attachment');
SendText(Sock, '');
base64String:='';
hFile:= FileOpen(SendFile,fmOpenRead);
FillChar(Buf,SizeOf(Buf),#0);
Yield;
repeat
Base64.ByteCount:= FileRead(hFile,Buf,SizeOf(Buf));
Move(Buf,Base64.ByteArr,SizeOf(Buf));
base64String:= base64String + CodeBase64(Base64);
if Length(base64String) = Base64MaxLength then
begin
SendText(Sock,base64String);
base64String:= '';
end;
until Base64.ByteCount < 3;
// Отправляем последние байты
SendText(Sock,base64String);
// закрываем файл
FileClose(hFile);
SendText(Sock, '');
end;

function GenerateBoundary: String;
var
N, X, StrLen: integer;
const
StrTable: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
begin
SetLength(result, 14);
StrLen := Length(StrTable);
N := 0;
while N < 14 do begin
X:= Random(StrLen) + 1;
if (pos(StrTable[X], result) = 0) then begin
inc(N);
Result[N]:= StrTable[X];
end;
end;
end;

function GetLocalHost: string;
var
_buff : array [0..255] of char;
begin
if gethostname(_buff, 255) = 0 then
Result:= StrPas(_buff)
else
Result:= '';
end;

function SendMail(Server: String; Port: Integer; const User, Pass,
From,SentTo,Tema,Body,Files: String): Boolean;
var
Boundary: String;
wData: TWSAData;
SockSMTP: TSocket;
SockAddr: TSockAddrIn;
begin
Result:= False;
if (WSAStartup(MakeWord(2, 2), wData)<>0) then Exit;
try
//===========================================================
// Connect to SMTP server and send message\file
//============================
SockAddr.sin_family:= AF_INET;
if (StrToAddr(Server, SockAddr.sin_addr)=0) then begin
SockAddr.sin_port:= HToNS(Port);
FillChar(SockAddr.sin_zero, SizeOf(SockAddr.sin_zero), 0);
SockSMTP:= Socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if SockSMTP <> INVALID_SOCKET then begin
if (Connect(SockSMTP, @SockAddr, Sizeof(SockAddr))=0) then begin
if RecvData(SockSMTP,'220') then begin
SendText(SockSMTP,'EHLO ' + GetLocalHost); { HELO }
if RecvData(SockSMTP,'250') then begin
SendText(SockSMTP,'AUTH PLAIN ' + Base64Encode(User+#0+User+#0+Pass));
if RecvData(SockSMTP,'235') then begin
SendText(SockSMTP,'MAIL FROM:' + From);
if RecvData(SockSMTP,'250') then begin
SendText(SockSMTP,'RCPT TO:' + SentTo);
if RecvData(SockSMTP,'250') then begin
SendText(SockSMTP,'DATA');
if RecvData(SockSMTP,'354') then begin
SendText(SockSMTP,'From: ' + From);
SendText(SockSMTP,'To: ' + SentTo);
SendText(SockSMTP,'Subject: ' + Tema);
SendText(SockSMTP,'Mime-Version: 1.0');
SendText(SockSMTP,'Content-Type: multipart/mixed;');
SendText(SockSMTP,'boundary="----------' + Boundary + '"');
SendText(SockSMTP,'');
SendText(SockSMTP,'This is a multipart MIME-coded message');
SendText(SockSMTP,'');
SendText(SockSMTP,'------------' + Boundary);
SendText(SockSMTP,'Content-Type: text/plain; charset=Windows-1251');
SendText(SockSMTP,'Content-Transfer-Encoding: 8bit');
SendText(SockSMTP,'');
SendText(SockSMTP,Body);
if Files<>'' then begin
SendText(SockSMTP,'------------' + Boundary);
SendFile(Files,SockSMTP);
SendText(SockSMTP,'------------' + Boundary + '--');
SendText(SockSMTP,'');
end;

SendText(SockSMTP, CL + '.' + CL);
SendText(SockSMTP, 'QUIT');
Result:= True;
end;
end;
end;
end;
end;
end;
end;
CloseSocket(SockSMTP);
end;
end;
finally
WSACleanup;
end;
end;

end.
 
Ответить с цитированием

  #6513  
Старый 09.05.2010, 17:25
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

=Zeus=, именно это! Спасибо!
 
Ответить с цитированием

  #6514  
Старый 11.05.2010, 09:39
Syntaxys
Познающий
Регистрация: 02.09.2007
Сообщений: 67
Провел на форуме:
521298

Репутация: 20
По умолчанию

Код:
for i:=1 to x do
  for j:=i to x do
   if StrToIntDef(form1.StringGrid1.Cells[j,i],-1)>0 then
    begin
        n:=n+1;
        m[n,1]:=StrToInt(form1.StringGrid1.Cells[0,i]);
        m[n,2]:=StrToInt(form1.StringGrid1.Cells[j,0]);
        m[n,3]:=StrToIntDef(form1.StringGrid1.Cells[j,i],-1);
    end;
Объясните пожалуйста выделенную функцию. понятно, что функция StrToIntDef конвертирует строку из ячейки, но "-1" что означает?
 
Ответить с цитированием

  #6515  
Старый 11.05.2010, 10:54
h(f)ucker
Участник форума
Регистрация: 11.07.2009
Сообщений: 175
Провел на форуме:
2835808

Репутация: 185
По умолчанию

Функция StrToIntDef конвертирует строку с целым IntegerString, такую как '123', в целое Integer, возвращая Default, если преобразование не удалось.

Код:
 function StrToIntDef ( const IntegerString : string; Default : Integer ) : Integer;
По сути, просто число которое будет присвоено при ошибке конвертирования.
 
Ответить с цитированием

  #6516  
Старый 11.05.2010, 18:45
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

Репутация: 21
По умолчанию

как заставить idhttp работать через соксы?
как правельно привязать idsocksinfo к idhttp?
 
Ответить с цитированием

  #6517  
Старый 11.05.2010, 19:04
HakaR
Участник форума
Регистрация: 23.07.2009
Сообщений: 261
Провел на форуме:
4435957

Репутация: 539
По умолчанию

Парни, из-за чего происходит такая ошибка в инди?

Уже полчаса голову ломаю...раньше все нормально было.
 
Ответить с цитированием

  #6518  
Старый 11.05.2010, 21:18
TrueBit
Познающий
Регистрация: 21.11.2009
Сообщений: 77
Провел на форуме:
2482290

Репутация: 29
По умолчанию

Получаю письма с ящика с помощью idpop3.
Некоторые письма принимаются, а некоторые нет, даже ошибки не возникает
Почему так?
 
Ответить с цитированием

  #6519  
Старый 11.05.2010, 22:20
090808
Познающий
Регистрация: 15.03.2009
Сообщений: 87
Провел на форуме:
893829

Репутация: 34
Отправить сообщение для 090808 с помощью ICQ
По умолчанию

Есть лекарство на компонент Securу bridge?
 
Ответить с цитированием

  #6520  
Старый 12.05.2010, 00:05
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Цитата:
Сообщение от HakaR  
Парни, из-за чего происходит такая ошибка в инди?

Уже полчаса голову ломаю...раньше все нормально было.
Сокет закрываешь?
PHP код:
closesocket(Handle
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ