vb6代码打开对话框而不使用commondialog控件

Posted

技术标签:

【中文标题】vb6代码打开对话框而不使用commondialog控件【英文标题】:vb6 code to open dialog box without using commondialog control 【发布时间】:2014-04-05 06:27:49 【问题描述】:

请帮我创建一个项目来打开对话框而不使用普通对话框组件/控件。

问候 瑟夏

【问题讨论】:

您当然可以只使用一个表单和一些辅助隐藏控件来创建一个完整的 VB 应用程序。但这些都是非常先进的技术。 Alex K 的回答很好,但是您应该指定有很多对话类型。 @Denzil 我需要文件打开对话框,但没有在 vb6 中使用“commondialog”控件 你为什么不想使用ocx? 创建“雷达下的软件”可能吗? IE。要在锁定的 PC(库、工作、毫无戒心的用户等)上使用的程序,其中没有提升权限,因此无法安装。 【参考方案1】:

这是来自 Microsoft KB source 的一些示例代码。

Option Explicit

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
         "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Private Sub Command1_Click()
    Dim OpenFile As OPENFILENAME
    Dim lReturn As Long
    Dim sFilter As String

    OpenFile.lStructSize = Len(OpenFile)
    OpenFile.hwndOwner = Form1.hwnd
    OpenFile.hInstance = App.hInstance
    sFilter = "Batch Files (*.bat)" & Chr(0) & "*.BAT" & Chr(0)
    OpenFile.lpstrFilter = sFilter
    OpenFile.nFilterIndex = 1
    OpenFile.lpstrFile = String(257, 0)
    OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
    OpenFile.lpstrFileTitle = OpenFile.lpstrFile
    OpenFile.nMaxFileTitle = OpenFile.nMaxFile
    OpenFile.lpstrInitialDir = "C:\"
    OpenFile.lpstrTitle = "Use the Comdlg API not the OCX"
    OpenFile.flags = 0
    lReturn = GetOpenFileName(OpenFile)
    If lReturn = 0 Then
        MsgBox "The User pressed the Cancel Button"
    Else
        MsgBox "The user Chose " & Trim(OpenFile.lpstrFile)
    End If
End Sub

【讨论】:

【参考方案2】:

CommonDialog 控件是对GetOpenFileName/GetSaveFileName API 的薄包装,您可以直接从 VB 调用它。 Here is a working example.

【讨论】:

【参考方案3】:

您可以使用来自 vbAccelerator.com 的非常好的库:-

Common Dialog Direct Library

【讨论】:

以上是关于vb6代码打开对话框而不使用commondialog控件的主要内容,如果未能解决你的问题,请参考以下文章

VB 显示打开文件对话框

vb6.0中如何设置:如下的路径选择?怎么让一个按钮被点击时直接打开路径中的.exe文件?谢谢了

来自VB6的.NET对象而不使用regasm.exe?

20分,各位高手请来帮忙啊!!!VB6.0 调用Bartender7.75问题!!!!

运行外部进程而不冻结 vb6 中的主 UI

32 位 VB6 应用程序需要自动化 64 位 Outlook 发送电子邮件而不提示用户