使用指標進行程序間通訊,大致思想就是,在乙個應用程式中獲得某個變數的位址,然後在另乙個應用程式中通過記憶體讀寫來改變這個位址中的值,或者提取這個位址中的值。這就是整個過程,很簡單。兩個應用程式溝通的橋梁就是某個變數的位址(指標)。
找到程序控制代碼: 首先在乙個應用程式中,找到程序視窗的控制代碼(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...