tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
826
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Hiho Leute,
    kleiner Problem, vielleicht könnt ihr mir grad helfen:
    Beim Kopieren von Dateien aus unserem Programm in einen externen Order, werden sowohl Ordner als auch Datei gesperrt. Für die Dateien gibts eine externe Funktion, welche diese wieder schreibbar macht.
    Mir ist jedoch aufgefallen, dass CommonDialog diesen Ordner schreibgeschützt macht, hier der kleine Code Ausschnitt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    CD1.InitDir = GetSetting("Consolidate", "Beilagen", "AttDir", "C:\") 'MLHIDE
              CD1.Filter = "*." & FilesExtension(RealFile)                'MLHIDE
              
              'mu 25.07.2007 - 1343707
              CD1.FileName = FilesName(RealFile)
            
              CD1.ShowSave
              If Err = 0 Then

    Der tatsächlich Schreibschutz wird wohl beim cd1.ShowSave gemacht und ich habe keine Möglichkeit gefunden, diesen Rückgängig zu machen. Bevor ich hier also selber was programmiere: Gibts da eine einfache Möglichkeit dies zu umgehen?
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wie erstellst du CD1?
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Ist ein ganz normales CommonDialog-Control, welches Microsoft liefert.
    Glaub das OCX ist MSCOMCTL.OCX, bin mir aber net 100% sicher.
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wie sieht dein Set-Befehl aus? Irgendwo musst du CD1 ja erstellen, das gibts nicht aus dem nichts.

    Mit CreateObject? Mit new? mit?

    Poste bitte mehr vom Code.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Hm reden wir vom Gleichen?
    Ich setze den Objektverweis auf COMDLG32.OCX und ziehe das Control aufs Form.
    So einfach, aber das tut ja nichts zur Sache.
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ah.. du legst as als ActiveX an.
    Doch, das tut sehr viel zur Sache weil ich dachte du declarierst es im Code.

    Gut, mit dem ActiveX kenn ich mich nicht aus, da ich es nie brauche.

    Ich arbeite mit
    Code vb:
    1
    2
    
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (mOpenFileName As OPENFILENAME) As Long
    Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (mOpenFileName As OPENFILENAME) As Long
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Hm spannend, daass da niemand etwas weiss. Man sollte meinen ein so oft benutztes Control wäre in aller Munde
     

  8. #8
    ronaldh ronaldh ist offline Mitglied Brillant
    Registriert seit
    Apr 2007
    Ort
    Hannover
    Beiträge
    912
    Zitat Zitat von DrMueller Beitrag anzeigen
    Hm spannend, daass da niemand etwas weiss. Man sollte meinen ein so oft benutztes Control wäre in aller Munde
    Das liegt vielleicht daran, dass noch niemand dieses Problem hatte. Ich nutze das Control sehr viel, aber habe noch nirgendwo Sperren dieser Art erlebt. Daher kann ich Dein Problem auch nicht reproduzieren.

    Vielleicht liegt die Ursache an anderer Stelle im Programmcode?

    Ansonsten solltest Du wirklich mal die API-Funktionen (wie von yaslaw erwähnt) probieren. Das Commondialog-Control hat bekannte Schwächen im Printer-Bereich, vielleicht in manchen Umgebungen ja auch in anderen Anwendungen?
     
    Nur tote Fische schwimmen mit dem Strom.

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wenn du Apis suchst, empfehle ich dir die folgende Seite
    http://www.activevb.de/ -> Tips und Tricks.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Ja Dank an euch für die Tipps.
    Leider nichts geholfen. Ich habe es so als API versucht:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    
    Private Declare Function GetSaveFileName Lib "comdlg32.dll" _
      Alias "GetSaveFileNameA" ( _
      lpofn As OPENFILENAME) As Long
     
    Private Type OPENFILENAME
      lStructSize As Long
      hwndOwner As Long
      hInstance As Long
      lpstrFilter As String
      lpstrCustomFilter As String
      nMaxCustomFilter 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
     
    ' Zeigt ein Dialogfeld mit der Möglichkeit, mehrere Dateien
    ' auszuwählen. In diesem Fall enthält lpstrFile den Pfad und
    ' anschließend alle Dateinamen.
    ' nFileOffset zeigt auf den Index des ersten Dateinamens nach
    ' der Pfadangabe.
    ' lpstrFile enthält alle Dateinamen durch Chr$(0) getrennt.
    ' Am Ende folgt ein zweites Chr$(0). Bei alten Win-3.x-
    ' Dialoge) sind die Dateinamen durch Leerzeichen getrennt.
    ' Diese Variante kennt keine langen Dateinamen.
    Private Const OFN_ALLOWMULTISELECT = &H200
     
    ' Zeigt eine Meldung, wenn die Datei nicht existiert und
    ' fragt den Anwender, ob sie erzeugt werden soll.
    Private Const OFN_CREATEPROMPT = &H2000
     
    ' Aktiviert die Rückruffunktion lpfnHook.
    Private Const OFN_ENABLEHOOK = &H20
     
    ' Aktiviert die Dialogfeldvorlage.
    Private Const OFN_ENABLETEMPLATE = &H40
     
    ' Aktiviert die Dialogfeldvorlage.
    Private Const OFN_ENABLETEMPLATEHANDLE = &H80
     
    ' Nutzt Explorer-Dialoge. Diese Einstellung ist die Vorgabe,
    ' selbst wenn Sie dieses Flag nicht angeben. Für alte
    ' Win-3.x-Dialoge müssen Sie das Flag löschen.
    ' Sie müssen es in den folgenden Fällen setzen:
    ' - bei OFN_ALLOWMULTISELECT.
    ' - wenn Sie Dialogfeldvorlagen und Rückruffunktionen benutzen.
    Private Const OFN_EXPLORER = &H80000
     
    ' Gibt an, dass der Anwender einen Dateinamen mit einer
    ' anderen Erweiterung als lpstrDefExt eingeben kann.
    Private Const OFN_EXTENSIONDIFFERENT = &H400&
     
    ' Gibt an, dass der Anwender nur die Namen von existierenden
    ' Dateien eingeben kann. Andernfalls wird eine Warnmeldung
    ' ausgegeben.
    ' OFN_PATHMUSTEXIST muß ebenfalls gesetzt werden.
    Private Const OFN_FILEMUSTEXIST = &H1000
     
    ' Versteckt das Kontrollkästchen "Nur lesen".
    Private Const OFN_HIDEREADONLY = &H4&
     
    ' Aktiviert die Unterstützung von langen Dateinamen in den
    ' alten Win-3.x-Dialogen.
    Private Const OFN_LONGNAMES = &H200000
     
    ' Stellt das ursprüngliche Verzeichnis bei Ende des Dialoges
    ' wieder her, wenn der Anwender anderes Verzeichnis
    ' eingestellt hat.
    Private Const OFN_NOCHANGEDIR = &H8&
     
    ' Weist das Dialogfeld an, bei einer markierten Verknüpfung
    ' Namen und Pfad der Verknüpungsdatei zurückzugeben, anstatt
    ' Namen und Pfad der Datei, auf die die Verknüpfung verweist.
    Private Const OFN_NODEREFERENCELINKS = &H100000
     
    ' Deaktiviert die Unterstützung von langen Dateinamen in den
    ' alten Win-3.x-Dialogen.
    Private Const OFN_NOLONGNAMES = &H40000
     
    ' Versteckt die Schaltfläche "Netzwerk".
    Private Const OFN_NONETWORKBUTTON = &H20000
     
    ' Gibt an, dass keine Testdatei erzeugt wird, bevor der
    ' Dialog endet. In diesem Fall überprüft das Dialogfeld nicht
    ' auf Schreibschutz, Platzmangel auf dem Datenträger oder
    ' korrekten Netzwerkzugriff.
    Private Const OFN_NOTESTFILECREATE = &H10000
     
    ' Gibt im Dialog "Speichern" eine Warnmeldung aus, wenn die
    ' Datei bereits existiert und durch das Speichern
    ' überschrieben wird.
    Private Const OFN_OVERWRITEPROMPT = &H2&
     
    ' Gibt an, dass der Anwender nur die Namen von existierenden
    ' Verzeichnissen eingeben kann. Andernfalls wird eine
    ' Warnmeldung ausgegeben.
    Private Const OFN_PATHMUSTEXIST = &H800
     
    ' Gibt an, das das Kontrollkästchen "Nur Lesen" angekreuzt
    ' ist, wenn der Dialog angezeigt wird.
    Private Const OFN_READONLY = &H1
     
    ' Gibt an, dass die Funktion fehlschlägt, wenn ein
    ' Netzwerkfehler auftritt.
    Private Const OFN_SHAREAWARE = &H4000
     
    Private Const OFN_SHAREFALLTHROUGH = 2
    Private Const OFN_SHAREWARN = 0
    Private Const OFN_SHARENOWARN = 1
     
    ' Zeigt im Dialogfeld den Hilfe-Schalter an. hwndOwner muß auf
     
    ' ein Fenster zeigen, das die Hilfe anzeigen kann. Explorer-
    ' Dialoge senden die Nachricht CDN_HELP an die Rückruffunktion.
    Private Const OFN_SHOWHELP = &H10
     
    ' "Speichern unter"-Dialog anzeigen
    Private Sub Command1_Click()
      Dim Retval As Long
      Static OF As OPENFILENAME
     
      With OF
        .lStructSize = Len(OF)
        .hInstance = App.hInstance
        .hwndOwner = Me.hWnd
        .flags = OFN_FILEMUSTEXIST Or OFN_OVERWRITEPROMPT Or _
          OFN_EXPLORER Or OFN_ENABLEHOOK Or OFN_SHOWHELP
        .lpstrTitle = "Datei Speichern" & vbNullChar
        .lpstrFilter = "Textdatei" & vbNullChar & "*.txt" & _
          vbNullChar & "Word-Dokument" & vbNullChar & "*.doc" & _
          vbNullChar & vbNullChar
        .nFilterIndex = 1
        .lpstrFile = Space(256) & vbNullChar
        .nMaxFile = Len(.lpstrFile)
        .lpstrFileTitle = Space(256) & vbNullChar
        .nMaxFileTitle = Len(.lpstrFileTitle)
        .lpstrInitialDir = "C:\" & vbNullChar
      End With
      Retval = GetSaveFileName(OF)
     
      If Retval = 0 Then
        MsgBox "Fehler beim Öffnen des Dialoges oder Klick auf " & _
          "'Abbrechen'", vbInformation, "Fehler"
      Else
        Call FileCopy(Text1.Text, OF.lpstrFileTitle)
      End If
     
    End Sub
     
    Private Sub Form_Load()
      Text1.Text = "C:\Dokumente und Einstellungen\mmueller\Desktop\Sonstiges\testExport.txt"
    End Sub


    Leider wird auch hier der Ordner absolut gesperrt.

    Da ich genau nichts darüber bei Google finde, ist es auf jeden Fall kein alltägliches Problem, doch da es mit einem so kleinen Testprojekt nachvollziehbar ist, muss etwas allgemeines dahinter sein.
     

Ähnliche Themen

  1. Commondialog.showfont
    Von Squdus im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 12.09.07, 19:24
  2. Fehlermeldung bei CommonDialog
    Von Mailyn im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 10.04.07, 17:51
  3. CommonDialog frage...
    Von andy1337 im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 11.09.06, 17:31
  4. CommonDialog
    Von Xervek im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 05.02.06, 12:33
  5. CommonDialog Details
    Von TheLuCKer im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 07.09.04, 22:17