如何获得用NotePad已经打开的文本文件的实际存储路径???

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/5601/5601470.xml?temp=.5651514
      

  2.   

    添加那个模块然后:Private Sub Command1_Click()
        Dim I As Long
        
        I = Shell("notepad " & "D:\Temp\123.txt", vbMinimizedNoFocus)
        MsgBox GetRemoteCmdLine(I)
    End Sub你试了再说.
      

  3.   

    好像没有明白我的意思:如何获得用NotePad已经打开的文本文件的实际存储路径???这个文本已经打开了。已知条件就是一个用记事本打开的文本文件。要知道它的存储路径。我不知道它的路径,I = Shell("notepad " & "D:\Temp\123.txt", vbMinimizedNoFocus)里面D:\Temp\123.txt是怎么来的???根本就是两回事。
      

  4.   

    当你点击这个记事本的菜单上面的save as的时候,会出现这个文件默认的路径,需要知道的就是这个。这样讲,清楚点了吗?
      

  5.   

    LZ的意思大概要通过其他程序知道NOTEPAD 打开的文件路径
      

  6.   

    一般不允许这么做,因为NOTEPAD打开的文件是属于其子窗口或子类干的事情,你要知道窗口干的事必须由父窗口告诉你,否则就不符合封装的要求了。但可以做到,但是比较复杂,如果要写出代码及调试,至少得花半个小时。思路如下:
    1、用API检查是否运行NOTEPAD,即是否有class name=“notepad”的窗口运行。
    2、获取此窗口句柄,获取窗口标题。 标题名其格式为:“xxxx.yyy - 记事本”。“xxxx.yyy”即为打开的文件名。如:step.txt - 记事本
    3、问题就归结到了,查找此文件名路径。
      

  7.   

    哈哈,收索硬盘是可以的,就是笨了点,另外可能会出来多个结果。直接收索此处:C:\Documents and Settings\username\Recent 
    但此目录下是快捷方式,你的处理出其具体的路径。
    如果不知道username,还得增加找出username。
    即便如此,还是会有可能出现多个同名文件。总之麻烦,谁叫你要做违反编程规章的事务呢。
      

  8.   

    LZ   我们是在帮你解决问题  
    就算答错了你也要说声谢谢关注  何况还答对了???
    然后给LZ个建议   从基础开始。
      

  9.   

    实际上,楼主说你没有真正解决,也是有道理的!
    就比如说文本文件,如先打开notepad,再用notepad打开文件,哪样,你就不能用getcmdline方式来取得它打开了什么文件了!
      

  10.   

    一般来说,NotePad打开一个文件,会把文件的路径存放于内存某处,而且其偏移地址固定不变!
    如果你只想知道用NotePad已经打开的文本文件的实际存储路径,哪么你可用winhex之类软件,查出其存放文件路径的内存偏移地址,然后用readprocessmemory读它,可知其实际路径!但这样不具有通用性
    当然,对于文件以参数方式被打开的,可以用上面老马、八神等人说的.
      

  11.   

    IORI915189(八神) ( ) 信誉:100  2007-7-23 19:58:30  得分: 0  
     
     
       
    LZ   我们是在帮你解决问题  
    就算答错了你也要说声谢谢关注  何况还答对了???
    然后给LZ个建议   从基础开始。//顶八神本来还想帮你跟踪一下记事本的,看来还是留着这时间我自己学点东西算了.....