Página 1 de 1

Automatización de Windows

NotaPublicado: Vie Jul 04, 2014 12:08 am
por PowerDeath
Código Optimizado y nuevas funciones agregadas.
Si se utiliza bien, no tiene ningún tipo de limitación. semejante a AutoitScript.
El uso de esta librería es incluso mas fácil.

  • Código fuente optimizado Y corregido
  • Funcional con las librerías por defecto de Pauscal
    • Anteriormente solo funcionaba con Pauscal.prp
  • Nuevas funciones agregadas
    • ControlClic
    • ControlEnviar
    • ControlRecibir
    • ControlHabilitar
    • ControlDeshabilitar
    • ClicIzquierdo
    • ClicDerecho
    • ClicCentral
    • ControlBuscar
Nota: Los parámetros de estas funciones fueron agregadas al re-saltador para RJ TextEditor.

Código: Seleccionar todo
Importar "Cadena.prp"
Importar "Declare.prp"

Const ForzarMinimizado = 11,MinimizadoForzado = 11
Const Escondido = 0,Escondida = 0,Oculto = 0,Esconder = 0
Const Maximizado = 3,Maximizada = 3,Maximizar = 3
Const Minimizado = 6,Minimizada = 6,Minimizar = 6
Const Restaurar = 9,Restaurado = 9,Restaurada = 9
Const Mostrar = 5,Visible = 5
Const DefectoVisible = 10,VisibleDefecto = 10
Const MostrarMaximizado = 3,MostrarMaximizada = 3,MaximizadoMostrar = 3,MaximizadaMostrar = 3
Const MostrarMinimzado = 2,MostrarMinimizada = 2,MinimizadoMostrar = 2,MinimizadaMostrar = 2
Const Normal = 1,Comun = 1
Const DesHabilitada = 12,DesHabilitado = 12,VentanaDesHabilitada = 12,VentanaDesHabilitado = 12,DesHabilitar = 12
Const Habilitada = 13,Habilitado = 13,Habilitar = 13,VentanaHabilitada = 13,HabilitarVentana = 13
Const Invertir = 14,Invertido = 14,Invertida = 14
Const Activar = &00020000,Activada = &00020000,Activado = &00020000,ActivarVentana = &00020000,VentanaActivada = &00020000,VentanaActivado = &00020000
Const Mezclar = &00080000,Mezcla = &00080000,Mezclado = &00080000,VentanaMezclar = &00080000,MezclarVentana = &00080000,VentanaMezclado = &00080000
Const Centrar = &15,Centrado = &15,Centrada = &15,VenanaCentrar = &15,VentanaCentrada = &15,VentanaCentrado = &15,CentrarVentana = &15,CentradoVentana = &15,CentradaVentana = &15

Privado:
Var h_ControlF:Entero
Const WM_GETTEXT = &000D
Const BM_CLICK = &00F5
Const WM_SETTEXT = &000C
Const VK_LWIN = &5B
Const KEYEVENTF_KEYUP = &2
Estruc POINTAPI,X,Y:Entero
Estruc LPRECT,Left,Top,Right,Bottom:Entero
Estruc MOUSEINPUT,Dx,Dy,MouseData,dwFlags,Time,dwExtraInfo:EnteroSig
Estruc KEYBOARDINPUT,wVk,wScan,dwFlags,time,dwExtraInfo:EnteroSig
Estruc HARDWAREINPUT, uMsg,wParamL,wParamH:EnteroSig
Unión Mikihi, Mi:MOUSEINPUT,KI:KEYBOARDINPUT,hi:HARDWAREINPUT
Estruc INPUT,Tipo:Entero,Union:Mikihi


'Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
' ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Proc keybd_event(bVk,bScan:Byte,dwFlags,dwExtraInfo:Entero), "User32.dll"
Proc GetCursorPos(Referencia :POINTAPI):Entero, "User32.dll"
Proc SetCursorPos(,:Entero):Booleano, "User32.dll"
Proc ShowCursor(:Booleano):Entero, "User32.dll"
Proc SwapMouseButton(:Booleano):Booleano, "User32.dll"
Proc BlockInput(:Booleano):Booleano, "User32.dll"
Proc FindWindow(Referencia ,:Cadena):Entero, "User32.dll" "FindWindowA"
Proc GetWindowTextLength(:Entero):EnteroSig, "User32.dll" "GetWindowTextLengthA"
Proc GetWindowText(:Entero,Referencia :Cadena,:Entero):Entero, "User32.dll" "GetWindowTextA"
Proc WindowFromPoint(,:Entero):Entero, "User32.dll"
Proc GetClassName(:Entero,Referencia :Cadena,:Entero):Entero, "User32.dll" "GetClassNameA"
Proc SetWindowText(:Entero,:Cadena):Booleano, "User32.dll" "SetWindowTextA"
Proc SetActiveWindow(:Entero):Entero, "User32.dll"
Proc EnableWindow(:Entero,:Booleano):Booleano, "User32.dll"
Proc MoveWindow(,,,,:Entero,:Booleano):Booleano, "User32.dll"
Proc GetWindowRect(:Entero,Referencia :LPRECT):Booleano, "User32.dll"
Proc ShowWindow(,:Entero):Booleano, "User32.dll"
Proc DestroyWindow(:Entero):Booleano, "User32.dll"
Proc IsWindow(:Entero):Booleano, "User32.dll"
Proc IsWindowEnabled(:Entero):Booleano, "User32.dll"
Proc IsWindowVisible(:Entero):Booleano, "User32.dll"
Proc IsWindowUnicode(:Entero):Booleano, "User32.dll"
Proc GetWindowThreadProcessId(:Entero,Opcional llpdwProcssId:Entero = 0):Entero, "User32.dll"
Proc SendMessage(,,:Entero,:EnteroSig):Entero, "User32.dll" "SendMessageA"
Proc GetDesktopWindow():Entero, "User32.dll"
Proc SendInput(,,:Entero):Entero,  "User32.dll"
Proc FindWindowEx(hwndParent,hwndChildAfter:Entero,lpszClass,lpszWindow:Cadena):Entero, "User32.dll" "FindWindowExA"
Proc InternetGetConnectedState(IpdwFlags,dwReserved:Entero):Entero, "wininet.dll"
Público:

Proc VentanaActiva:Entero
Resultado = GetActiveWindow()
FinProc

Proc VentanaBuscar(Titulo:Cadena,Opcional ClaseTitulo:Cadena = ""):Entero
   Resultado = FindWindow(ClaseTitulo,Titulo)
FinProc

Proc VentanaMover(TituloVentana:Cadena,X,Y:Entero,Opcional nWidht,nHeight,HWND:Entero = 0,Opcional bRepaint:Booleano = Verd):Booleano
Var Matriz[]:Entero
      Matriz = VentanaDimención("",>HWND?HWND:VentanaBuscar(TituloVentana))
      Resultado = MoveWindow(>HWND?HWND:VentanaBuscar(TituloVentana),X,Y,>nWidht?nWidht:Matriz[3] - Matriz[0],>nHeight?nHeight:Matriz[4] - Matriz[2],bRepaint)
FinProc

Proc VentanObtenerTitulo(HWND:Entero):Cadena
Var Variable:Cadena,WinTXT,Longi:Entero
Longi = GetWindowTextLength(HWND)
Variable = RepCarac(0,Longi)
WinTXT = GetWindowText(HWND,Variable,Longi + 1)
Variable = IzquierdaCad(Variable,WinTXT)
Si CadLong(Variable) Devolver Variable
FinProc

Proc VentanObtenerTituloClase(HWND:Entero):Cadena
Var Variable:Cadena,WinTXT,Longi:Entero
Longi = GetWindowTextLength(HWND)
Variable = RepCarac(0,Longi)
WinTXT = GetClassName(HWND,Variable,Longi + 1)
Variable = IzquierdaCad(Variable,WinTXT)
Si CadLong(Variable) Devolver Variable
FinProc

