各位,在win7 下CommonDialog控件的 InitDir 不起作用,这是为啥啊,在调试的时候没有问题,可是在编译成exe之后再测试,就不起作用了,总是设定为上次使用过的路径,不会指定到我设定的InitDir 。谢谢各位了。如下例子,如果指定了一次E盘的话,下次打开默认就是E盘了,而不是D盘。在XP下测试,没有问题,换到Win7下就不成了。(调试环境没有问题,直接执行EXE就不可以了)Private Sub Command2_Click()
   Path = "D:\"
   With CommonDialog1
        .FileName = "11.log"
        .InitDir = Path
        .ShowOpen
   End With
End Sub 

解决方案 »

  1.   

    明显 Win7 下 VB6.exe 和 你的程序.exe 的权限不一样。
    1)检查 UAC 相关。
    2)检查防毒软件设置。
      

  2.   

    注意,你在VB6中按F5运行的代码还是属于VB6.exe这个进程本身的
      

  3.   

    我已经在编译出来的exe上右键选择用管理员权限执行了。
    UAC要检查哪些项目啊,我已经全关闭了,参考图片。
    另外杀毒软件都关闭了
      

  4.   

    是这样的,例如,我第一次编译出来的exe叫1.exe 指定的默认路径为D:\111\   这时是不好用的,指定的initDir无效。
    我如果在编译一次1.exe 默认路径换为D:\222\ 这时,指定的initDir 就有效了.
    ------
    总结了一下,就是每个exe指定的第一个initDir 都是无效的,从第二次开始指定的initDir 就有效了。就感觉像要初始化一下似的
    不知道win7把上次默认打开的路径记到哪儿了。太迷茫了
      

  5.   

    如果写成下面这样就可以,就是第一次和第一次以后的打开的路径稍稍变化以下,就一直能设定InitDir了。为啥啊?
    Dim i As Integer
    Private Sub Command1_Click()
        On Error Resume Next
        If i = 0 Then
            Flg_ExcelPath = "D:\TEST\"
        Else
            Flg_ExcelPath = "D:\TEST"
        End If
        Flg_ExcelName = "a1.txt"
        Text3.Text = Err.Number
        With CDL_ExportToExcel
                .InitDir = Flg_ExcelPath                                    
                .FileName = Flg_ExcelName                                   
                .CancelError = False                                        
                
                                                               
                .DialogTitle = "保存数据到Excel"                            
                .ShowSave                                                   
        End With
        Text4.Text = Err.Number
        Text1.Text = Flg_ExcelPath
        Text2.Text = CDL_ExportToExcel.InitDir
            i = i + 1
    End SubPrivate Sub Form_Load()
    i = 1
    End Sub
      

  6.   

    ShowSave 会更改当前目录。
    找找规律:调用前的当前目录 CurDir、设置前的 InitDir、设置后的 InitDir。