使用指標實現程序間通訊

2021-06-16 01:05:18 字數 1390 閱讀 9487

使用指標進行程序間通訊,大致思想就是,在乙個應用程式中獲得某個變數的位址,然後在另乙個應用程式中通過記憶體讀寫來改變這個位址中的值,或者提取這個位址中的值。這就是整個過程,很簡單。兩個應用程式溝通的橋梁就是某個變數的位址(指標)。

找到程序控制代碼: 首先在乙個應用程式中,找到程序視窗的控制代碼(findwindow()), 然後獲得程序id(getwindowthreadprocessid(hwnd, &pid )),執行後pid就代表程序id,通過pid找到程序控制代碼(openprocess (process_all_access,false,pid)),

讀值:readprocessmemory(hprocess ,

lpbaseaddress,(void*)&dwvalue,sizeof(dword),0);

寫值:writeprocessmemory(hprocess ,

lpbaseaddress,(void*)&dwvalue,sizeof(dword),0)) ;

主要**如下:

讀值:dword pid;

hwnd hwnd = ::findwindow (null,text("testserver"));//找到程序的視窗控制代碼

if(!hwnd)

::getwindowthreadprocessid(hwnd, &pid );

handle hprocess = ::openprocess (process_all_access,false,pid);

lpvoid lpbaseaddress=(lpvoid)0x12fee8;

dword dwvalue;

if(!::readprocessmemory(hprocess ,

lpbaseaddress,(void*)&dwvalue,sizeof(dword),0)) return;

m_strread.format("%d",dwvalue);

updatedata(false);

寫值:dword pid;

hwnd hwnd = ::findwindow (null,text("testserver"));

if(!hwnd)

::getwindowthreadprocessid(hwnd, &pid );

handle hprocess = ::openprocess (process_all_access,false,pid);

lpvoid lpbaseaddress=(lpvoid)0x12fee8;

updatedata();

dword dwvalue=atoi(m_strwrite);

if(!::writeprocessmemory(hprocess ,

lpbaseaddress,(void*)&dwvalue,sizeof(dword),0)) return;

程序間通訊 使用socket實現

socket套接字通訊,建立兩個程序交流 第乙個程序叫做jack,他想給rose打 於是他先要去買乙個手機 建立socket 並且還要知道rose的 號碼 對方ip和埠 jack 客戶端 如下 include include include include include include inclu...

如何實現程序間通訊

使用共享記憶體 物理記憶體 的步驟 1 建立共享記憶體 2 對映到虛擬位址空間 3 把資料寫到共享記憶體 4 解除對映並銷毀 為避免同一時間多個程序訪問同一記憶體,我們必須給共享記憶體加鎖,實現程序同步。加鎖過程 1 建立訊號量 2 初始化訊號量 3 進行p操作 拔鑰匙 和v操作 插鑰匙 4 程式執...

android Aidl 實現程序間通訊

1 android 新建aidl 檔案 刪除void basictypes int anint,long along,boolean aboolean,float afloat,double adouble,string astring 這個方法沒用到 還需要實現。2,新增自己需要的方法例如 pac...