Visual C++ 2011-4-17
2011-04-17 22:26 Clingingboy 阅读(427) 评论(0) 编辑 收藏 举报
一.文件查找
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); //卸载钩子
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2006-04-17 asp.net技巧点滴(一)