如何判断txt文本是否已经打开

liuharris 2009-09-01 09:34:02
我有一个按钮,当我点击该按钮时,调用以下函数去打开strFilePath 目录下的一个文本文件
ShellExecute(NULL, "open", strFilePath, NULL, NULL, SW_SHOWNORMAL); // strFilePath 是txt文本的路径。


我想点击该按钮时,如果该文本未被打开,则打开。 若已经打开,则不再打开,就是说不允许同时打开多个一样的文本,请问我应该如何去判断该txt文件是否被打开
...全文
321 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
coffee_machine 2009-09-01
  • 打赏
  • 举报
回复
if(f)//为真,没有被打开
//忘记写f了
coffee_machine 2009-09-01
  • 打赏
  • 举报
回复
(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
{
//已经被打开
}


liuharris 2009-09-01
  • 打赏
  • 举报
回复
问题是这个文本的标题不是固定的,如果固定的FindWindow当然可用,如果该文本是用户可以随意创建或选择的话有FindWindow不适合吧,有点麻烦啊,
xiaoshiquan 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tr0j4n 的回复:]
FindWindow判断下notepad的标题即可
[/Quote]
此法可取!我用过。
youyifang 2009-09-01
  • 打赏
  • 举报
回复
Windows系统没有相关的控制,自己写代码控制.
说说我的想法,定义一个包含文件的路径,以及打开标志符的结构体数组,然后,每打开一个文件,则判断一次是否已有相同类型的文件已被打开.
MoXiaoRab 2009-09-01
  • 打赏
  • 举报
回复
FindWindow判断下notepad的标题即可
yuhudie203 2009-09-01
  • 打赏
  • 举报
回复
执行此操作前 先利用CFile 进行一次关闭操作,关闭txt文本 在进行打开~
Fireway2008 2009-09-01
  • 打赏
  • 举报
回复
每打开一个记事本文本, 对应生成窗体 名 **.txt

可以用FindWindow进行事先判断。
skyxie 2009-09-01
  • 打赏
  • 举报
回复
记事本打开txt文件后,关闭了文件句柄。你就是把这个txt删除了都可以!

可以通过Findwindow的方法找到有没有名为打开文件的notepad窗口(只能精确到文件名,不能判断全路径)

如果不考虑用户自己打开txt,可以在程序中自己记录有没有打开txt文件...
olivertang 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 coffee_machine 的回复:]
(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
  {
    //已经被打开
  }


[/Quote]

记事本是以非独占模式打开的,所以你仍然可以获取文件句柄的
liuharris 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 coffee_machine 的回复:]
(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
  {
    //已经被打开
  }


[/Quote]


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

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