como hallar el Exe al que pertenece la ventana ???

Iniciado por <[(x)]>, 26 Diciembre 2008, 16:10 PM

0 Miembros y 2 Visitantes están viendo este tema.

<[(x)]>

#10
holas


notaste que si cierras el explorer.exe y pones el mouse sobre la imagen del escritorio. El programa allá el handle y la id del proceso, pero al llegar a la api OpenProcess esta devuelve un handle=0 lo que no permite allar el nombre ni la ruta del proceso... :-X
<[(x)]>

Dessa

#11
Por supuesto, si está cerrado, se soluciona con "Shell explorer.exe" pero si  a alguien se le ocurre cerrar el explorer podes usar este code

http://foro.elhacker.net/programacion_vb/evitar_que_cierren_mi_aplicacion_src-t237547.0.html

PD: Todo bien <[(x)]>, pero: "como hallar el Exe al que pertenece la ventana ???", seria un buen título (jeje...)

Saludos

Adrian Desanti

<[(x)]>

#12
se  cambiado=true  :P

jeje.  y Dessa con lo anterior me refería  a  que exe le pertenece la ventana que queda con la imagen de fondo...  :-\

osea como hacer para saber cual es no tratar de ocultarlo oponiendo nos a que no cierren otras app..
<[(x)]>

Dessa

Será  el de classname "#32769" y handle constante 65556 ventana padre (del Padre) de explorer.
Fijate con este buscador (sencillo)
http://rapidshare.com/files/177113270/buscador.exe 

Saludos

Adrian Desanti

<[(x)]>

<[(x)]>

Dessa

#15


Option Explicit

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long

Private Sub Form_Load()
MsgBox ProcIDFromWnd(65556)
' el Hwnd es constante(65556)
' ID de proceso tambien es constante (452)
End

End Sub

Function ProcIDFromWnd(ByVal hwnd As Long) As Long
Dim idProc As Long
GetWindowThreadProcessId hwnd, idProc
ProcIDFromWnd = idProc
End Function



El Exe a que pertenece es  SMSS.EXE (fijate al clasificar):
http://www.recursosvisualbasic.com.ar/htm/listado-api/183-listar-ruta-de-procesos-de-windows.htm

PD: si encontras alguna manera para  manipular este número de ID de proceso o entrarle a su Hwnd por favor postealo, Saludos



Adrian Desanti

Dessa

Por coordenadas del mouse "V 2.0"

Solo hay que agregar un Timer1



Option Explicit
Private Declare Function SetWindowPos Lib "user32" (ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwprocessid As Long) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI: x As Long: y As Long: End Type

Private Sub Form_Load()
Me.BackColor = vbBlack: Me.ForeColor = vbWhite: Me.FontBold = True
Me.Top = 0: Me.Left = 0: Me.Width = 6450: Me.Height = 1000
Me.BorderStyle = 5: Timer1.Interval = 100
End Sub
'Private Sub Form_Load(): Timer1.Interval = 100: End Sub

Private Sub Timer1_Timer()
Call SetWindowPos(Me.Hwnd, -1, 0, 0, 0, 0, &H2 Or &H1)
Dim Cor As POINTAPI: Dim retorno As Long: retorno = GetCursorPos(Cor)
Dim Handle As Long: Handle = WindowFromPoint(Cor.x, Cor.y)
Dim idProc As Long: Call GetWindowThreadProcessId(Handle, idProc)
Dim Handle_Proceso As Long: Handle_Proceso = OpenProcess(&H400 + &H10, 0, idProc)
Dim Buffer As String: Buffer = Space(255)
Dim ret As Long: ret = GetModuleFileNameExA(Handle_Proceso, 0, Buffer, 255)
Dim Ruta As String: Ruta = Left(Buffer, ret): ret = CloseHandle(Handle_Proceso)
Me.Cls: Me.Print "": Me.Print Ruta: Me.Caption = "ID PROCESO =  " & idProc
End Sub



Saludos
Adrian Desanti

<[(x)]>

<[(x)]>