实行文件下载地址:
http://download.youkuaiyun.com/source/743789
运行实例图:
访问其他进程的头文件:
- //---------------------------------------------------------------------------
- #ifndef MemoryCtrH
- #define MemoryCtrH
- #include <windows.h>
- //---------------------------------------------------------------------------
- void* AllocMemInForeignProcess(HANDLE process, unsigned long size);
- void FreeMemInForeignProcess(HANDLE process, void* ptr);
- void ReadFromForeignProcessMemory(HANDLE process, void* ptr, void* target, unsigned long size);
- void WriteToForeignProcessMemory(HANDLE process, void* ptr, void* src, unsigned long size);
- //---------------------------------------------------------------------------
- #endif
访问其他进程内存的cpp文件:
- //---------------------------------------------------------------------------
- #pragma hdrstop
- #include "MemoryCtr.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- //---------------------------------------------------------------------------
- /*
- * Allocated memory in a foreign process. Windows NT only!!!
- */
- void* AllocMemInForeignProcess(HANDLE process, unsigned long size)
- {
- void *ptr = VirtualAllocEx(process, NULL, size, MEM_COMMIT, PAGE_READWRITE);
- if(ptr == NULL) throw(GetLastError());
- else return ptr;
- }
- //---------------------------------------------------------------------------
- /*
- * Frees previously allocated memory in a foreign process. Windows NT only!!!
- */
- void FreeMemInForeignProcess(HANDLE process, void* ptr)
- {
- if(VirtualFreeEx(process, ptr, 0, MEM_RELEASE) == 0) throw(GetLastError());
- }
- //---------------------------------------------------------------------------
- /*
- * Reads from memory we previously allocated in a foreign process.
- */
- void ReadFromForeignProcessMemory(HANDLE process, void* ptr, void* target, unsigned long size)
- {
- if(ReadProcessMemory(process, ptr, target, size, NULL) == 0) throw(GetLastError());
- }
- //---------------------------------------------------------------------------
- /*
- * Writes to memory we previously allocated in a foreign process.
- */
- void WriteToForeignProcessMemory(HANDLE process, void* ptr, void* src, unsigned long size)
- {
- if(WriteProcessMemory(process, ptr, src, size, NULL) == 0) throw(GetLastError());
- }
- //---------------------------------------------------------------------------
主程序的头文件:
- //---------------------------------------------------------------------------
- #ifndef TVSEnterH
- #define TVSEnterH
- //---------------------------------------------------------------------------
- #include <Classes.hpp>
- #include <Controls.hpp>
- #include <StdCtrls.hpp>
- #include <Forms.hpp>
- #include "AdvAppStyler.hpp"
- #include "AdvAlertWindow.hpp"
- #include "AdvCircularProgress.hpp"
- #include "AdvGlassButton.hpp"
- #include "AdvListV.hpp"
- #include "ExeInfo.hpp"
- #include <ComCtrls.hpp>
- #include "FormSize.hpp"
- #include "AdvMenus.hpp"
- #include "trayicon.h"
- #include <ImgList.hpp>
- #include <Menus.hpp>
- #include "AdvOfficeStatusBar.hpp"
- #include <ExtCtrls.hpp>
- //---------------------------------------------------------------------------
- class TVSEnterForm : public TForm
- {
- __published: // IDE-managed Components
- TAdvListView *Roomlist;
- TAdvGlassButton *btnOK;
- TAdvCircularProgress *AdvCircularProgress1;
- TAdvAlertWindow *AdvAlertWindow1;
- TFormSize *vsInfo;
- TTrayIcon *TrayIcon1;
- TAdvPopupMenu *AdvPopupMenu1;
- TMenuItem *popRestore;
- TMenuItem *popStop;
- TMenuItem *popGoOn;
- TMenuItem *popExit;
- TImageList *ImageList1;
- TAdvOfficeStatusBar *AdvOfficeStatusBar1;
- TAdvGlassButton *btnAllSelect;
- TAdvGlassButton *btnAllCancel;
- TTimer *EnterRoomTimer;
- TAdvGlassButton *btnUpdateRoomList;
- void __fastcall btnAllSelectClick(TObject *Sender);</