Proc MousePosición:Entero[]
Var Variable:POINTAPI
Var Matriz[],Check:Entero
ReDim Matriz,2
   Check = GetCursorPos(Variable)
Si Check = 0 Entonces
   Matriz[0] = 0
   Matriz[1] = 0
   Resultado = Matriz
SiNo
   Matriz[0] = Variable.X
   Matriz[1] = Variable.Y
   Resultado = Matriz
FinSi
FinProc

Proc MouseMover(X,Y:EnteroSig):Booleano
Si X < 0 Entonces X = 0
Si Y < 0 Entonces Y = 0
Resultado = SetCursorPos(X,Y)
FinProc

Proc MouseVisible(Estado:Booleano):Entero
   Resultado = ShowCursor(Estado)
FinProc

Proc MouseInvertir(Estado:Booleano):Booleano
   Resultado = SwapMouseButton(Estado)
FinProc

Proc Bloq(Estado:Booleano):Booleano
   Resultado = BlockInput(Estado)
FinProc

Proc MousePuntero(X,Y:Entero):Entero
   Resultado = WindowFromPoint(X,Y)
FinProc

Proc VentanaTítulo(TituloVentana,Titulo:Cadena,Opcional HWND:Entero = 0):Booleano
   Resultado = SetWindowText(>HWND?HWND:VentanaBuscar(TituloVentana),Titulo)
FinProc

Proc VentanaActivar(TituloVentana:Cadena, Opcional HWND:Entero = 0):Entero
Resultado = SetActiveWindow(>HWND?HWND:VentanaBuscar(TituloVentana))
FinProc

Proc VentanaHabilitar(TituloVentana:Cadena,Opcional Estado:Booleano = Verd, Opcional HWND:Entero = 0)
EnableWindow(>HWND?HWND:VentanaBuscar(TituloVentana),Estado)
FinProc

Proc VentanaDimención(TituloVentana:Cadena, Opcional HWND:Entero):Entero[]
   Var Variable:LPRECT
   Var Matriz[],Check:Entero
   ReDim Matriz,4
   Check = GetWindowRect(>HWND?HWND:VentanaBuscar(TituloVentana),Variable)
   Si Check <> 0 Entonces
      Matriz[0] = Variable.Left
      Matriz[1] = Variable.Top
      Matriz[2] = Variable.Right
      Matriz[3] = Variable.Bottom
      Resultado = Matriz
   SiNo
      Matriz[0] = 0
      Matriz[1] = 0
      Matriz[2] = 0
      Matriz[3] = 0
      Resultado = Matriz
   FinSi
FinProc

Proc VentanaEstado(TituloVentana:Cadena,Estado:Entero, Opcional HWND:Entero = 0):Booleano
   Resultado = ShowWindow(>HWND?HWND:VentanaBuscar(TituloVentana),Estado)
FinProc

Proc VentanObtenerTituloLong(HWND:Entero):Entero
   Resultado = GetWindowTextLength(HWND)
FinProc

Proc VentEs(TituloVentana:Cadena,Opcional Tipo:Byte = 0,Opcional HWND:Entero = 0):Booleano
   Si Tipo = 0 Entonces Devolver IsWindow(>HWND?HWND:VentanaBuscar(TituloVentana))
   Si Tipo = 1 Entonces Devolver IsWindowEnabled(>HWND?HWND:VentanaBuscar(TituloVentana))
   Si Tipo = 2 Entonces Devolver IsWindowVisible(>HWND?HWND:VentanaBuscar(TituloVentana))
   Si Tipo = 3 Entonces Devolver IsWindowUnicode(>HWND?HWND:VentanaBuscar(TituloVentana))
FinProc

Proc PantallaApagar(Opcional Estado:Booleano = Verd):Booleano
Var DeskTop:Entero
DeskTop = VentanaBuscar("Program Manager","Progman")
SendMessage(DeskTop,274,61808,>Estado?2:-1)
FinProc

