




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、代碼:using System;using ;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using ;using ;using ;namespace 讀取其他軟件listview控件的內(nèi)容 public partial class Form1 : Form int hwnd; /窗口句柄 int process;/進程句柄 int pointer; private const uint LVM_FIRST = 0x1000; pri
2、vate const uint LVM_GETHEADER = LVM_FIRST + 31; private const uint LVM_GETITEMCOUNT = LVM_FIRST + 4;/獲取列表行數(shù) private const uint LVM_GETITEMTEXT = LVM_FIRST + 45;/獲取列表內(nèi)的內(nèi)容 private const uint LVM_GETITEMW = LVM_FIRST + 75; private const uint HDM_GETITEMCOUNT = 0x1200;/獲取列表列數(shù) private const uint PROCESS_
3、VM_OPERATION = 0x0008;/允許函數(shù)VirtualProtectEx使用此句柄修改進程的虛擬內(nèi)存 private const uint PROCESS_VM_READ = 0x0010;/允許函數(shù)訪問權(quán)限 private const uint PROCESS_VM_WRITE = 0x0020;/允許函數(shù)寫入權(quán)限 private const uint MEM_COMMIT = 0x1000;/為特定的頁面區(qū)域分配內(nèi)存中或磁盤的頁面文件中的物理存儲 private const uint MEM_RELEASE = 0x8000; private const uint MEM_R
4、ESERVE = 0x2000;/保留進程的虛擬地址空間,而不分配任何物理存儲 private const uint PAGE_READWRITE = 4; private int LVIF_TEXT = 0x0001; DllImport("user32.dll")/查找窗口 private static extern int FindWindow( string strClassName, /窗口類名 string strWindowName /窗口標(biāo)題 ); DllImport("user32.dll")/在窗口列表中尋找與指定條件相符的第一個子窗
5、口 private static extern int FindWindowEx( int hwndParent, / handle to parent window int hwndChildAfter, / handle to child window string className, /窗口類名 string windowName / 窗口標(biāo)題 ); DllImport("user32.DLL") private static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam); Dl
6、lImport("user32.dll")/找出某個窗口的創(chuàng)建者(線程或進程),返回創(chuàng)建者的標(biāo)志符 private static extern int GetWindowThreadProcessId(int hwnd,out int processId); DllImport("kernel32.dll")/打開一個已存在的進程對象,并返回進程的句柄 private static extern int OpenProcess(uint dwDesiredAccess, bool bInheritHandle,int processId); DllImp
7、ort("kernel32.dll")/為指定的進程分配內(nèi)存地址:成功則返回分配內(nèi)存的首地址 private static extern int VirtualAllocEx(int hProcess, IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); DllImport("kernel32.dll")/從指定內(nèi)存中讀取字節(jié)集數(shù)據(jù) private static extern bool ReadProcessMemory( int hProcess, /被讀取者的進
8、程句柄 int lpBaseAddress,/開始讀取的內(nèi)存地址 IntPtr lpBuffer, /數(shù)據(jù)存儲變量 int nSize, /要寫入多少字節(jié) ref uint vNumberOfBytesRead/讀取長度 ); DllImport("kernel32.dll")/將數(shù)據(jù)寫入內(nèi)存中 private static extern bool WriteProcessMemory( int hProcess,/由OpenProcess返回的進程句柄 int lpBaseAddress, /要寫的內(nèi)存首地址,再寫入之前,此函數(shù)將先檢查目標(biāo)地址是否可用,并能容納待寫入的數(shù)
9、據(jù) IntPtr lpBuffer, /指向要寫的數(shù)據(jù)的指針 int nSize, /要寫入的字節(jié)數(shù) ref uint vNumberOfBytesRead ); DllImport("kernel32.dll") private static extern bool CloseHandle(int handle); DllImport("kernel32.dll")/在其它進程中釋放申請的虛擬內(nèi)存空間 private static extern bool VirtualFreeEx( int hProcess,/目標(biāo)進程的句柄,該句柄必須擁有PROCE
10、SS_VM_OPERATION的權(quán)限 int lpAddress,/指向要釋放的虛擬內(nèi)存空間首地址的指針 uint dwSize, uint dwFreeType/釋放類型 ); / <summary> / LVITEM結(jié)構(gòu)體,是列表視圖控件的一個重要的數(shù)據(jù)結(jié)構(gòu) / 占空間:4(int)x7=28個byte / </summary> private struct LVITEM /結(jié)構(gòu)體 public int mask;/說明此結(jié)構(gòu)中哪些成員是有效的 public int iItem;/項目的索引值(可以視為行號)從0開始 public int iSubItem; /子項
11、的索引值(可以視為列號)從0開始 public int state;/子項的狀態(tài) public int stateMask; /狀態(tài)有效的屏蔽位 public IntPtr pszText; /主項或子項的名稱 public int cchTextMax;/pszText所指向的緩沖區(qū)大小 public Form1() InitializeComponent(); / <summary> / LV列表總行數(shù) / </summary> private int ListView_GetItemRows(int handle) return SendMessage(handl
12、e,LVM_GETITEMCOUNT,0,0); / <summary> / LV列表總列數(shù) / </summary> private int ListView_GetItemCols(int handle) return SendMessage(handle, HDM_GETITEMCOUNT, 0, 0); private void button1_Click(object sender, EventArgs e) int headerhwnd; /listview控件的列頭句柄 int rows,cols; /listview控件中的行列數(shù) int process
13、Id; /進程pid hwnd = FindWindow("#32770", "Windows 任務(wù)管理器"); hwnd = FindWindowEx(hwnd, 0, "#32770",null); hwnd = FindWindowEx(hwnd, 0, "SysListView32",null);/進程界面窗口的句柄,通過SPY獲取 headerhwnd = SendMessage(hwnd, LVM_GETHEADER, 0, 0);/listview的列頭句柄 rows=ListView_GetItem
14、Rows(hwnd);/總行數(shù),即進程的數(shù)量 cols = ListView_GetItemCols(headerhwnd);/列表列數(shù) GetWindowThreadProcessId(hwnd, out processId); /打開并插入進程 process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, false,processId); /申請代碼的內(nèi)存區(qū),返回申請到的虛擬內(nèi)存首地址 pointer = VirtualAllocEx(process, IntPtr.Zero, 4096,
15、 MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); string, tempStr;/二維數(shù)組 string temp = new stringcols; tempStr=GetListViewItmeValue(rows,cols);/將要讀取的其他程序中的ListView控件中的文本內(nèi)容保存到二維數(shù)組中 listView1.Items.Clear();/清空LV控件信息 /輸出數(shù)組中保存的其他程序的LV控件信息 for (int i = 0; i < rows; i+) for (int j = 0; j < cols;j+ ) tempj=
16、tempStri,j; ListViewItem lvi = new ListViewItem(temp); listView1.Items.Add(lvi); / <summary> / 從內(nèi)存中讀取指定的LV控件的文本內(nèi)容 / </summary> / <param name="rows">要讀取的LV控件的行數(shù)</param> / <param name="cols">要讀取的LV控件的列數(shù)</param> / <returns>取得的LV控件信息</retu
17、rns> private string, GetListViewItmeValue(int rows,int cols) string, tempStr = new stringrows,cols;/二維數(shù)組:保存LV控件的文本信息 for (int i = 0; i < rows;i+ ) for (int j = 0; j < cols;j+ ) byte vBuffer = new byte256;/定義一個臨時緩沖區(qū) LVITEM vItem = new LVITEM1; vItem0.mask = LVIF_TEXT;/說明pszText是有效的 vItem0.iI
18、tem = i; /行號 vItem0.iSubItem = j; /列號 vItem0.cchTextMax = vBuffer.Length;/所能存儲的最大的文本為256字節(jié) vItem0.pszText = (IntPtr)(int)pointer + Marshal.SizeOf(typeof(LVITEM); uint vNumberOfBytesRead = 0; /把數(shù)據(jù)寫到vItem中 /pointer為申請到的內(nèi)存的首地址 /UnsafeAddrOfPinnedArrayElement:獲取指定數(shù)組中指定索引處的元素的地址 WriteProcessMemory(process,pointer,Mars
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)生產(chǎn)安全技術(shù)規(guī)范
- 2020年高考語文模擬卷及評分標(biāo)準(zhǔn)
- 高考作文素材積累與應(yīng)用指導(dǎo)
- 生產(chǎn)質(zhì)量管理最佳實踐案例集
- 學(xué)生勵志成長主題班會教案范例
- 基于AI的客戶服務(wù)外包方案設(shè)計
- 挖泥船作業(yè)安全規(guī)范操作流程
- 中學(xué)生勞動教育實踐活動方案
- 小學(xué)英語口語教學(xué)方法與設(shè)計
- 物流配送中心倉儲操作流程詳解
- 2025年三力測試題試題及答案
- 設(shè)立國際貨運代理公司商業(yè)計劃書
- 土壤重構(gòu)施工方案
- 公司部門獨立核算運營實施及激勵方案兩篇
- 醫(yī)師麻醉資格考核表
- 演示文稿公共政策分析模型
- TCSUS14-2021不銹鋼芯板建筑結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)
- 物業(yè)交接表格全模板
- 常用食品包裝技術(shù)與設(shè)備
- 2021屆語文大總復(fù)習(xí)課時作業(yè)36文學(xué)類文本閱讀-小說(二)含解析
- 2023年學(xué)憲法講憲法知識競賽題含答案
評論
0/150
提交評論