На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> считать текст из ListView [ WinAPI ] , как взять текст из листвью в другом приложении ?
    куль

    Слава богу - получить итемы ЛистВью удалось без проблем практически по аналогии, Вот теперь тема закрыта :D

    Добавлено
    Вот напоследок сорц получения итемов ЛистВью , чтобы перебрать по всем столбцам ввести надо ещё 1 цикл;

    ExpandedWrap disabled
       itmcount = ListView_GetItemCount( hWnd );
         if(itmcount>0)
         { lvinfo+=" , items = "+IntToStr( itmcount);
            for( fgh=0; fgh<itmcount; fgh++)
            {
              ZeroMemory( &lvi, sizeof(lvi) );
              lvi.mask  = LVIF_TEXT;
              lvi.pszText=(LPSTR)wtxt;
              lvi.iItem = fgh;   // номер строки
              lvi.iSubItem=1;    // номер столбца
              lvi.cchTextMax = 50;
              WriteProcessMemory( memory, wlvi, &lvi, sizeof(lvi), &byte );
              SendMessage( hWnd, LVM_GETITEM, 0, (LPARAM)wlvi );
              ReadProcessMemory( memory, wlvi, &lvi, sizeof(lvi), NULL/*&byte */);
              ReadProcessMemory( memory, wtxt, &txt, sizeof(txt), &byte );
              lvinfo+=" , "+String( txt);
            }
         }
      Чтобы тему могли спокойно юзать посторонние то приведу весь нужный по теме кусок кода

      Класс для работы с L2Walker
      ExpandedWrap disabled
        class L2Walker
        {
         public:
          HWND hWnd, hLogin, hParol;
          HWND wchat[8],   // all chats in Walker
         
             wSelChat, wWhisper, wFriend, wSayText, wSayEdit,// say bar
             pHP, pMP, pXP, pBEC, pHPtarget, pMPtarget,   // char & target status
         
             Char, wParty, wInv, wSkills,
             wBuffs, wClan, wBuddy, wScript, // Upper listviews
         
             wPlayer, wMons, wNPC, wItems, wPet, wMap, wReport;
         
          HANDLE mem;      // virtual memory;
          LPVOID hhdi, hlvi, htxt; // memory regoins;
          LV_ITEM lvi;
          HD_ITEM hdi;
         
          String nick, adres;
          int  CurChat,     // òåêóùèé ÷àò äëÿ ðàçãîâîðà
               AdmChat;     // ÷àò äëÿ îòâåòà àäìèíó
          DWORD PID;         // ID ïðîöåññà Âîëêåðà
          int  inventcount, // âåùåé â ñóìêå
               playercount; // èãðîêîâ ðÿäîì
          int  NInvent,     // íîìåð êîíòðîëà Èíâåíòàðÿ íà ôîðìå1
               NPlayers;    // íîìåð êîíòðîëà Èãðîêîâ íà ôîðìå1
          int windows;
          bool __fastcall Find( void );
          int  __fastcall GetWindows( TTreeNode *Node, HWND AHandle );
          int  __fastcall Link( void );
          void __fastcall ChangeChat( void );
          void __fastcall Report( AnsiString param );
          void __fastcall Say   ( AnsiString param );
          int  __fastcall SetChat(AnsiString param );
          void __fastcall Resay ( AnsiString param );
          void __fastcall Inform( AnsiString param );
          void __fastcall Mail  ( AnsiString param );
          void __fastcall Help  ( AnsiString param );
          void __fastcall Login ( AnsiString param );
          void __fastcall Admin ( AnsiString param );
          int  __fastcall GetList( TListView *List );
          //int  __fastcall PlrList( TListView *List );
        };


      Функции для считывания информации из его ЛистВью

      ExpandedWrap disabled
        //---------------------------------------------------------------------------
         
        bool __fastcall L2Walker::Find( void )
        {
         char wn[100];
         if((hWnd=FindWindow("Afx:00400000:0", NULL))!=0)
         {
          GetWindowThreadProcessId( hWnd, &PID );
          GetWindowText( hWnd, (LPTSTR)wn, 30 );
          if(String(wn).Pos("L2Walker 10.6.4")==1)
           {
            mem = OpenProcess( PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, true, PID );
            hhdi = VirtualAllocEx( mem, NULL, sizeof(hdi), MEM_COMMIT, PAGE_READWRITE );
            hlvi = VirtualAllocEx( mem, NULL, sizeof(lvi), MEM_COMMIT, PAGE_READWRITE );
            htxt = VirtualAllocEx( mem, NULL, 50,  MEM_COMMIT, PAGE_READWRITE );
         
            String nik = String(wn);
            nick = nik.SubString( int(nik.Pos("["))+1, nik.Pos("]")- nik.Pos("[")-1);
            if(nick=="")nick="Íåçàëîãåí";
            return true;
           }
          else
          return true;
         }
         else
         return false;
        }
        //---------------------------------------------------------------------------
         
        int  __fastcall L2Walker::Link( void )
        {
          TListItem  *ListItem;
          char classname[50], windowname[50], parentname[50], parentwindow[50];
          int colcount, itmcount, asd, fgh;
          windows = -1;
          GetWindows( NULL, bot.hWnd );
         // ShowMessage( IntToStr(windows) );
          String title ;//="fsd";
          for(int i=0; i<windows+1; i++)
          {
            SendMessage( arr[i], WM_GETTEXT, 50, (LPARAM)windowname );
            GetClassName( arr[i], classname, 50 );
            GetClassName( GetParent( arr[i] ), parentname, 50 );
            SendMessage(  GetParent( arr[i] ), WM_GETTEXT, 50, (LPARAM)parentwindow );
            String title;
         
            if(String(classname)=="SysListView32")
            {
         
                   HWND LVHD = FindWindowEx( arr[i], 0, "SysHeader32", 0 );
                   colcount = Header_GetItemCount( LVHD );
                   //lvinfo=IntToStr(colcount);
                   if(colcount>0)
                   {
                      char txt[50];
                      ZeroMemory( &hdi, sizeof(hdi) );
                      hdi.mask = HDI_TEXT|HDI_LPARAM|HDI_WIDTH;
                      hdi.pszText = (LPSTR)htxt;
                      hdi.cchTextMax = 50;
         
                      for( fgh=0; fgh<colcount; fgh++)
                      {
                        WriteProcessMemory( mem, hhdi, &hdi, sizeof(hdi), NULL );
                        SendMessage( LVHD, HDM_GETITEM, fgh, (LPARAM)hhdi );
                        ReadProcessMemory(  mem, hhdi, &hdi, sizeof(hdi), NULL );
                        ReadProcessMemory(  mem, htxt, &txt, 50, NULL );
                        title+=String( txt);
                      }
         
                   itmcount = ListView_GetItemCount( arr[i] );
                   if(itmcount>0)
                   {
                     if(title.Pos("NameCount")==1)
                     {wInv = arr[i];
                     GetList(Form1->Invent);
                     }
                   }// items exist
                  }
                 };
         
          };
          return 0;
          
        }
        //---------------------------------------------------------------------------
         
        bool __fastcall L2Walker::Find( void )
        {
         char wn[100];
         if((hWnd=FindWindow("Afx:00400000:0", NULL))!=0)
         {
          GetWindowThreadProcessId( hWnd, &PID );
          GetWindowText( hWnd, (LPTSTR)wn, 30 );
          if(String(wn).Pos("L2Walker 10.6.4")==1)
           {
            mem = OpenProcess( PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, true, PID );
            hhdi = VirtualAllocEx( mem, NULL, sizeof(hdi), MEM_COMMIT, PAGE_READWRITE );
            hlvi = VirtualAllocEx( mem, NULL, sizeof(lvi), MEM_COMMIT, PAGE_READWRITE );
            htxt = VirtualAllocEx( mem, NULL, 50,  MEM_COMMIT, PAGE_READWRITE );
         
            String nik = String(wn);
            nick = nik.SubString( int(nik.Pos("["))+1, nik.Pos("]")- nik.Pos("[")-1);
            if(nick=="")nick="Íåçàëîãåí";
            return true;
           }
          else
          //ShowMessage(String(wn)+IntToStr (String(wn).Pos("L2Walker 10.6.4"))) ;
          return true;
         }
         else
         return false;
        }
        //---------------------------------------------------------------------------
         
        int  __fastcall L2Walker::GetList( TListView *List )
        {
         
          HWND hWnd, LVHD;
          int colcount, itmcount, asd, fgh;
          TListItem *ListItem;
          char txt[50];
          //String title;
          if(List->Name=="Invent")hWnd = wInv;
         
          LVHD = FindWindowEx( hWnd, 0, "SysHeader32", 0 );
          colcount = Header_GetItemCount( LVHD );
          if(colcount>0)
          {
                   itmcount = ListView_GetItemCount( hWnd );
                   if(itmcount>0)
                   {
         
                    for( fgh=0; fgh<itmcount; fgh++)
                    {
                      ListItem = List->Items->Add();
                      for( asd=0; asd<colcount; asd++)
                      {
                        ZeroMemory( &lvi, sizeof(lvi) );
                        lvi.mask  = LVIF_TEXT;
                        lvi.pszText=(LPSTR)bot.htxt;
                        lvi.iItem = fgh;
                        lvi.iSubItem=asd;
                        lvi.cchTextMax = 50;
                        WriteProcessMemory(  mem, hlvi, &lvi, sizeof(lvi), NULL );
                        SendMessage( hWnd, LVM_GETITEM, 0, (LPARAM)hlvi );
                        ReadProcessMemory(  mem, hlvi, &lvi, sizeof(lvi), NULL );
                        ReadProcessMemory(  mem, htxt, &txt, 50, NULL );
                       // SendMessage( list, LVM_
                        if(asd==0)
                            ListItem->Caption =String( txt);
                        else
                            ListItem->SubItems->Add( String( txt));
                     }// for asd
                    }// for fgh
                   }// items exist
                  }
          return true;
        }
        //---------------------------------------------------------------------------
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:
      Страницы: (3) 1 2 [3]  все


      Рейтинг@Mail.ru
      [ Script execution time: 0,0233 ]   [ 15 queries used ]   [ Generated: 19.05.24, 15:13 GMT ]