[ Zidar @ 22.01.2015. 16:21 ] @
Da li neko ima kod za zatvaranje foldera, nesto kao CloseFolder ("C:\MyFolder")

Moj problem je sledeci:
Imam hyperlink polje na datsheet formi. Kad god kliknem na hyperlink, otvori se nova instanca foldera - otvori se folder u novom prozoru. Ako ne pazim, mogu da imam 10 prozora koji svi pokazuju isti folder. Hteo bih da pre nego se hyperlink aktivira proverim da li je folder otvoren i ako jeste, da ga zatvorim. Ili bar da hyperlink ne otvara svaki put novi prozor sa istim folderom.

Nije mozgalica, stvarni problem :-(
[ captPicard @ 22.01.2015. 20:02 ] @
Pronašao sam ovo na netu (jest za .net, ali prevest češ već :) ):

Code:
Private Sub CloseExplorer(ByVal strTitle As String)
        Dim hWnd As IntPtr = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "CabinetWClass", Nothing)
        While Not hWnd.Equals(IntPtr.Zero)
            Dim sb As New StringBuilder(255)
            GetWindowTextW(hWnd, sb, 255)
            If sb.ToString.ToLower.Contains(strTitle.ToLower) Then PostMessageW(hWnd, WM_CLOSE, 0, 0)
            hWnd = FindWindowExW(IntPtr.Zero, hWnd, "CabinetWClass", Nothing)
        End While
    End Sub

CloseExplorer("My Special Documents") 'This is not case sensitive


Koristi ovo:

Code:
Imports System.Runtime.InteropServices
Imports System.Text


ne znam koja je referenca za vb u accessu (ako je uopće izvedivo na ovaj način).
[ captPicard @ 22.01.2015. 20:05 ] @
Evo i ovo, pa možda nešto od toga pomogne :)

Code:
myfolder = "C:\temp"
Set sh = CreateObject("shell.application")
For Each w In sh.Windows
    If w.document.folder.self.Path = myfolder Then w.Quit
Next
[ Zidar @ 22.01.2015. 21:51 ] @
Zahvaljujem Ono prvo je da zatvori Windows Explorer, to sam video ali nisam jos probao. Ono drugo mi je interesantnije:

myfolder = "C:\temp"
Set sh = CreateObject("shell.application")
For Each w In sh.Windows
If w.document.folder.self.Path = myfolder Then w.Quit
Next

U svakom slucaju, veliko hvala, probacu pa cu podneti izvestaj.

[ captPicard @ 23.01.2015. 11:21 ] @
Da, nisam skužio da je prva za explorer.

Evo još jedne, opet .net

Code:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
     
    Private Const WM_CLOSE = &H10
     
    Private Sub cmdCloseApp_Click()
    Dim CloseIt As Long
    CloseIt = FindWindow(vbNullString, "Caption Of Window To Be Closed")
    PostMessage CloseIt, WM_CLOSE, CLng(0), CLng(0)
    End Sub


Ako ne upali niti jedno, uvijek možeš naći handle prozora po captionu i onda sa API-em ga zatvoriti. Ako ne bude proradilo niti jedno od ovoga javi, pa ćemo pronaći rješenje
[ Zidar @ 23.01.2015. 21:25 ] @
Kapetane, veliko hvala. Nisam imao vremena da isprobam, uradicu to iza vikenda. Javim rezultate cim nesto imam. U svakom slucaju, veliko hvala.