-
Notifications
You must be signed in to change notification settings - Fork 72
/
WinProps.ahk
82 lines (66 loc) · 3.38 KB
/
WinProps.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
Enumera todas las entradas en la lista de propiedades de una ventana.
Parámetros:
hWnd: El identificador de la ventana.
Return:
0 = La ventana especificada no existe.
[array] = Si tuvo éxito devuelve un Array de objetos. Cada objeto tiene las siguientes claves:
String = El componente de cadena de una entrada de lista de propiedades.
Data = El identificador a los datos. Este identificador es el componente de datos de una entrada de lista de propiedades.
Ejemplo:
For Each, Prop in EnumWindowProps(hWnd := WinExist('A'))
List .= Prop.String . ' [' . Prop.Data . ']`n'
MsgBox('Window ID: ' . hWnd . '`n`n' . List)
*/
EnumWindowProps(hWnd)
{
If (!DllCall('User32.dll\IsWindow', 'Ptr', hWnd))
Return (FALSE)
Local Data := {}
, pCallback := RegisterCallback('PropEnumProcEx')
DllCall('User32.dll\EnumPropsExW', 'Ptr', hWnd, 'UPtr', pCallback, 'UPtr', &Data)
DllCall('Kernel32.dll\GlobalFree', 'UPtr', pCallback, 'UPtr')
Return (Data)
} ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms633563(v=vs.85).aspx
PropEnumProcEx(hWnd, pString, hData, pData)
{
Object(pData).Push({String: StrGet(pString, 'UTF-16'), Data: hData})
Return (TRUE)
} ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms633566(v=vs.85).aspx
/*
Agrega una nueva entrada o cambia una entrada existente en la lista de propiedades de la ventana especificada. La función agrega una nueva entrada a la lista si la cadena de caracteres especificada no existe ya en la lista. La nueva entrada contiene la cadena y el identificador. De lo contrario, la función reemplaza el identificador actual de la cadena con el identificador especificado.
Parámetros:
hWnd : El identificador de la ventana.
String: Una cadena.
Data : Un identificador a los datos que se van a copiar a la lista de propiedades.
Return:
Si tuvo éxito devuelve 1, caso contrario devuelve 0.
*/
SetWindowProp(hWnd, String, Data := 0)
{
Return (DllCall('User32.dll\SetPropW', 'Ptr', hWnd, 'Str', String, 'Ptr', Data))
} ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms633568(v=vs.85).aspx
/*
Recupera un identificador de datos de la lista de propiedades de la ventana especificada.
Parámetros:
hWnd : El identificador de la ventana.
String: Una cadena.
Return:
Si la lista de propiedades contiene la cadena, el valor de retorno es el identificador de datos asociado. De lo contrario, el valor devuelto es 0.
*/
GetWindowProp(hWnd, String)
{
Return (DllCall('User32.dll\GetPropW', 'Ptr', hWnd, 'Str', String, 'Ptr'))
} ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms633564(v=vs.85).aspx
/*
Eliminar una entrada de la lista de propiedades de la ventana especificada. La cadena de caracteres especificada identifica la entrada que se va a eliminar.
Parámetros:
hWnd : El identificador de la ventana.
String: Una cadena.
Return:
El valor de retorno identifica los datos especificados. Si los datos no se pueden encontrar en la lista de propiedades especificada, el valor devuelto es 0.
*/
RemoveWindowProp(hWnd, String)
{
Return (DllCall('User32.dll\RemovePropW', 'Ptr', hWnd, 'Str', String, 'Ptr'))
} ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms633567(v=vs.85).aspx