Proc ControlBuscar(VentanaPadre,TituloControl:Cadena,Opcional ClaseVentanaPadre,ClaseControl:Cadena = "",Opcional hwndPadre:Entero = 0):Entero
Resultado = FindWindowEx(>hwndPadre?hwndPadre:VentanaBuscar(VentanaPadre),0,ClaseVentanaPadre,TituloControl)
h_ControlF = Resultado
FinProc

Proc ControlClic(Opcional Puntero:Entero,Opcional Cantidad:Entero = 1,Opcional Tiempo:Entero = 0)
Var i:Entero
Contar i = 1 a Cantidad
      SendMessage(>Puntero?Puntero:h_ControlF,BM_CLICK,0,0)
      Sleep(Tiempo)
Seguir
FinProc

Proc ControlEnviar(Texto:Cadena,Opcional Puntero:Entero,Opcional Cantidad:Entero = 1,Opcional Tiempo:Entero = 0)
Var i:Entero
Contar i = 1 a Cantidad
       SendMessage(>Puntero?Puntero:h_ControlF,WM_SETTEXT,0,CadPtr(Texto))
       Sleep(Tiempo)
Seguir
FinProc

Proc ControlRecibir(Puntero:Entero,Opcional Longitud:Entero = 50,Opcional Cantidad:Entero = 1,Opcional Tiempo:Entero = 0):Cadena
Var i:Entero,Texto:Cadena
Texto = RepCarac(0,Longitud)
Contar i = 1 a Cantidad
       SendMessage(>Puntero?Puntero:h_ControlF,WM_GETTEXT,Longitud,CadPtr(Texto))
       Sleep(Tiempo)
Seguir
Devolver Texto
FinProc

Proc ControlHabilitar(Opcional Puntero:Entero)
     EnableWindow(>Puntero?Puntero:h_ControlF,Verd)
FinProc

Proc ControlDeshabilitar(Opcional Puntero:Entero)
     EnableWindow(>Puntero?Puntero:h_ControlF,Falso)
FinProc

Proc ClicIzquierdo(Opcional Cantidad:Entero = 1,Opcional Velocidad:Entero = 0)
Var Send:INPUT,i:Entero
Send.Tipo = 0
Send.Union.mi.dx = 0
Send.Union.mi.dy = 0
Contar i = 1 a Cantidad
Send.Union.mi.dwFlags = &0002
   SendInput(1,Send@,Long(Send))
Send.Union.mi.dwFlags = &0004
   SendInput(1,Send@,Long(Send))
Sleep(Velocidad)
Seguir
FinProc

Proc ClicDerecho(Opcional Cantidad:Entero = 1,Opcional Velocidad:Entero = 0)
Var Send:INPUT,i:Entero
Send.Tipo = 0
Send.Union.mi.dx = 0
Send.Union.mi.dy = 0
Contar i = 1 a Cantidad
Send.Union.mi.dwFlags = &0008
   SendInput(1,Send@,Long(Send))
Send.Union.mi.dwFlags = &0010
   SendInput(1,Send@,Long(Send))
Sleep(Velocidad)
Seguir
FinProc

Proc ClicCentral(Opcional Cantidad:Entero = 1,Opcional Velocidad:Entero = 0)
Var Send:INPUT,i:Entero
Send.Tipo = 0
Send.Union.mi.dx = 0
Send.Union.mi.dy = 0
Contar i = 1 a Cantidad
Send.Union.mi.dwFlags = &0020
   SendInput(1,Send@,Long(Send))
Send.Union.mi.dwFlags = &0040
   SendInput(1,Send@,Long(Send))
Sleep(Velocidad)
Seguir
FinProc

Proc MinimisarVentanas():Booleano
keybd_event(VK_LWIN, 0, 0, 0)
keybd_event(&4D, 0, 0, 0)
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
FinProc

Proc ConexiónInternet:Booleano
Resultado = InternetGetConnectedState(&0,&0)
FinProc