| 
	
		|  Autor | Tema: obtener el hwnd de un programa sin form   (Leído 8,351 veces) |  
	| 
			| 
					
						| x64core 
								       
								
								 Desconectado 
								Mensajes: 1.908
								
								
								
								
								
								   | 
 
buenas pues esa duda tengo    como puedo obtener el hwnd de un programa de VB sin form? estoy codeando un programa sin form ( modulo como main el principal ) y entonces llege a esa parte que necesito el hwnd    normalmente se hace me.hwnd ( me = form ) pero ahora veo que el modulo no tiene hwnd al menos tiene esa propiedad    como puedo hacer? gracias  
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 
.Ponle entonces &H0 o 0, el hwnd es propio de ventanas y solo es asosiativos normalmente...
 
 Dulces Lunas!¡.
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  | 
			| 
					
						| x64core 
								       
								
								 Desconectado 
								Mensajes: 1.908
								
								
								
								
								
								   | 
 
gracias BlackZeroX    eso funciona con hooks? la verdad por el momento lo quiero para la api Settimer para el primer parametro que me pide    y luego creo que lo usare para aplicarlo a hooks... PD: una duda     para eliminarlo con killtimer?    ya que si aplico 0 en killtimer entonces escribo 0 ???    |  
						| 
								|  |  
								| « Última modificación: 27 Agosto 2011, 07:25 am por Raul100 » |  En línea | 
 
 |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  |  |  | 
			| 
					
						| x64core 
								       
								
								 Desconectado 
								Mensajes: 1.908
								
								
								
								
								
								   | 
 
hice este ejemplo y comprobe que no funciona    noce en que fallo   modulo bas Option ExplicitDeclare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As LongDeclare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Dim A As LongDim B As Boolean Sub main()A = SetTimer(0, 0, 30000, AddressOf TimerProc)Debug.Print ADo While Not BDoEventsLoopEnd Sub Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)Debug.Print "+1"Debug.Print ADebug.Print KillTimer(A, 0)B = TrueEnd Sub
 el resultado del debug.print: 26430 +1
 26430
 0       <--------- no lo libera :P (valor devuelto de la llamada a funcion killtimer )
 
luego lo termine de comprobar porq cuando termina sub main y vuelvo a vb en diseño el timer aun sigue marcando y en el debug.print me escribe  |  
						| 
								|  |  
								| « Última modificación: 27 Agosto 2011, 08:14 am por Raul100 » |  En línea | 
 
 |  |  |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 
.  Option Explicit Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As LongDeclare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As LongDeclare Function WaitMessage Lib "user32" () As Long Dim iTmr            As Long Sub main()    iTmr = SetTimer(0, 0, 300, AddressOf TimerProc)    Do While Not (iTmr = 0)        DoEvents        WaitMessage    LoopEnd Sub Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)    Debug.Print KillTimer(hwnd, iTmr)    iTmr = 0End Sub  
 Dulces Lunas!¡. |  
						| 
								|  |  
								|  |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  | 
			| 
					
						| Hasseds 
								
								 Desconectado 
								Mensajes: 145
								
								   | 
 
El tema ya quedó resueltobuenas pues esa duda tengo    como puedo obtener el hwnd de un programa de VB sin form? , pero si alguna vez tenés que obtener el hwnd de un Main podes usar FindWindow. (Acabo de enterarme de esto, ya que también pensaba que este tipo de hwnd era unicamente propio de ventanas). 
 
 Option Explicit
 
 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
 Sub Main()
 
 Dim lpClase As String
 
 If Not App.LogMode = 0 Then
 lpClase = "ThunderRT6Main" ' Exe Compilado
 Else
 lpClase = "ThunderMain" ' en el IDE
 End If
 
 MsgBox FindWindow(lpClase, App.Title)
 
 End Sub
 
 
 
 
 |  
						| 
								|  |  
								| « Última modificación: 28 Agosto 2011, 00:24 am por Hasseds » |  En línea | 
 
 Sergio Desanti |  |  |  | 
			| 
					
						| BlackZeroX 
								Wiki  Desconectado 
								Mensajes: 3.158
								
								 
								I'Love...!¡.
								
								
								
								
								
								     | 
 
El tema ya quedó resuelto, pero si alguna vez tenés que obtener el hwnd de un Main podes usar FindWindow. (Acabo de enterarme de esto, ya que también pensaba que este tipo de hwnd era unicamente propio de ventanas).En efecto solo son de ventanas, los procesos no tienen hwnd.
 Por ello El PROCESO MAIN()  al igual que los demas, NO tienen hwnd. Todas las aplicaciones de Visual Basic tienen una ventana de nivel superior invisible que procesa los eventos y mensajes. En el modo de diseño, la ventana es ThunderMain, en el modo de ejecución, la ventana es ThunderRT6Main. El RT6 refleja el versión de Visual Basic que se utiliza. Las dos ventanas tienen el nombre del proyecto o el nombre del archivo ejecutable como el título de ventana. Esto es donde se establece el icono de aplicación.
 
 
 Dulces Lunas!¡. |  
						| 
								|  |  
								| « Última modificación: 28 Agosto 2011, 00:31 am por BlackZeroX▓▓▒▒░░ » |  En línea | 
 
 The Dark Shadow is my passion. |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | [Solucionado] Alguna Alternativa de hWnd para del Timer (1 Modulo SIN FORM) Programación Visual Basic
 | BlackZeroX | 4 | 5,005 |  10 Febrero 2009, 04:25 am por BlackZeroX
 |  
						|   |   | Consulta: Api ejecutar programa devolviendo hwnd, obtener sus ventanas... Programación Visual Basic
 | ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡ | 9 | 10,384 |  4 Enero 2010, 07:04 am por ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡
 |  
						|   |   | [Source] Obtener hWnd, Caption y Class de cualquier cosa :D! Programación Visual Basic
 | Elemental Code | 3 | 4,874 |  7 Enero 2011, 20:30 pm por raul338
 |  
						|   |   | Como obtener hwnd de ventanas hijas de juegos? Programación Visual Basic
 | AlxSpy | 2 | 3,862 |  30 Marzo 2011, 17:13 pm por AlxSpy
 |  
						|   |   | [Ruby] Obtener el nombre de un proceso mediante el HWND? Scripting
 | Eleкtro | 0 | 2,724 |  7 Marzo 2012, 01:58 am por Eleкtro
 |    |