Показаны сообщения с ярлыком Delphi. Показать все сообщения
Показаны сообщения с ярлыком Delphi. Показать все сообщения
четверг, 10 сентября 2015 г.
среда, 23 октября 2013 г.
Delphi. Поиск самого длинного слова в строке
var s, max:string; list:TStrings; i:Integer; begin list :=TStringList.Create; s :=edt1.Text; ExtractStrings([';', ',','.','?','!',':',' '], [' '], PChar(s), list); // с учетом возможных разделителей max :=list[0]; //пусть первое слово имеет максимальную длину for i := 0 to list.Count-1 do begin if Length(list[i])>Length(max) then //сравниваем последующие слова с ним max :=list[i]; end; ShowMessage('Самое длинное слово '+max+#10#13+'Количество букв: '+Inttostr(Length(max))); list.Free; end;
пятница, 12 августа 2011 г.
Получить дескриптор окна. Get Handle
Копался в исходнике http://www.delphisources.ru/pages/sources/system/2009-year/get-handle.html
Всю полезную работу делает процедура ShowHwndAndClassName, а все остальное - прибамбасы.
procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
hWnd: THandle;
aName: array [0..255] of Char;
Title: string;
begin
hWnd := WindowFromPoint(CrPos);
ed5.Text := IntToStr(hWnd);
if Boolean(GetClassName(hWnd, aName, 256)) then
ed4.Text := string(aName)
else
ed4.Text := 'Class not found';
SetLength (Title, 100);
GetWindowText (hWnd, PChar (Title), 100);
ed3.Text := string(PChar(Title));
ed2.Text := IntToHex (hWnd, 8);
end;
Эта процедура вызывается в таймере.
procedure TForm1.Timer1Timer(Sender: TObject);
var
rPos: TPoint; var
Cursor: TPoint;
begin
if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos);
GetCursorPos(Cursor);
ed1.Text :=
'X= ' + IntToStr(Cursor.X) + ', Y='+ IntToStr(Cursor.Y);
end;
Сделал маленькую программку, которая выдает всю нужную инфу.
Всю полезную работу делает процедура ShowHwndAndClassName, а все остальное - прибамбасы.
procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
hWnd: THandle;
aName: array [0..255] of Char;
Title: string;
begin
hWnd := WindowFromPoint(CrPos);
ed5.Text := IntToStr(hWnd);
if Boolean(GetClassName(hWnd, aName, 256)) then
ed4.Text := string(aName)
else
ed4.Text := 'Class not found';
SetLength (Title, 100);
GetWindowText (hWnd, PChar (Title), 100);
ed3.Text := string(PChar(Title));
ed2.Text := IntToHex (hWnd, 8);
end;
Эта процедура вызывается в таймере.
procedure TForm1.Timer1Timer(Sender: TObject);
var
rPos: TPoint; var
Cursor: TPoint;
begin
if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos);
GetCursorPos(Cursor);
ed1.Text :=
'X= ' + IntToStr(Cursor.X) + ', Y='+ IntToStr(Cursor.Y);
end;
Сделал маленькую программку, которая выдает всю нужную инфу.
четверг, 11 августа 2011 г.
Получить список активных процессов, модулей в системе
Для этого используется функция CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
Она возвращает кучу всякой полезной информации.
Из нее уже можно доставать отдельно процессы (Process32First), модули (Module32First) и другое.
Кому интересно, посмотрите unit TlHelp32;
Исходники программы, которая демонстрирует использование CreateToolhelp32Snapshot
Она возвращает кучу всякой полезной информации.
Из нее уже можно доставать отдельно процессы (Process32First), модули (Module32First) и другое.
Кому интересно, посмотрите unit TlHelp32;
Исходники программы, которая демонстрирует использование CreateToolhelp32Snapshot
Сгенерировать случайный пароль.
Исходники - http://sources.ru/delphi/delphi_create_random_password.shtml
Готовая программа с исходниками - http://chizzx.wallst.ru/msk/sourcePasGen (архив 7z)
Готовая программа с исходниками - http://chizzx.wallst.ru/msk/sourcePasGen (архив 7z)
Подписаться на:
Сообщения (Atom)