• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            不在浮沙筑高臺-demons
            C++/OS/disassembly/Anti-virus
            posts - 5,  comments - 5,  trackbacks - 0

            題目:
            DoALLProcesses(參數)函數為接受一個函數指針,確保我下面代碼成功:

            DoALLProcesses( listEachProc);可以輸出每個進程的基本信息。

            DoALLProcessesTerminateQQ;//終止qq

             其中PrintEachProcNameTerminateQQ是你自己定義的函數名。
            目的:通過本次練習,掌握函數指針的使用,理解C語言中如何利用函數指針對相同框架代碼重用。

            分析:由提議可知
            DoALLProcesses為遍歷進程的框架代碼,具體看代碼。

             1 
             2 #include "stdafx.h"
             3 #include <Windows.h>
             4 #include <tlhelp32.h>
             5 #include <iostream>
             6 using namespace std;
             7 //typedef bool (*DOEACHPROCFUN)(PROCESSENTRY32 &pe32, HANDLE hProcess);
             8 bool listEachProc(PROCESSENTRY32 &pe32)//列出進程
             9 {
            10     static char flag=0; //判斷是否是第一行
            11     if (flag==0)
            12     {
            13         flag=1;
            14         
            15         printf("%-30s%-10s%-15s%-15s\n","Process Name","PID","ThreadsCount","Priority");    
            16     }
            17     _tprintf( _T("%-30s%-10ld%-15ld%-15ld\n"), pe32.szExeFile,pe32.th32ProcessID,
            18         pe32.cntThreads,pe32.pcPriClassBase);    
            19     return TRUE;
            20 }
            21 
            22 bool terminateQQ(PROCESSENTRY32 &pe32)//若是QQ就終止
            23 {
            24     if(_tcsicmp(pe32.szExeFile,_T("QQ.exe"))==0)
            25     {
            26     HANDLE hProcess=OpenProcess(PROCESS_TERMINATE ,FALSE,pe32.th32ProcessID);
            27         TerminateProcess(hProcess,0);
            28         printf("A QQ process been terminated !\n");
            29     }
            30     return true;//表示繼續查找
            31 
            32 }
            33 
            34 //DoALLProcesses 為枚舉進程的框架代碼,沒找到一個,就會對它調用pfn所指向的函數
            35 
            36 BOOL DoALLProcesses( bool ( *pfn)(PROCESSENTRY32 &pe32) )//注意函數指針做參數的語法
            37 {
            38     HANDLE hProcessSnap;
            39     PROCESSENTRY32 pe32;
            40 
            41     hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
            42     if( hProcessSnap == INVALID_HANDLE_VALUE )
            43     {
            44         cerr<< "CreateToolhelp32Snapshot error\n" ;
            45         return( FALSE );
            46     }
            47 
            48     pe32.dwSize = sizeof( PROCESSENTRY32 );
            49     if( !Process32First( hProcessSnap, &pe32 ) )
            50     {
            51         cerr<<"Process32First " ; 
            52         CloseHandle( hProcessSnap );   
            53         return( FALSE );
            54     }
            55     do
            56     {
            57         if ( !pfn(pe32))//此處調用作為參數傳進的函數指針(注意會根據pfn反回的值決定是否跳出循環)
            58             break;    
            59     }
            60     while( Process32Next( hProcessSnap, &pe32 ) );
            61     CloseHandle( hProcessSnap );
            62     return( TRUE );
            63 }
            64 int _tmain(int argc, _TCHAR* argv[])
            65 {
            66     DoALLProcesses(listEachProc);//列舉所有進程
            67     printf("\n\n");
            68     DoALLProcesses(terminateQQ);//終止所有QQ進程
            69     return 0;
            70 }
            71

             

            posted on 2012-11-03 17:18 demons 閱讀(211) 評論(0)  編輯 收藏 引用 所屬分類: 10信安小組

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久久午夜精品| 狠狠干狠狠久久| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久综合噜噜激激的五月天| 久久人人爽人人爽人人av东京热 | 久久久精品人妻一区二区三区蜜桃| 日韩av无码久久精品免费| 97久久精品午夜一区二区| 精品国产乱码久久久久久浪潮| 一级a性色生活片久久无| 狠狠88综合久久久久综合网| 久久久久婷婷| 日本久久久精品中文字幕| 人妻无码αv中文字幕久久琪琪布| 精品久久久久久无码专区不卡| 久久久久亚洲精品天堂久久久久久| 无遮挡粉嫩小泬久久久久久久| 理论片午午伦夜理片久久 | 少妇久久久久久被弄到高潮 | 国产欧美久久久精品| 久久精品无码一区二区WWW| 九九热久久免费视频| 久久电影网一区| 久久99国产综合精品| 无码国内精品久久人妻蜜桃 | 97香蕉久久夜色精品国产| 国产成人香蕉久久久久| 国产精品久久久久aaaa| 久久婷婷五月综合97色 | 狠狠色综合网站久久久久久久高清 | 久久99精品久久久久婷婷| 97精品依人久久久大香线蕉97| 蜜桃麻豆www久久国产精品| 国内精品免费久久影院| 国产成人久久激情91| 99久久国语露脸精品国产| 97久久久精品综合88久久| 久久精品国产99久久无毒不卡| 亚洲国产精品一区二区久久hs| 无码精品久久久天天影视| 精品国产一区二区三区久久久狼|