Re: Abfrage ob ein Ordner geöffnet wurde
Verfasst: 20.09.2012 10:51
Suchst Du nicht eher sowas: ReadDirectoryChanges?
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Ansonsten mal abwarten, was er sagt. Vielleicht meint er doch was Anderes.TheNewOne hat geschrieben:Ist es möglich, dass man die Abfrage die ganze Zeit aktualisiert, so dass der name des Fensters angezeigt wird, sobald es geöffnet wird?
Danke, aber nein. Mit dem Code kann man ja nicht sehen ob ein Ordner nur geöffnet wurde.ts-soft hat geschrieben:Suchst Du nicht eher sowas: ReadDirectoryChanges?
Code: Alles auswählen
EnableExplicit
Define EventID
Structure tFolderWindow
hWnd .i [ $FF ]
sTitle .s [ $FF ]
nEntries .i
nCurrent .i
EndStructure
Define.tFolderWindow *FolderWindow
Define FolderWindows.tFolderWindow
Procedure.i _ExamineFolderProc ( hWnd.i , *FolderWindows.tFolderWindow )
Protected sClassName .s = Space ( $FF )
Protected sWindowName.s
GetClassName_( hWnd , @ sClassName , $FF )
If sClassName = "CabinetWClass"
sWindowName = Space ( $FF )
GetWindowText_( hWnd , @ sWindowName , $FF )
*FolderWindows\hWnd [ *FolderWindows\nEntries ] = hWnd
*FolderWindows\sTitle [ *FolderWindows\nEntries ] = sWindowName
*FolderWindows\nEntries + 1
EndIf
ProcedureReturn #True
EndProcedure
Procedure ExamineFolderWindows ()
Shared FolderWindows.tFolderWindow
FolderWindows\nEntries = 0
FolderWindows\nCurrent = 0
ProcedureReturn EnumWindows_( @ _ExamineFolderProc () , FolderWindows )
EndProcedure
Procedure NextFolderWindow ()
Shared FolderWindows.tFolderWindow
Static Current .tFolderWindow
If FolderWindows\nCurrent => FolderWindows\nEntries
ProcedureReturn #Null
EndIf
Current\hWnd = FolderWindows\hWnd [ FolderWindows\nCurrent ]
Current\sTitle = FolderWindows\sTitle [ FolderWindows\nCurrent ]
FolderWindows\nCurrent + 1
ProcedureReturn Current
EndProcedure
Procedure GetExplorerFolderList()
Protected.tFolderWindow *FolderWindow
ClearGadgetItems(1)
If ExamineFolderWindows()
Repeat
*FolderWindow = NextFolderWindow()
If *FolderWindow
AddGadgetItem(1,-1,*FolderWindow\sTitle+Chr(10)+Str(*FolderWindow\hWnd),0,0)
EndIf
Until Not *FolderWindow
EndIf
Debug "Aktualisiert."
EndProcedure
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(1,10,10,480,380,"Titel",200,0)
AddGadgetColumn(1,1,"Handle",200)
AddWindowTimer(0, 123, 500)
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_Timer And EventTimer() = 123
GetExplorerFolderList()
EndIf
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Deswegen ja meine Nachfrage. Es wurde ja nicht gesagt, wofür das ganze nötig ist und eine ÜberwachungRSBasic hat geschrieben:Ansonsten mal abwarten, was er sagt. Vielleicht meint er doch was Anderes.