GetObject Donde esta el equivalente ?

GetObject Donde esta el equivalente ?

Postby thefull » Mon Jun 16, 2008 2:12 pm

Teniendo este script

strComputer = "."
value = "winmgmts:{impersonationLevel=impersonate}!\\"
Set objWMIService = GetObject( value & strComputer & "\root\cimv2")

Wscript.Echo value & strComputer & "\root\cimv2"

Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process")

For Each objProcess in colProcessList
colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
Wscript.Echo "Process " & objProcess.Name & " is owned by " _
& strUserDomain & "\" & strNameOfUser & "."
Next

Podemos ver los procesos que tenemos corriendo.
El problema es que para xHarbour esto no funciona;

FUNCTION FindProcess( )
Local strComputer := ".", strNameOfUser, strUserDomain , objProcess, colProperties

Local objWMIService := getactiveobject( "winmgmts:{impersonationLevel=impersonate}!\\" + strComputer + "\root\cimv2" )
Local colProcessList := objWMIService:ExecQuery( "Select * from Win32_Process" )

For Each objProcess in colProcessList
colProperties := objProcess:GetOwner( @strNameOfUser, @strUserDomain )
? "Process " + objProcess:Name + " is owned by " +strUserDomain + "\" + strNameOfUser + "."
Next


La funcion getactiveobject() no es porque FALLA;
Path and name: C:\ULYWIN\REPLICACION\replicador.exe (32 bits)
Size: 1,662,976 bytes
Time from start: 0 hours 0 mins 0 secs
Error occurred at: 06/16/08, 16:07:09
Error description: Error TOleAuto/-1 CO_E_CLASSSTRING: TOLEAUTO:GETACTIVEOBJECT
Args:
[ 1] = C winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2

¿ Alguien puede indicarme como puedo solucionarlo ?

El problema que tengo es que si la aplicacion de Fivewin esta como servicio y no tenemos una ventana en las tareas, tengo una funcion que
busca el nombre y la muestra, para evitar tener más de una aplicacion abierta a la vez. Pero con el servicio, esta no la encuentra, por lo tanto,
necesito busca el hWnd del programa como servicio, y mostrarla..
( No se si me explicado... ) Logicamente la aplicacion tiene una ventana.
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Re: GetObject Donde esta el equivalente ?

Postby thefull » Mon Jun 16, 2008 3:08 pm

Yo mismo, se puede hacer de esta manera, aunque me gustaria saber
como se hace de la otra manera;

STATIC FUNCTION ListProcess()
Local strNameOfUser, strUserDomain
Local objWMIService := CreateObject( "wbemScripting.SwbemLocator")
Local colRunningServices
Local objService , colProcessList, objProcess, colProperties
LOCAL oSrv := objWMIService:ConnectServer()

colRunningServices := oSrv:ExecQuery("Select * from Win32_Process")
For Each objProcess in colRunningServices
colProperties := objProcess:GetOwner( @strNameOfUser, @strUserDomain )
? "Process " + objProcess:Name + cValtoChar(strUserDomain )+CRLF )
next

Return .t.

Pero sigo con mi penitencia de traer al frente el programa corriendo como un proceso..;-(

Se puede hacer , porque el processXP.exe lo hace...
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 122 guests