Ich habe etwas rumgetestet und es wird immer eigenartiger.
Wenn in folgendem Code das EditorGadget aktiviert ist,
kann man mehrmals eine Datei auf dem Desktop mit 
aktiven Tooltips, ohne Absturz wählen.
Hat das Fenster aber kein EditorGadget, gibt´s nen Absturz.
 
 
Code: Alles auswählen
Enumeration
  #Window_0 = 1
EndEnumeration
;...OpenFileRequester constants
#CDN_INITDONE = #CDN_FIRST - 0
#CDN_SELCHANGE = #CDN_FIRST - 1
#CDN_FOLDERCHANGE = #CDN_FIRST - 2
#OFN_ENABLESIZING = $800000
#OFR_View_Report = $702C
#OFR_View_List = $702B
#OFR_View_Largeicon = $7029
#OFR_View_Thumbnail = $702D
#OFR_View_Thumbnail_2K = $7031
#OFR_View_Tile = $702E
Procedure.s GetOpenName(DialogTitle.s = "", InitialDir.s = "", Filter.s = "", DefaultExtension.s = "", flags.l = 0, hwndOwner.l = 0, ShowState = 0)
  ; Zeigt den Dialog "Datei öffnen" an und liefert
  ; den angegebenen Dateipfad zurück (bzw. einen leeren
  ; String bei Abbruch durch den Benutzer).
  Protected OFN.OPENFILENAME
  
  ; comdlg32 = OpenLibrary(0, "comdlg32.dll")
  ; FuncGetOpenFileName = GetFunction(0, "GetOpenFileNameA")
  
  With OFN
    ; Angabe der Größe der OPENFILENAME-Struktur
    \lStructSize = SizeOf(OPENFILENAME)
    
    ; Falls OS < Windows 2000, die letzten drei
    ; Mitglieder der Struktur ausnehmen:
    If OSVersion() <PB_OS_Windows_2000> 0
      \lpstrDefExt = @DefaultExtension
    EndIf
    
    ; Startverzeichnis des Dialogs
    If Len(InitialDir) > 0
      \lpstrInitialDir = @InitialDir
    EndIf
    
    ; Titel des Dialogs
    If Len(DialogTitle) > 0
      \lpstrTitle = @DialogTitle
    EndIf
    
    ; Eigenschaften des Dialogs
    If flags = 0
      \flags = #OFN_EXTENSIONDIFFERENT | #OFN_NOCHANGEDIR | #OFN_HIDEREADONLY | #OFN_EXPLORER | #OFN_ENABLESIZING
    Else
      \flags = flags | #OFN_EXPLORER
    EndIf
    
    ; Bei Bedarf den Dialog-Hook aktivieren:
    ; If ShowState <> List
    ; ShowStateValue = ShowState
    ; \flags = \flags | #OFN_ENABLEHOOK
    ; \lpfnHook = @OFNHookFunc();@OFNHookProc()
    ; EndIf
    
    ; Filter-Trennzeichen "|" in NullChar wandeln
    Filter + "||"
    l = Len(Filter)
    For n = 0 To l - 1
      If PeekB(@Filter + n) = Asc("|")
        PokeB(@Filter + n, $0)
      EndIf
    Next n
    \lpstrFilter = @Filter
    
  EndWith
  
  ; Aufruf und Auswertung von GetOpenFileName
  GetOpenFileName_(@OFN)
  ;Ergebnis = CallFunctionFast(FuncGetOpenFileName, @OFN)
  OpenName.s = PeekS(OFN\lpstrFile)
  
  ProcedureReturn OpenName
EndProcedure
;/===============================================
;/ Procedure - Main Window
;/===============================================
If OpenWindow(#Window_0, 0, 0, 520, 320, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar) And CreateGadgetList(WindowID(#Window_0))
  
  ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  ; kein Absturz bei Dateiauswahl auf     ;!!!
  ; Desktop mit aktiviertem EditorGadget  ;!!!
  ;EditorGadget(1, 10, 10, 500, 140)      ;!!!
  ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
  ButtonGadget(2,10,265,50,30,"open")
  StringGadget(3,10,155,500,100,"") 
  
  quit = #False
  ;/===============================================
  ;/ Main Event Loop
  ;/===============================================
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 2
            File$ = GetOpenName("titel", "", "xls|*.xls", "", #OFN_ALLOWMULTISELECT, WindowID(#Window_0))
            SetGadgetText(3,File$)
        EndSelect
      Case #PB_Event_CloseWindow
        quit = #True
    EndSelect
  Until quit
EndIf
End
Hat da jemand eine Erklärung dafür?