Página 1 de 1

Ayuda con Macro (Porfa)

Publicado: 25 Ago 2011, 07:25
por melvinhn
Mi pregunta es la siguiente
@ComputerName = da el nombre de la compu

He buscado una macro que me de el modelo de la pc

haciendo un .Bat con el siguiente codigo lo logro pero quisiera saber si en autoit hay alguna manera

Esto contiene dentro el archivo.bat
wmic csproduct get name
pause
exit

Muchas gracias por la ayuda brindada

Re: Ayuda con Macro (Porfa)

Publicado: 25 Ago 2011, 07:55
por Ximorro
Que yo sepa no hay macros para sacar esa información.
O la sacas de ese comando (que ahora me entero que existe) mandando el resultado a un archivo y leyéndolo desde AutoIt o por ejemplo lo puedes leer del registro, yo lo he encontrado aquí:
MsgBox(0, "Modelo", RegRead("HKLM\SOFTWARE\Microsoft\PCHealth\HelpSvc\OEMInfo", "Model"))

Pero otros datos que da wmic no los he visto, así que depende de lo que se busque se podrá utilizar el registro o tendrás que pasar por el shell...

Re: Ayuda con Macro (Porfa)

Publicado: 25 Ago 2011, 08:17
por melvinhn
Pero en esa ruta no la he encontrado ya que no existe en el regedit
tambien en ejecutar te presenta esta opcion detallada
ejecutar>dxdiag
te da una informacion detallada de tu pc.

Re: Ayuda con Macro (Porfa)

Publicado: 25 Ago 2011, 08:18
por melvinhn
Bueno en alguna pc esta ruta no existe
MsgBox(0, "Modelo", RegRead("HKLM\SOFTWARE\Microsoft\PCHealth\HelpSvc\OEMInfo", "Model"))

Re: Ayuda con Macro (Porfa)

Publicado: 25 Ago 2011, 09:21
por Ximorro
Hum, entonces no es un método seguro.

Pues mejor usa directamente wmic, veo en Microsoft Technet que está desde Windows XP, así que si no lo tienes que usar en cosas muy viejas te vale.

Tendrás que ejecutarlo desde AutoIt por ejemplo con RunWait y redireccionar el resultado a un archivo (otra alternativa es leer directamente la salida estándar del shell, pero es ligeramente más complicado).
Sería:
$salida = @TempDir & "\salida.txt"
RunWait(@ComSpec & " /c wmic csproduct get name > " & $salida, @TempDir, @SW_HIDE)


Así no hace falta un bat, se ve el shell, te busca cmd.exe (o command.com) él solito, escribe en el temporal...

Después sacas el dato del resultado y finalmente lo puedes borrar.
$modelo = FileReadLine($salida, 2) ;Parece que está en la segunda línea
FileDelete($salida)

Obtener nombre del modelo del ordenador.

Publicado: 25 Ago 2011, 14:02
por Chefito
Mmmmm....seguro que hay una api de windows para esto, pero vete tu a saber cual es :smt005 . Sería buscarla a ver si aparece algo :smt017 .
Ximorro escribió:otra alternativa es leer directamente la salida estándar del shell, pero es ligeramente más complicado
Esta alternativa puede que guste más a causa de que no tienes que crear un archivo txt y luego trabajar con él. Mira en la ayuda las funciones run y StdoutRead, y sus ejemplos.

Otra alternativa que me gusta, ya que no tienes que ejecutar un archivo externo, es utilizar WMI para sacar este datos, entre muchos muchos muchos más que puedes obtener :smt002 :

Código: Seleccionar todo

$strComputer = "."
$objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & $strComputer & "\root\cimv2")
$colComputerSystem = $objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
For $objComputerSystem in $colComputerSystem
    ConsoleWrite ("Modelo de ordenador: " & $objComputerSystem.Model & @CRLF)
Next
Aahhhh, y por favor, especifica la próxima ver el Asunto del post mucho mejor que lo que has puesto. Mira mi asunto de este mensaje. Ayudará mucho más a las personas que busquen algo como esto.
Saludos.