Abfrage ob ein Ordner geöffnet wurde

Anfängerfragen zum Programmieren mit PureBasic.
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Abfrage ob ein Ordner geöffnet wurde

Beitrag von TheNewOne »

Hallöchen,
ich wollte mal fragen, ob es irgendwie möglich ist, eine Abfrage einzurichten, die reagiert wenn man einen bestimmten Ordner öffnet.
Win7, 64bit, PB 4.60
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von RSBasic »

Meinst du, du möchtest wissen, ob ein bestimmter Ordner im Windows Explorer offen ist?
http://www.rsbasic.de/aktualisierung/wi ... %20sind.pb
Das kannst du dann regelmäßig abfragen und wenn ein bestimmter Ordner in der zurückgegebenen Liste vorhanden ist, dann kannst du darauf reagieren.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von TheNewOne »

hmm, bei mir zeigt es in dem Fenster das der Code öffnen nichts an.
Win7, 64bit, PB 4.60
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von DrShrek »

Funktioniert nich mit Win7 64bit
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von RSBasic »

Hm, keine Ahnung. Welches OS und welche PB Version?
Ich habe hier unter Win 7 x64 mit PB 5.00 B2 x86 sowie x64 getestet und funktioniert einwandfrei.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von TheNewOne »

hmmm, ...
ich habe win7 64bit pb4.60 und bei mir funktioniert es nicht.

Edit: Es funktioniert doch! Ich habe nur beim ersten mal die Ordner geöffnet nachdem ich auf OK gedrückt habe.
Win7, 64bit, PB 4.60
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von TheNewOne »

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?
Win7, 64bit, PB 4.60
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von RSBasic »

Du kannst das doch selber mit einem Timer oder Thread regelmäßig abfragen, wo liegt das Problem?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von TheNewOne »

Das Problem ist, dass es bei mir nicht funktioniert...
Ich poste mal meinen Code, vielleicht findet ja jemand meinen/meine Fehler.

Code: Alles auswählen

Global start.i
Global ende.i
Global mindest.i
mindest = 2000

Structure tFolderWindow
   hWnd     .i [ $FF ]
   sTitle   .s [ $FF ]
   nEntries .i
   nCurrent .i
EndStructure

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

If OpenWindow(0, 650, 150, 500, 500, "Offene Fenster")
  ListViewGadget(0,2,2,400,500)
  Define.tFolderWindow *FolderWindow

    again:
    ClearGadgetItems(0)
    If ExamineFolderWindows()
      Repeat
        *FolderWindow = NextFolderWindow()
        If *FolderWindow
          AddGadgetItem(0, -1,*FolderWindow\sTitle+Chr(10)+Str(*FolderWindow\hWnd))
        EndIf     
      Until Not *FolderWindow
    EndIf
    start = ElapsedMilliseconds()
    pos1:
    ende = ElapsedMilliseconds()
    If ende - start < mindest
      Delay(1)
      Goto pos1
    Else
      Goto again
    EndIf
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
    
EndIf
Win7, 64bit, PB 4.60
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Abfrage ob ein Ordner geöffnet wurde

Beitrag von RSBasic »

Mir sind zufällig drei Punkte aufgefallen:
1. Bitte keine Gotos verwenden
2. Auch Keine Delays in Events
3. EnableExplicit

Schau mal in der PB-Hilfe unter "AddWindowTimer()". Damit kannst du zeitgesteuert deine Vorgänge durchführen lassen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten