Récupérateur de texte dans windows

Description

WM_GetTextLength , WM_GetText , LB_GetCount , LB_SetCurSel , LB_GetTextLen , LB_GetText , TVM_GetCount , TVIF_Text , TVM_GetItem , LVM_GetItemCount , LVM_GetItemText

Palette d'utilisation pour extraire du texte des fenêtres et composants affichés sous Windows.

Supporte pleinement :
- Static
- Combo
- Edit
- ListBox
- Dialog

Supporte moyennement :
- SysListView (que sur les applications Delphi)

Non encore supporté:
- SysTreeView

Au final, on gagne beaucoup de temps.

Source / Exemple :


procedure TfrTextSpy.butTransmittClick(Sender: TObject);
const Mx                 = 4095;
type  TSpyBuffer         = array[0..Mx] of char;
      PSpyBuffer         = ^TSpyBuffer;
var   Chain              : TSpyBuffer;
      LvmItem            : TLVItem;
      TvmItem            : TTVItem;
      Hwd, NCol, idx,
      subidx, LenStr     : integer;
      DonePrc            : LongBool;
begin
  LBDest.Items.Clear;
  Hwd:=StrToInt(edHwd.Text);
  NCol:=StrToInt(edNCol.Text);
  case rgType.ItemIndex of
    0: begin
         LenStr:=SendMessage(Hwd,WM_GetTextLength,0,0);
         if LenStr>0 then
           begin
             SendMessage(Hwd,WM_GetText,LenStr,Longint(@Chain));
             LBDest.Items.Add(Chain);
           end;
       end;
    1: for idx:=0 to SendMessage(Hwd,LB_GetCount,0,0)-1 do 
         begin
           if cbDefil.Checked then
             SendMessage(Hwd,LB_SetCurSel,idx,0);
           LenStr:=SendMessage(Hwd,LB_GetTextLen,idx,0);
           if LenStr>0 then
             begin
               SendMessage(Hwd,LB_GetText,idx,Longint(@Chain));
               LBDest.Items.Add(Chain);
             end;
         end;
    2: begin
         TvmItem.cchTextMax:=Mx+1;
         TvmItem.pszText:=Chain;
         for idx:=0 to SendMessage(Hwd,TVM_GetCount,0,0)-1 do
           begin
             TvmItem.Mask:=TVIF_TEXT;
             TvmItem.cChildren:=1;
             DonePrc:=LongBool(SendMessage(Hwd,TVM_GetItem,0,Longint(@TvmItem)));
             if DonePrc then
               LBDest.Items.Add(TvmItem.pszText);
           end;
       end;
    3: begin
         LvmItem.cchTextMax:=Mx+1;
         LvmItem.pszText:=Chain;
         for idx:=0 to SendMessage(Hwd,LVM_GetItemCount,0,0)-1 do
           for subidx:=0 to NCol do
             begin
               LvmItem.iSubItem:=subidx;
               LenStr:=SendMessage(Hwd,LVM_GetItemText,idx,Longint(@LvmItem));
               if LenStr>0 then
                 LBDest.Items.Add(LevelToTabs(subidx)+LvmItem.pszText);
             end;
       end;
  end;
end;

Conclusion :


Vous pouvez toujours aller voir http://altert.family.free.fr/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.