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

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


我想点击该按钮时,如果该文本未被打开,则打开。 若已经打开,则不再打开,就是说不允许同时打开多个一样的文本,请问我应该如何去判断该txt文件是否被打开
...全文
126 点赞 收藏 11
写回复
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就可以了
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告