Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.172.243] |
|
Страницы: (3) 1 2 [3] все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
куль
Слава богу - получить итемы ЛистВью удалось без проблем практически по аналогии, Вот теперь тема закрыта Добавлено Вот напоследок сорц получения итемов ЛистВью , чтобы перебрать по всем столбцам ввести надо ещё 1 цикл; 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); } } |
Сообщ.
#32
,
|
|
|
Чтобы тему могли спокойно юзать посторонние то приведу весь нужный по теме кусок кода
Класс для работы с L2Walker 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 ); }; Функции для считывания информации из его ЛистВью //--------------------------------------------------------------------------- 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; } //--------------------------------------------------------------------------- |