Autor
|
Tema: como hallar el Exe al que pertenece la ventana ??? (Leído 6,190 veces)
|
<[(x)]>
Desconectado
Mensajes: 215
|
|
000-|-000
« Respuesta #10 en: 28 Diciembre 2008, 04:40 am » |
|
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...
|
|
« Última modificación: 28 Diciembre 2008, 04:42 am por <[(x)]> »
|
En línea
|
<[(x)]>
|
|
|
|
<[(x)]>
Desconectado
Mensajes: 215
|
se cambiado=true 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..
|
|
« Última modificación: 28 Diciembre 2008, 05:35 am por <[(x)]> »
|
En línea
|
<[(x)]>
|
|
|
|
<[(x)]>
Desconectado
Mensajes: 215
|
se pero como lo identificas?
|
|
|
En línea
|
<[(x)]>
|
|
|
Dessa
Desconectado
Mensajes: 624
|
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.htmPD: si encontras alguna manera para manipular este número de ID de proceso o entrarle a su Hwnd por favor postealo, Saludos
|
|
« Última modificación: 28 Diciembre 2008, 22:47 pm por Dessa »
|
En línea
|
Adrian Desanti
|
|
|
Dessa
Desconectado
Mensajes: 624
|
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
|
|
|
En línea
|
Adrian Desanti
|
|
|
<[(x)]>
Desconectado
Mensajes: 215
|
bien gracias.
|
|
|
En línea
|
<[(x)]>
|
|
|
|
|