como ponerle direccion a unos botones

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

como ponerle direccion a unos botones

Mensaje por mikeeps2 »

amigo tengo este script que es de trafico google mapa ,pero no se como darle funciones a los botones que hice en la parte de abajo , el script lleva un Google Map.html

yo encontre en el api los botones esos , bueno eso creo pero no se como agregarlos en el script , me pudieran ayudar

Código: Seleccionar todo

; *******************************************************
; SCRIPT PARA ABRIR GOOGLE TRAFFICO
;               
;               
; *******************************************************



#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

_IEErrorHandlerRegister()

Local $oIE = _IECreateEmbedded()
GUICreate("CAMERA DVR", 810, 580, _
		(@DesktopWidth - 840) / 2, (@DesktopHeight - 580) / 2, _
		$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
GUICtrlCreateObj($oIE, 0, 0, 820, 450)


Local $GUI_Button_Zoom_in = GUICtrlCreateButton("Zoom in", 10, 500, 100, 30)
Local $GUI_Button_Zoom_out = GUICtrlCreateButton("Zoom out", 120, 500, 100, 30)
Local $GUI_Button_Left = GUICtrlCreateButton("Left", 230, 500, 100, 30)
Local $GUI_Button_Right = GUICtrlCreateButton("Right", 340, 500, 100, 30)
Local $GUI_Button_Down = GUICtrlCreateButton("Down", 280, 540, 100, 30)
Local $GUI_Button_Up = GUICtrlCreateButton("Up", 280, 460, 100, 30)

GUISetState() ;Show GUI

_IENavigate($oIE, @ScriptDir & "\Google Map.html")



; Waiting for user to close the window
While 1
	Local $msg = GUIGetMsg()
	Select
	Case $msg = $GUI_EVENT_CLOSE
	   
	   ExitLoop
	    Case $msg = $GUI_Button_Zoom_in
           _IEAction($oIE, "Zoom in")
		Case $msg = $GUI_Button_Zoom_out
           _IEAction($oIE, "Zoom out")
		Case $msg = $GUI_Button_Left
          _IEAction($oIE, "Left")   
		Case $msg = $GUI_Button_Right
           _IEAction($oIE, "Right")
		Case $msg = $GUI_Button_Down
          _IEAction($oIE, "Down")   
		Case $msg = $GUI_Button_Up
          _IEAction($oIE, "Up")     
		   
		   
			
	EndSelect
WEnd

GUIDelete()

Exit

y este es el html

Código: Seleccionar todo

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
 
<title>Google Maps Embedded</title>
 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false""></script>

<script type="text/javascript">
var initialize = function() {
 
  // Latitude and Longitude
  var latlng = new google.maps.LatLng(25.8647,-80.3247);
   
  // Just some option
  var options = { zoom: 12,
                  center: latlng,
                  mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                 
  // Map object
  var map = new google.maps.Map(document.getElementById('map'), options);
var trafficLayer = new google.maps.TrafficLayer();
  trafficLayer.setMap(map);

}
 
window.onload = initialize;
</script>
 
</head>
<body style="margin:0; padding:0;">
<div id="map" style="width:100%; height:100%"></div>
</body>
</html>


el tiene ya el zoom directo pero quisiera tener la option por lo botones , de moverlo el mapa y el zoom

muchas gracias
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: como ponerle direccion a unos botones

Mensaje por BasicOs »

Hola se me ocurre que una vez que tienes como ventana activa (WinActivate) la ventana del mapa, puedes enviar send() con teclas rápidas que son estas que dices. por ejemplo al enviar las téclas + - se activa el zoom. En ultimo caso aunque no es perfecto puedes hacer un MouseClick() MouseMove() para hacer funciones con el ratón.
Cualquier cosa comenta como lo llevas.
Salu22:)
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

hola gracias por sacarme ded la duda , busque y si la opcion de mouseclick , me funciono , lo hice asi

Case $msg = $GUI_Button_Zoom_in
_IEAction($oIE, "Zoom in")
MouseClick("primary", 140, 280, 1,0)

Case $msg = $GUI_Button_Zoom_out
_IEAction($oIE, "Zoom out")
MouseClick("primary", 140, 480, 1,0)

Case $msg = $GUI_Button_Left
_IEAction($oIE, "Left")
MouseClick("primary", 125, 170, 1,0)
Case $msg = $GUI_Button_Right
_IEAction($oIE, "Right")
MouseClick("primary", 160, 170, 1,0)
Case $msg = $GUI_Button_Down
_IEAction($oIE, "Down")
MouseClick("primary", 140, 190, 1,0)
Case $msg = $GUI_Button_Up
_IEAction($oIE, "Up")
MouseClick("primary", 140, 150, 1,0)


lo que queria provar la option que me dices de send - , send + para el zoom pero no me sale , lo que puse fue asi



Case $msg = $GUI_Button_Zoom_in
_IEAction($oIE, "Zoom in")
Send("{-}")
Case $msg = $GUI_Button_Zoom_out
_IEAction($oIE, "Zoom out")
Send("{+}")

pero no , no me salio , no se si faltaria algo o lo puse en el lugar equivocado


en el de mouseclick , me funciono , pero bueno tampoco se si le falta algo , o esta e el lugar adecuado

gracias por todo


otra cocita , en el script cuando ejecuto algun boton de estos , me sale esto

--> IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidValue (Invalid Action)
--> IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidValue (Invalid Action)
--> IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidValue (Invalid Action)
--> IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidValue (Invalid Action)

sera que falta algo o algo esta mal
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: como ponerle direccion a unos botones

Mensaje por BasicOs »

Hola mientras te funcione bien ya está ok. Más adelante siempre puedes mejorar detalles.

Debería funcionar si el foco está dentro del mapa. Igual tienes que hacer un click antes del send +.
Tambien puedes usar el MouseWheel() para mover la rueda que también hace el zoom. :smt017 :smt017

Si tienes el código final por fa publicalo para echarle un vistazo.
Salu22:)
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

