Udalosť zatvorenia priečinka   zodpovězená otázka

VB.NET, I/O operace

Je možné odchytiť udalosť zatvorenia určeného priečinka? Alebo ako zistím, či je priečinok otvorený?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Co je to priečinok?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Složka/y

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

'Správca úloh' ( v češtine nožno inak) vo Windows zobrazuje otvorené priečinky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vďaka za odpoveď Tomáš. Priečinok, zložka, folder... Potrebujem zistiť, že či je to otvorené. Exe subory zobrazí Process.GetProcess. Ak Ťa to neurazí, spýtal som sa na MSDN forum a odpoveď je podobná Tvojej.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

"Složka" používáme my, ale mě to zmátlo, protože v češtině nemáme ani žádné slovo, které by tomu bylo podobné, takže jsem fakt netušil.

Nevím, jestli tohle vůbec půjde - okno průzkumníka Windows je sice proces exporer.exe, ale ten běží i když žádné okno není otevřené a nevím, jestli se nějak z toho procesu dá zjistit, jaký adresář je v něm zrovna otevřený.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jo jo, ale my češi máme google překladač:

http://translate.google.cz/#auto/cs/prie...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No je to troška zložitejšie. Google prekladač sice preloží priečinok ako "složka", ale v skutočnosti je to "přepážka, přihrádka" :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevie niekto, prosím, či sa to dá riešiť pomocou API. Nejaký odkaz...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No na základe toho je to už jednoduché:

http://xkom.blogspot.sk/2011/06/get-open...

'Add reference /COM/Microsoft Shell Controls and Automation

Imports Shell32

 'and then copy this code to your project:

Public Class Form1
  Dim Lb As New ListBox
  Dim WithEvents RoutineTimer As New Timer
  Private Sub Form1_Load() Handles MyBase.Load
    Lb.Parent = Me
    Lb.Dock = DockStyle.Fill
    Me.Text = "Opened Folder by user (explorer)"
    RoutineTimer.Interval = 1000
    RoutineTimer.Start()
  End Sub
  Sub GetOpenedFolder()
    Dim MShell As New Shell
    Dim SFV As ShellFolderView
    Lb.Items.Clear()
    On Error Resume Next
    For Each o In MShell.Windows
      If TypeName(o.document) <> "HTMLDocument" Then
        SFV = o.document
        If SFV.Folder.Items.Count > 0 Then
          Lb.Items.Add(TrimPath(CType(SFV.Folder.Items(0), _
                       ShellFolderItem).Path))
        End If
      End If
    Next
  End Sub


  Sub Timer_Job() Handles RoutineTimer.Tick
    GetOpenedFolder()
  End Sub


  Function TrimPath(ByRef s As String) As String
    Return s.Remove(InStrRev(s, "\"))
  End Function
End Class


nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback