Récupérateur de texte dans windows

Soyez le premier à donner votre avis sur cette source.

Vue 10 986 fois - Téléchargée 884 fois

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

Ajouter un commentaire

Commentaire

Messages postés
7
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
22 novembre 2006

salut ,je suis débutant en matiére de programmation, et j'aimerai savoir comment faire pour envoyer un text vers un autre window par la fonction sendmessage...bon je sais qu'il faut maitre ceci >
sendmessage(handle,wm_settext,0,'????') mais quesqu'on met dans ???? , si on met Edit.text (par example) une erreur sera générée alors comment on fait ?

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.