bueno hice las dos maneras a ver cual trabaje mejor , las pondre las dos

esta es con send key

Código: Seleccionar todo

; *******************************************************
; SCRIPT PARA ABRIR GOOGLE TRAFFICO
;               
;               
; *******************************************************



#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

_IEErrorHandlerRegister()

Local $oIE = _IECreateEmbedded()
GUICreate("GOOGLE TRAFFIC", 810, 580, _
		(@DesktopWidth - 1020) / 2, (@DesktopHeight - 665) / 2, _
		$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
GUICtrlCreateObj($oIE, 0, 0, 820, 450)
WinWait("GOOGLE TRAFFIC")
WinMove("GOOGLE TRAFFIC", "", 0, 60, 800, 600)



Local $GUI_Button_Zoom_in = GUICtrlCreateButton("Zoom in", 10, 500, 100, 30)
Local $GUI_Button_Zoom_out = GUICtrlCreateButton("Zoom out", 120, 500, 100, 30)
Local $GUI_Button_Left = GUICtrlCreateButton("Left", 230, 500, 100, 30)
Local $GUI_Button_Right = GUICtrlCreateButton("Right", 340, 500, 100, 30)
Local $GUI_Button_Down = GUICtrlCreateButton("Down", 280, 540, 100, 30)
Local $GUI_Button_Up = GUICtrlCreateButton("Up", 280, 460, 100, 30)



GUISetState() ;Show GUI

_IENavigate($oIE, @ScriptDir & "\google map.html")










; Waiting for user to close the window
While 1
	Local $msg = GUIGetMsg()
	Select
	Case $msg = $GUI_EVENT_CLOSE
	   
	   ExitLoop
	    Case $msg = $GUI_Button_Zoom_in
           _IEAction($oIE, "Zoom in")
		  ;MouseClick("primary", 50, 240, 1,0)          
		  
		  Send("{-}") 
		  
		  
		Case $msg = $GUI_Button_Zoom_out
           _IEAction($oIE, "Zoom out")
		  ;MouseClick("primary", 50, 440, 1,0) 
		  Send("{+}") 
		  
		  
		Case $msg = $GUI_Button_Left
          _IEAction($oIE, "Left") 
		  ;MouseClick("primary", 35, 140, 1,0)
		  Send("{LEFT}")
		  
		Case $msg = $GUI_Button_Right
           _IEAction($oIE, "Right")
		  ;MouseClick("primary", 60, 140, 1,0) 
		  
		  Send("{RIGHT}")
		Case $msg = $GUI_Button_Down
          _IEAction($oIE, "Down") 
		  ;MouseClick("primary", 50, 150, 1,0)
		  
		  Send("{DOWN}")
		  
		Case $msg = $GUI_Button_Up
          _IEAction($oIE, "Up")     
		 ;MouseClick("primary", 50, 120, 1,0)  
		  Send("{UP}") 
			
	EndSelect
WEnd

GUIDelete()

Exit


y esta en con mouseclick

Código: Seleccionar todo

; *******************************************************
; SCRIPT PARA ABRIR GOOGLE TRAFFICO
;               
;               
; *******************************************************



#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

_IEErrorHandlerRegister()

Local $oIE = _IECreateEmbedded()
GUICreate("GOOGLE TRAFFIC", 810, 580, _
		(@DesktopWidth - 1020) / 2, (@DesktopHeight - 665) / 2, _
		$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
GUICtrlCreateObj($oIE, 0, 0, 820, 450)
WinWait("GOOGLE TRAFFIC")
WinMove("GOOGLE TRAFFIC", "", 0, 60, 800, 600)



Local $GUI_Button_Zoom_in = GUICtrlCreateButton("Zoom in", 10, 500, 100, 30)
Local $GUI_Button_Zoom_out = GUICtrlCreateButton("Zoom out", 120, 500, 100, 30)
Local $GUI_Button_Left = GUICtrlCreateButton("Left", 230, 500, 100, 30)
Local $GUI_Button_Right = GUICtrlCreateButton("Right", 340, 500, 100, 30)
Local $GUI_Button_Down = GUICtrlCreateButton("Down", 280, 540, 100, 30)
Local $GUI_Button_Up = GUICtrlCreateButton("Up", 280, 460, 100, 30)



GUISetState() ;Show GUI

_IENavigate($oIE, @ScriptDir & "\google map.html")










; Waiting for user to close the window
While 1
	Local $msg = GUIGetMsg()
	Select
	Case $msg = $GUI_EVENT_CLOSE
	   
	   ExitLoop
	    Case $msg = $GUI_Button_Zoom_in
           _IEAction($oIE, "Zoom in")
		  MouseClick("primary", 50, 240, 1,0)          
		  
		  ;Send("{-}") 
		  
		  
		Case $msg = $GUI_Button_Zoom_out
           _IEAction($oIE, "Zoom out")
		  MouseClick("primary", 50, 440, 1,0) 
		  ;Send("{+}") 
		  
		  
		Case $msg = $GUI_Button_Left
          _IEAction($oIE, "Left") 
		  MouseClick("primary", 35, 140, 1,0)
		  ;Send("{LEFT}")
		  
		Case $msg = $GUI_Button_Right
           _IEAction($oIE, "Right")
		  MouseClick("primary", 60, 140, 1,0) 
		  
		  ;Send("{RIGHT}")
		Case $msg = $GUI_Button_Down
          _IEAction($oIE, "Down") 
		  MouseClick("primary", 50, 150, 1,0)
		  
		  ;Send("{DOWN}")
		  
		Case $msg = $GUI_Button_Up
          _IEAction($oIE, "Up")     
		 MouseClick("primary", 50, 120, 1,0)  
		  ;Send("{UP}") 
			
	EndSelect
WEnd

GUIDelete()

Exit

entonces las dos se cargarian con el mapa este , claro no es presisamente el que me gusta , porque el que me gusta no se como sacarcelo a google , no se si tu sepas como hacerlo , seria este el de la foto , pero solo donde esta encerrado el mapa , sin las barras de arrriba no se si se pueda hacer eso , porque ese traffico me da la info cuando hay algun acidente o alguna contryccion me sale el cartel cuando poncho encima del hecho

el problema con usar el wheel que dices es que yo usaria esto en otro lugar , pero es con puros botones , no tiene ni teclado , ni mouse , luego tengo que redigirir los botones de autoit para el programa que yo lo usaria , por eso no me conviene algo con el mouse , porque no lo usaria , y como la pantalla donde usaria estos programas es touch screen , todo tengo que hacerlo con los dedos

mira creo que encontre la que yo quiero usar , mira ver si te abre , aqui la prove y me abre , me dejas saber , sino aqui te lo mando , solo cuando lo unzip le pones ext html , luego , cuando lo abras , vas a mano isquierda abajo , donde dice view larger map , cuando abra , ese es el mapa que me gustaria usar

https://maps.google.com/?t=m&layer=t&ie ... urce=embed
Adjuntos
google traffic.rar
(350 Bytes) Descargado 235 veces
Google Map.rar
(553 Bytes) Descargado 219 veces
untitled11.JPG
untitled11.JPG (166.8 KiB) Visto 8601 veces
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

buenas a todos , una ves mas , molestandolos por aqui , ya logre adaptar este script a mi programa , pero me falta 3 cositas a ver si me pudieras ayudar a solucionar

1 - para mover el zoom , use los comandos Send("{-}") y Send("{+}") , me trabaja bien pero para que me funcione , tengo que primero ponchar en el mapa para que como active esos comandos , no se si se le podra areglar poniendole algun comando de click para que ya de una trabaje

2- estoy usando para cerrar el scrip el comando ProcessClose("GOOGLE TRAFFIC.exe") , pero me lo cierra bien pero se me queda el icono en la barra de windows , en la barra donde eeta el reloj , y si abro 5 veces el script , se quedan 5 icnonos ahi en esa barra , la manera de que se vayan esos iconos es pasando el mouse por ese lugar pero no quiero eso , me gustaria que se fuera ese icono cuando cierro el script , no se si le falte algo a ese comando , o necesitaria otro comando mas efectivo

3-dentro del html , hay para editar el zoom del mapa y la latitud y long , de la ubicacion , como se podria insertarle un txt.ini que sea indepoendiente para poder editar esos valores sin que entrar al html

aqui les dejo el script completo y el html

Código: Seleccionar todo

; 

*******************************************************
; SCRIPT PARA ABRIR GOOGLE TRAFFICO
;
;
; *******************************************************



#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

dim $cmd, $oIE

Global Const $StructDef_COPYDATA = "ptr;dword;ptr"
;Global Const $WM_COPYDATA = 0x4A
;Global Const $WM_CLOSE = 0x10
Global Const $STRUCTDEF_AU3MESSAGE = "char[255]"



;$rr = ObjCreate("RoadRunner.SDK")

_IEErrorHandlerRegister()

$oIE = _IECreateEmbedded()
GUICreate("GOOGLE TRAFFIC", 810, 510, (@DesktopWidth - 1020) / 2, (@DesktopHeight - 665) / 2, $WS_POPUP)
GUICtrlCreateObj($oIE, 0, 0, 820, 510)

WinWait("GOOGLE TRAFFIC")
WinMove("GOOGLE TRAFFIC", "", 0, 0, 800, 510)


; Register Windows Messages
GUIRegisterMsg($WM_COPYDATA, "_GUIRegisterMsgProc")
GUIRegisterMsg($WM_CLOSE, "_GUIRegisterMsgProc")

;Local $size = WinGetPos("[active]")
;MsgBox(0, "Active window stats (0,60,400,600):", $size[0] & " " & $size[1] & " " & $size[2] & " " & $size[3])



;Local $GUI_Button_Zoom_in = GUICtrlCreateButton("Zoom in", 10, 500, 100, 30)
;Local $GUI_Button_Zoom_out = GUICtrlCreateButton("Zoom out", 120, 500, 100, 30)
;Local $GUI_Button_Left = GUICtrlCreateButton("Left", 230, 500, 100, 30)
;Local $GUI_Button_Right = GUICtrlCreateButton("Right", 340, 500, 100, 30)
;Local $GUI_Button_Down = GUICtrlCreateButton("Down", 280, 540, 100, 30)
;Local $GUI_Button_Up = GUICtrlCreateButton("Up", 280, 460, 100, 30)



GUISetState() ;Show GUI


_IENavigate($oIE, @ScriptDir & "\google map.html")







; Waiting for user to close the window
While 1
	$msg = GUIGetMsg()
;~ 	Select
;~ 		Case $msg = $GUI_EVENT_CLOSE
;~ 			ExitLoop
; 		Case $msg = $GUI_Button_ZoomIn
; 			_IEAction($oIE, "ZoomIn")
 ;			MouseClick("primary", 50, 140, 1,0)
       ;Send("{-}") 
	   
	   ;Case $msg = $GUI_Button_ZoomOut
       ;   _IEAction($oIE, "ZoomOut")
	;	  MouseClick("primary", 50, 440, 1,0) 
		  ;Send("{+}")

;~ 		Case $msg = $GUI_Button_Left
;~ 			_IEAction($oIE, "Left")
;~ 			MouseClick("primary", 35, 140, 1,0)
;~ 			send("{LEFT}")

;~ 		Case $msg = $GUI_Button_Right
;~ 			_IEAction($oIE, "Right")
;~ 			MouseClick("primary", 60, 140, 1,0)
;~ 			Send("{RIGHT}")
;~
;~ 		Case $msg = $GUI_Button_Down
;~ 			_IEAction($oIE, "Down")
;~ 			MouseClick("primary", 50, 150, 1,0)
;~ 			Send("{DOWN}")

;~ 		Case $msg = $GUI_Button_Up
;~ 			_IEAction($oIE, "Up")
;~ 			MouseClick("primary", 50, 120, 1,0)
;~ 			Send("{UP}")

;~ 	EndSelect

	;If $cmd = "ZoomIn" Then;command called by RR with "SENDMSG;GOOGLE MAP;ZoomIn"
	;  $cmd = ""
	;	cmdZoomIn_Click()
;	 EndIf
;	If $cmd = "ZoomOut" Then;command called by RR with "SENDMSG;GOOGLE MAP;ZoomOut"
;	  $cmd = ""
;		cmdZoomOut_Click()
;	EndIf

;~ 	If $cmd = "GOOGLE MAP" Then;command called by RR with "SENDMSG;GOOGLE MAP;CLOSE"
;~ 	  $cmd = ""
;~ 		cmdCLOSE_Click()
;~ 	EndIf

If $cmd = "ZoomIn" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;ZoomIn"
      $cmd = ""
        _IEAction($oIE, "ZoomIn")
 		;	MouseClick("primary", 50, 140, 1,0)
		
		
        Send("{-}")
	  
     EndIf
    If $cmd = "ZoomOut" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;ZoomOut"
      $cmd = ""
        _IEAction($oIE, "ZoomOut")
      ;  MouseClick("primary", 50, 340, 1,0)
	  
	  
        Send("{+}")
   EndIf
   If $cmd = "Close" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;Close"
      $cmd = ""
       ProcessClose("GOOGLE TRAFFIC.exe")
	   
	   
	   
	   
	 
       
    EndIf
WEnd

GUIDelete()



; Message Handler
Func _GUIRegisterMsgProc($hWnd, $MsgID, $WParam, $LParam)
	If $MsgID = $WM_COPYDATA Then
		; We Recived a WM_COPYDATA Message
		; $LParam = Poiter to a COPYDATA Struct
		$vs_cds = DllStructCreate($StructDef_COPYDATA, $LParam)
		; Member No. 3 of COPYDATA Struct (PVOID lpData;) = Pointer to Costum Struct
		$vs_msg = DllStructCreate($STRUCTDEF_AU3MESSAGE, DllStructGetData($vs_cds, 3))

		$SciTECmdLen = DllStructGetData($vs_cds, 2)
		$cmd = StringLeft(DllStructGetData($vs_msg, 1), $SciTECmdLen)

		; Display what we have recived
		;MsgBox(0, "Test String", $cmd)

	ElseIf $MsgID = $WM_CLOSE Then
	; We Recived a WM_CLOSE Message
		Exit
	EndIf
EndFunc ;==>_GUIRegisterMsgProc
----------------------------------------------------------

html script

Código: Seleccionar todo

<title>Google Maps Embedded</title>
 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false""></script>

<script type="text/javascript">
var initialize = function() {
 
  // Latitude and Longitude
  var latlng = new google.maps.LatLng(25.8647,-80.3247);
   
  // Just some option
  var options = { zoom: 12,
                  center: latlng,
                  mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                 
  // Map object
  var map = new google.maps.Map(document.getElementById('map'), options);
var trafficLayer = new google.maps.TrafficLayer();
  trafficLayer.setMap(map);

}
 
window.onload = initialize;
</script>
 
</head>
<body style="margin:0; padding:0;">
<div id="map" style="width:100%; height:100%"></div>
</body>
</html>
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: como ponerle direccion a unos botones

Mensaje por Dany »

El código es un desastre :S

ahí te dejo retocado a ver si así te funciona.

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#Include <WinAPI.au3>
Global Const  $HSHELL_WINDOWACTIVATED=4
_IEErrorHandlerRegister()

Local $width=810
Local $height=510
GUIRegisterMsg(_WinAPI_RegisterWindowMessage('SHELLHOOK'), '_ShellHookProc')
Local $oIE = _IECreateEmbedded()
$hForm =GUICreate("Embedded Web control Test", $width, $height, _
		(@DesktopWidth - 1020) / 2, (@DesktopHeight - 665) / 2, _
		$WS_POPUP)

_WinAPI_RegisterShellHookWindow($hForm)


GUICtrlCreateObj($oIE, 10, 40, 820, 510)

GUISetState() ;Show GUI


_IENavigate($oIE, @ScriptDir & "\Google Map.html")

clickfocus()

; Waiting for user to close the window
While 1
	Local $msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			ExitLoop
	EndSelect


WEnd

GUIDelete()
Exit


Func _ShellHookProc($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            Switch $wParam
				Case $HSHELL_WINDOWACTIVATED
					if $hWnd=WinGetHandle($lParam) then
                    ConsoleWrite('Activated: ' & WinGetHandle($lParam) & @CR)
					clickfocus()
					endif
            EndSwitch
    EndSwitch
EndFunc   ;==>_ShellHookProc

Func OnAutoItExit()
    _WinAPI_DeregisterShellHookWindow($hForm)
EndFunc   ;==>OnAutoItExit

Func clickfocus()
Local $pos = MouseGetPos()
MouseClick("left",$width/2,$height/2,1,0)
MouseMove($pos[0],$pos[1],0)
EndFunc


Func _WinAPI_RegisterShellHookWindow($hWnd)

	Local $Ret = DllCall('user32.dll', 'int', 'RegisterShellHookWindow', 'hwnd', $hWnd)

	If (@error) Or (Not $Ret[0]) Then
		Return SetError(1, 0, 0)
	EndIf
	Return 1
EndFunc   ;==>_WinAPI_RegisterShellHookWindow
;
Func _WinAPI_DeregisterShellHookWindow($hWnd)

	Local $Ret = DllCall('user32.dll', 'int', 'DeregisterShellHookWindow', 'hwnd', $hWnd)

	If (@error) Or (Not $Ret[0]) Then
		Return SetError(1, 0, 0)
	EndIf
	Return 1
EndFunc   ;==>_WinAPI_DeregisterShellHookWindow


saludos
  • ............................................Imagen
    ......................................Imagen
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

hay dany no me quites el animo , hay partes que yo la agregue , recuerda que yo este script lo abro con otro programa que tiene sus botones y llaman a este script , me lo quitastes , esos comandos de los botones tienen que quedarse sino como llamo al programa o como hago las funciones del zoom



EDITADO , no dany , perdona el cambio que me hicistes , me cambiastes todo , y ahora tengo que volverme a romper la cabeza como acoplarar las cosas ,

el que yo tengo me habian agregado todo esto para poder llamarlo desde el otro programa y haga las funciones de los botones

dim $cmd, $oIE

Global Const $StructDef_COPYDATA = "ptr;dword;ptr"
;Global Const $WM_COPYDATA = 0x4A
;Global Const $WM_CLOSE = 0x10
Global Const $STRUCTDEF_AU3MESSAGE = "char[255]"

$rr = ObjCreate("RoadRunner.SDK")


; Register Windows Messages
GUIRegisterMsg($WM_COPYDATA, "_GUIRegisterMsgProc")
GUIRegisterMsg($WM_CLOSE, "_GUIRegisterMsgProc")




luego viene la parte de los botones

If $cmd = "ZoomIn" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;ZoomIn"
$cmd = ""
_IEAction($oIE, "ZoomIn")
; MouseClick("primary", 50, 140, 1,0)


Send("{-}")

EndIf
If $cmd = "ZoomOut" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;ZoomOut"
$cmd = ""
_IEAction($oIE, "ZoomOut")
; MouseClick("primary", 50, 340, 1,0)


Send("{+}")
EndIf
If $cmd = "Close" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;Close"
$cmd = ""
ProcessClose("GOOGLE TRAFFIC.exe")



y al final me hbaian agregado esto porqwue tambien lo necexitaba


; Message Handler
Func _GUIRegisterMsgProc($hWnd, $MsgID, $WParam, $LParam)
If $MsgID = $WM_COPYDATA Then
; We Recived a WM_COPYDATA Message
; $LParam = Poiter to a COPYDATA Struct
$vs_cds = DllStructCreate($StructDef_COPYDATA, $LParam)
; Member No. 3 of COPYDATA Struct (PVOID lpData;) = Pointer to Costum Struct
$vs_msg = DllStructCreate($STRUCTDEF_AU3MESSAGE, DllStructGetData($vs_cds, 3))

$SciTECmdLen = DllStructGetData($vs_cds, 2)
$cmd = StringLeft(DllStructGetData($vs_msg, 1), $SciTECmdLen)

; Display what we have recived
;MsgBox(0, "Test String", $cmd)

ElseIf $MsgID = $WM_CLOSE Then
; We Recived a WM_CLOSE Message
Exit
EndIf



y ahora como vuelvo a acotejar todo eso al que me hicistes
Última edición por mikeeps2 el 13 Oct 2013, 19:39, editado 1 vez en total.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: como ponerle direccion a unos botones

Mensaje por Dany »

Lo probaste?

No es quitar animo es un consejo :smt023


Según dijiste envías comandos con + y -

debería funcionar si presionas esas teclas.


saludos
  • ............................................Imagen
    ......................................Imagen
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

lo prove pero no me funciona , como deveria , sigue siendo que hay que darle click con el mouse en alguna parte del mapa para que - y + haga su funcion de zoom , si te fijas en el script mio , tambien utilize la option mouseclick , esa me funciona perfecto , en ultimo caso utilizare esa option , lo otro que me queda duda es lo que prantie , que cuando le doy el boton close , con el comando ProcessClose("GOOGLE MAP.exe") , se me cierra pero me deja el icono en la parte de abajo de la barra de windows , o sea si abro la aplicacion 3 veces , se quedan 3 icnonos , asi la cantidad que lo abra , solo se va esos iconos de ahi cuando paso el mouse por esa area , y lo otro que no se si se podra es si se puede abrir un txt.ini separado que pueda yo editar el valor del zoom cuando abre el mapa , y la ubicacion por lat y longituded


recuerda que yo no uso teclado ni mouse en mi projecto , todo es con touch screen
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: como ponerle direccion a unos botones

Mensaje por Dany »

En la aplicacion que lo usas no tiene cursor? mouse?


para cerrar podrías hacer algo mas así

Local $PID = ProcessExists("GOOGLE TRAFFIC.exe") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)

Creo que seria mejor usar la UDF que hay para google Map. seria mas fácil.

aunque hay que hacerlo de cero otra vez.
  • ............................................Imagen
    ......................................Imagen
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

hola dany prove eso que me pusistes y me hace lo mismo , mira una foto pa que veas que te digo , mira a la derecha abajo , los iconos que se quedan , claro se van cuando paso el mouse por ahi , pero como yo no usare mouse , sera un problema esos iconos ahi , porque si abro 50 veces , tendria 50 veces el icono ahi

mi programa todo lo manejo por touch screen , no llevara ni mouse , ni teclado
Adjuntos
untitled47.JPG
untitled47.JPG (150.55 KiB) Visto 8250 veces
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: como ponerle direccion a unos botones

Mensaje por Dany »

Usa #notrayicon porque es que queda así en xp porque no se actualiza el tryicon.

saludos
  • ............................................Imagen
    ......................................Imagen
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

pero yo tengo otros script con autoit y uso el mismo comando para cerrarlos y no se me queda ahi el icon , solo me sucede con este script no se porque
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

bueno puse eso que me dijistes arriba verdad , donde estan todos los # , y si ya no sale el icon ni al principio ni cuando cierro el script
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: como ponerle direccion a unos botones

Mensaje por Chefito »

Mmmmmm.....para cerrar un script prueba con su orden: Exit :smt002
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: como ponerle direccion a unos botones

Mensaje por Dany »

Chefito escribió:Mmmmmm.....para cerrar un script prueba con su orden: Exit :smt002

@chefito, si lo que pasa es que cierra uno proceso remoto.

podrías usar TerminateProcess pero no quiero complicarlo con APIs.

@mikeeps2 quisas estas dejando algun handle abierto por eso no ce cierra el trayicon con ese script.

saludos
  • ............................................Imagen
    ......................................Imagen
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: como ponerle direccion a unos botones

Mensaje por mikeeps2 »

dany , que es eso de handle abierto , como miro eso , igual, con el comando que me dijistes que agregara , ya no sale el icon en la barra de windows , el cofigo final que estoy sando quedaria asi , claro , el mismo mio , no entendi el que tu me corregistes

Código: Seleccionar todo

; *******************************************************
; SCRIPT PARA ABRIR GOOGLE TRAFFICO
;
;
; *******************************************************



#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#NoTrayIcon

dim $cmd, $oIE

Global Const $StructDef_COPYDATA = "ptr;dword;ptr"
;Global Const $WM_COPYDATA = 0x4A
;Global Const $WM_CLOSE = 0x10
Global Const $STRUCTDEF_AU3MESSAGE = "char[255]"



$rr = ObjCreate("RoadRunner.SDK")

_IEErrorHandlerRegister()

$oIE = _IECreateEmbedded()
GUICreate("GOOGLE TRAFFIC", 810, 510, (@DesktopWidth - 1020) / 2, (@DesktopHeight - 665) / 2, $WS_POPUP)
GUICtrlCreateObj($oIE, 0, 0, 820, 510)

WinWait("GOOGLE TRAFFIC")
WinMove("GOOGLE TRAFFIC", "", 0, 0, 800, 510)


; Register Windows Messages
GUIRegisterMsg($WM_COPYDATA, "_GUIRegisterMsgProc")
GUIRegisterMsg($WM_CLOSE, "_GUIRegisterMsgProc")





GUISetState() ;Show GUI


_IENavigate($oIE, @ScriptDir & "\google map.html")







; Waiting for user to close the window
While 1
	$msg = GUIGetMsg()


If $cmd = "ZoomIn" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;ZoomIn"
      $cmd = ""
        _IEAction($oIE, "ZoomIn")
 			MouseClick("primary", 50, 140, 1,0)
		
		
      ;  Send("{-}")
	  
     EndIf
    If $cmd = "ZoomOut" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;ZoomOut"
      $cmd = ""
        _IEAction($oIE, "ZoomOut")
        MouseClick("primary", 50, 340, 1,0)
	  
	  
       ; Send("{+}")
   EndIf
   If $cmd = "Close" Then;command called by RR with "SENDMSG;GOOGLE TRAFFIC;Close"
      $cmd = ""
       ProcessClose("GOOGLE TRAFFIC.exe")
	   Local $PID = ProcessExists("GOOGLE TRAFFIC.exe") ; Will return the PID or 0 if the process isn't found.
       If $PID Then ProcessClose($PID)
	   
	   
	   
	   
	   
	 
       
    EndIf
WEnd

GUIDelete()



; Message Handler
Func _GUIRegisterMsgProc($hWnd, $MsgID, $WParam, $LParam)
	If $MsgID = $WM_COPYDATA Then
		; We Recived a WM_COPYDATA Message
		; $LParam = Poiter to a COPYDATA Struct
		$vs_cds = DllStructCreate($StructDef_COPYDATA, $LParam)
		; Member No. 3 of COPYDATA Struct (PVOID lpData;) = Pointer to Costum Struct
		$vs_msg = DllStructCreate($STRUCTDEF_AU3MESSAGE, DllStructGetData($vs_cds, 3))

		$SciTECmdLen = DllStructGetData($vs_cds, 2)
		$cmd = StringLeft(DllStructGetData($vs_msg, 1), $SciTECmdLen)

		; Display what we have recived
		;MsgBox(0, "Test String", $cmd)

	ElseIf $MsgID = $WM_CLOSE Then
	; We Recived a WM_CLOSE Message
		Exit
	EndIf
EndFunc ;==>_GUIRegisterMsgProc


UNA PREGUNTA se me quedo una duda , ahora probando otra manera de zoom + y zoom - , cuando abro el mapa , y con el mouse doble click isquierdo el mapa hace zoom - y cuando hago mouse doble click derecho hace zoom + , tambien pudiera usar esa option ,como seria el commando para doble click isquiero y derecho ?
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: como ponerle direccion a unos botones

Mensaje por Dany »

revisa en google que son handles.

aunque tu problema puede ser otros tendrías que ver si queda abierto el proceso.


Pues simplemente dos clicks hacen un doble click

Código: Seleccionar todo

MouseClick("left",10,10,1)
MouseClick("left",10,10,1)



saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: como ponerle direccion a unos botones

Mensaje por Chefito »

Si es una aplicación externa la que se quiere cerrar, y matando el proceso le da algún tipo de problema (yo he matado procesos y lo del icono me ha pasado :smt001 ), si tiene ventana, prueba con winkill o winclose. A ver si así no te pasa lo del icono.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder