-
Notifications
You must be signed in to change notification settings - Fork 72
/
ExploreDir.ahk
66 lines (46 loc) · 2.21 KB
/
ExploreDir.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
Abre un directorio mediante la línea de comandos del explorador de archivos de Windows.
Parámetros:
DirName: La ruta al directorio.
Return:
Si tuvo éxito devuelve el identificador del proceso de la ventana, caso contrario devuelve 0.
*/
ExploreDir(DirName)
{
Local PID
DirName := (StrLen(DirName) < 4 ? SubStr(DirName, 1, 1) . ':' : RTrim(DirName, '\'))
If (!DirExist(DirName))
Return (FALSE)
Run(A_WinDir . '\explorer.exe ' . Chr(34) . DirName . Chr(34), A_WinDir, 'Max', PID)
Return (PID)
} ;https://msdn.microsoft.com/en-us/library/windows/desktop/bb773581(v=vs.85).aspx
/* IGNORAR ESTO IGNORAR ESTO
if (DirName == -2)
{
DllCall('User32.dll\ShowWindow', 'Ptr', NewWindow, 'UInt', 8)
DllCall('User32.dll\ShowWindow', 'Ptr', NewWindow, 'UInt', 3)
WinActivate('ahk_id ' . NewWindow)
Return (WinGetPID('ahk_id ' . NewWindow))
}
If (!NewWindow)
{
VarSetCapacity(PATH, 32767 * 2, 0)
For Each, hWnd In WinGetList('ahk_exe ' . A_WinDir . '\explorer.exe')
{
ClassName := WinGetClass('ahk_id' . (hWnd+=0))
If ((ClassName = 'Progman' || ClassName = 'WorkerW') && DirName = A_Desktop)
}
}
for Each, hWnd in WinGetList('ahk_exe ' . A_WinDir . '\explorer.exe')
{
ClassName := WinGetClass('ahk_id ' . (hWnd:=hWnd+0))
if ((ClassName = 'Progman' || ClassName = 'WorkerW') && (A_Desktop = DirName))
Return (ExploreDir(-2, hWnd))
if (ClassName = 'CabinetWClass' || ClassName = 'ExploreWClass')
for Window in ComObjCreate('Shell.Application').Windows
if (Window.hWnd = hWnd && (URL:=Window.LocationURL) != '') ; si LocationURL='' puede que sea 'Equipo' o una biblioteca.
if (DllCall('Shlwapi.dll\PathCreateFromUrlW', 'Ptr', &URL, 'Str', PATH, 'UIntP', 32767, 'UInt', 0) == FALSE && RTrim(PATH, '\') = DirName)
Return (ExploreDir(-2, hWnd))
}
NewWindow: Determina si se debe abrir siempre una nueva ventana. Por defecto, si ya hay una ventana con DirName, trae ésta al frente.
*/