我有一个按钮,当我点击该按钮时,调用以下函数去打开strFilePath 目录下的一个文本文件
ShellExecute(NULL, "open", strFilePath, NULL, NULL, SW_SHOWNORMAL); // strFilePath 是txt文本的路径。
我想点击该按钮时,如果该文本未被打开,则打开。 若已经打开,则不再打开,就是说不允许同时打开多个一样的文本,请问我应该如何去判断该txt文件是否被打开

解决方案 »

  1.   

    记事本打开txt文件后,关闭了文件句柄。你就是把这个txt删除了都可以!可以通过Findwindow的方法找到有没有名为打开文件的notepad窗口(只能精确到文件名,不能判断全路径)如果不考虑用户自己打开txt,可以在程序中自己记录有没有打开txt文件...
      

  2.   

    每打开一个记事本文本, 对应生成窗体 名  **.txt

    可以用FindWindow进行事先判断。
      

  3.   

    执行此操作前 先利用CFile 进行一次关闭操作,关闭txt文本 在进行打开~
      

  4.   

    FindWindow判断下notepad的标题即可
      

  5.   

    Windows系统没有相关的控制,自己写代码控制.
    说说我的想法,定义一个包含文件的路径,以及打开标志符的结构体数组,然后,每打开一个文件,则判断一次是否已有相同类型的文件已被打开.
      

  6.   

    问题是这个文本的标题不是固定的,如果固定的FindWindow当然可用,如果该文本是用户可以随意创建或选择的话有FindWindow不适合吧,有点麻烦啊,
      

  7.   

    (1)BOOL f;
       CFile cf;
       f = cf.Open(strFilePath,CFile::moderead | CFile::shareExclusive);//以独占的方式打开
       if()
       {
    ShellExecute(NULL, "open", strFilePath, NULL, NULL, SW_SHOWNORMAL); // strFilePath 是txt文本的路径。
       }
       else
       {
         //已经被打开
       }
      

  8.   

    if(f)//为真,没有被打开
    //忘记写f了
      

  9.   

    还是不可以啊,我的方法是  
    如果路径是不固定的话,可以先把路径中文本的标题(含后缀)先提取出来,把标题再加上" - 记事本"赋给cstring字符串,再用FindWindow就可以了