zoukankan      html  css  js  c++  java
  • Visual C++ 2011417

    一.文件查找

    1.FindFirstFile

    Searches a directory for a file or subdirectory with a name that matches a specific name.
    即查找当前目录的子目录或者文件,查找完毕后调用FindClose

    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    printf ("Target file is %s.\n", "");
    hFind = FindFirstFile(TEXT("D:\\develop\\win*2"), &FindFileData);
    if (hFind == INVALID_HANDLE_VALUE) 
    {
      printf ("Invalid File Handle. Get Last Error reports %d\n", GetLastError ());
    } else
    {
      wprintf (L"The first file found is %s\n", FindFileData.cFileName);
      FindClose(hFind);
    }
    

    2.FindNextFile

    通过FindNextFile的配合,可以找出一个目录下的所有文件和目录,通过此方法就可以递归找出所有的文件和目录(得到文件时要判断文件是目录还是文件)了

    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    hFind = FindFirstFile(TEXT("D:\\*"), &FindFileData);
    bool bResult = false;
    int i = 0;
    
     while(!bResult)
     {
         if (!FindNextFile(hFind, &FindFileData)) 
         {
             bResult = true;
             return;
         }
         wprintf(FindFileData.cFileName);
         i++;
     }
    

    参考:http://hi.baidu.com/%B0%D7%BF%AA%CB%AE%D2%B2%BA%C8%D7%ED/blog/item/e457b9a8502d25f51e17a24e.html

    二.钩子的概念

    通过外部DLL,对其他的进行进程监听和拦截,在DllMain函数中获取句柄

    DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
    {
    
        if (dwReason == DLL_PROCESS_ATTACH)
        {
            TRACE0("CHAP16EXA3.DLL Initializing!\n");
    pinstance=hInstance;//取得钩子函数的模块句柄
        }
        else if (dwReason == DLL_PROCESS_DETACH)
        {
    }
        return 1;   // ok
    }
    

    然后SetWindowsHookEx安装钩子,UnhookWindowsHookEx卸载钩子,钩子必须一个一个的注册,所以要用

    CallNextHookEx方法来调用下一个钩子

    extern "C" LRESULT CALLBACK MousePro(int code,WPARAM wparam,LPARAM lparam)
    {
        if (code<0)//当code<0时,直接返回下一个钩子
            return CallNextHookEx(hhook, code, wparam, lparam);
        if(wparam==WM_LBUTTONDOWN)
            m_LClick++;
        if(wparam==WM_RBUTTONDOWN)
            m_RClick++;
        return CallNextHookEx(hhook, code, wparam,lparam);
    }
    
    extern "C" bool WINAPI InstallHook()
    {
        hhook=SetWindowsHookEx(WH_MOUSE,MousePro,pinstance,0);//安装钩子
        if(hhook!=NULL)
            return true;
        else
            return false;
    }
    
    extern "C" int WINAPI UninstallHook()
    {
        return UnhookWindowsHookEx(hhook); //卸载钩子
    }
    
  • 相关阅读:
    《.NET深入体验与实战精要》读书体会
    为什么周易中有64卦?
    16进制与8进制之间的快速转码
    3种夸克有多少组合?
    分辨率宽高和为整千?
    abt DVD
    为什么有20种氨基酸?
    HD与BD次时代之战!
    [转载]Java一些基础问题
    [转载]Java环境变量配置
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2019168.html
Copyright © 2011-2022 走看看