C语言写一个遍历全盘搜索文件并返回文件路径的程序

C语言写一个遍历全盘搜索文件并返回文件路径的程序,第1张

通过windows的API,里面有两简灶早个文件 *** 作的拦雀,可以找到第一个文件句柄和下一个文件句柄,用这个方法就可以使用递归的手法来辩宏遍历全盘,然后使用if判断,确定的话再用得到文件绝对路径的方法就可以了

你再到程序里点MSN,则已经启动氏凯的MSN窗口会显示出来,这个是怎么做到的。

--------------------------------------------------------------------------------

答:Mutex

--------------------------------------------------------------------------------

答:我是说如果有MSN的进程存在,则把现有的窗口显示出来,这个是怎么做的。

--------------------------------------------------------------------------------

答:很多办法,用mutex也可以实现。比如两个mutex就可以解决了,不过需要多一个线程来处理。程序将mutex1锁住,等待mutex2,程序再运行发现mutex1已经锁住,则释放mutex2,原来运行的程序mutex2受信,则调出主窗口,然后继续等待再次受信。

--------------------------------------------------------------------------------

答:查找是否有msn的Mutex,如果有歼做唤,再查找msn的进程,然后,**它,这个也可以吧

--------------------------------------------------------------------------------

答:Semaphore也行

--------------------------------------------------------------------------------

答:FindWindow然后ShowWindow啊

--------------------------------------------------------------------------------

答:toxharry(charry):如何**?人家楼主问是这个。toicr_mio(Logos):这种方法不好,因为可能有重名窗口,除非可以通过HWND或者PID,但我不知道能不能实现。

--------------------------------------------------------------------------------

答:不好意思,打错了:“除非可以通过HWND获得PID”

--------------------------------------------------------------------------------

答:HANDLEhMutex=CreateMutex(NULL,TRUE,str)//str--mutexnameif(hMutex==NULL¦¦GetLastError()==ERROR_ALREADY_EXISTS)

--------------------------------------------------------------------------------

答:楼上正解

--------------------------------------------------------------------------------

答:MSN不是用互斥量的MSN是基于COM的,只要类厂维持一个msn对象就可以了。

--------------------------------------------------------------------------------

答:如果该程序是始终有窗口的,我们可以通过查胡厅找它的窗口的句柄,**它用FindWindow如果它缩小到了Tray上了,我们可定义一个消息,程序收到该消息就显示窗口

--------------------------------------------------------------------------------

答:楼主的意思好像是针对进程只开一个问题,你自己程序写一下不就可以啦,跟具体MSN里面内核没关系。

--------------------------------------------------------------------------------

答:检查进程用FindWindow

--------------------------------------------------------------------------------

答:这是BCB的,懂这意思就可以void__fastcallTYZClient::FormCreate(TObject*Sender)Application->ShowMainForm=falseApplication->Terminate()return}elseCreateMutex(NULL,false,Application->Title.c_str())......}

另外,团IDC网上有许多产品团购,便宜有口碑

如果是通过open方式打开的,那么第一个参数就是文件路径信息:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int open(const char *path, int oflag, /* mode_t mode */...)

如果是通过fopen方式打开的,那么第一个参数就是文件路径信息:

#include <stdio.h>

FILE *fopen(const char *filename, const char *mode)

无论通过open还是fopen打开文件,都必须先知道文世族晌件路径信息,尽管可能是相对路径。搜锋

如果知道了filename的内容,我们就可以定穗罩位它的绝对路径,也就是你说的完全路径。

1. filename本身就是绝对路径,ok。

2. filename是相对路径,那么先通过getcwd获取进程的执行路径,然后再获取绝对路径即可。

#include <unistd.h>

extern char *getcwd(char *buf, size_t size)

但是,如果进程在打开文件后又执行了chdir、fchdir之类函数的话,估计就不能够再获取文件路径信息了。

#include <unistd.h>

int chdir(const char *path)

int fchdir(int fildes)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12168073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存