1.顯示當前的所有程序:
//顯示所有程序
void getallprocess(handle handle)
//通過程序號選中程序
int processid;
printf("請輸入你需要的程序號:");
scanf("%d",&processid);
//再次呼叫 process32first 函式,獲取程序列表
process32first(handle,info);
//重複呼叫 process32next,直到函式返回 false為止,對比程序號,找出指定程序
while(process32next(handle,info)!=false)
bool i = module32first(hfilename,&pes);
char* ppath=pes.szexepath;
printf("processdir: %s\n",ppath);
printf("processname:%s\nprocessid:%d\n",info->szexefile,info->th32processid);
//false=可繼承,info->th32processid=程序id
} }
closehandle(handle);
return;
}
2.通過程序路徑獲取該程序,對映到本程序,從而再獲取本程序載入的api函式 :
int main()
else
//建立乙個新的程序對映到核心物件
if(!hfilemap)
else
//對映檔案檢視到呼叫程序的位址空間,返回值是對映檢視的開始位置
lpvoid lpmemory=mapviewoffile(hfilemap,file_map_read|file_map_write,0,0,0);
hmodule hmodule = ::getmodulehandlea(null);
image_dos_header* pdosheader=(image_dos_header*)hmodule;
image_optional_header* popntheader=(image_optional_header*)((byte*)hmodule+pdosheader->e_lfanew+24); //這裡加24
image_import_descriptor* pimportdesc=(image_import_descriptor*)((byte*)hmodule
+popntheader->datadirectory[image_directory_entry_import].virtualaddress);
while (pimportdesc->firstthunk)
printf("\n");
pimportdesc++;
}
//停止當前程式的乙個記憶體對映
unmapviewoffile(lpmemory);
//關掉該新建的檔案對映
closehandle(hfilemap);
//關掉原檔案控制代碼
closehandle(hfile);
system("pause");
return 0;
}
3.依舊存在的問題:
4.部分結果截圖:
,有更為詳細的介紹,希望一起交流、學習,一起進步~
linux中程序的狀態
1.使用命令 top c 來檢視程序狀態 redhat localhost top c r工作中的程序 s可中斷的睡眠狀態 i空閒狀態 idle o程序正在處理器執行 b程序正在等待更多的記憶體頁 d不可中斷的睡眠狀態 t暫停狀態或跟蹤狀態 x出狀態,程序即將被銷毀 z殭屍程序1 task runn...
python中的程序 Python中程序
程式 程式 編寫完的 稱為程式。程序程序 又稱重量級程序,正在執行中的程式稱為程序。程序的執行會占用記憶體等資源。多個程序同時執行時,每個程序的執行都需要由作業系統按一定的演算法 rr排程 優先數排程演算法等 分配記憶體空間。並行與併發 並行 在多核系統中,每個cpu執行乙個程序,可以理解為cpu的...
linux系統中程序的建立
linux系統的程序建立時區別於其他的系統的,它並沒有提供spawn機制。而是把乙個程序的建立分成了兩步 fork和exec 先建立乙個程序,再讓子程序執行新的程式。首先系統呼叫fork 函式,若呼叫成功則產生乙個新的程序,值的一提的是該函式會產生兩個返回值。當父程序呼叫的時候返回0,子程序呼叫的時...