Hola.
Estoy intentando ajustar una funcion que encontre en el foro de autoit en ingles.
http://www.autoitscript.com/forum/index ... t&p=603830
Quiero que la funcion busque apartir de una clave dada del registro de windows, en todas subclaves que dependan de esta, un valor con un dato puntual, el cual supuestamente aparecera una unica vez.
(Por ejemplo, una adaptador de red cuyo valor "ComponentID" coincida con un string definido por mi. windows podria tener facil una docena de estos identificados por subclaves 0001 ~ nnnn, dentro de la clave: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}]. Ese era el motivo original de esta funcion, pero creo que le podria dar mas usos)
Los parametros de la funcion serian la clave base en donde empezar la busqueda, el valor y el dato a buscar. Deberia devolver la clave completa donde encontro ese valor con ese dato, o devolver vacio ("").
Pense en este codigo para usar recursion, pero no funciona y no se que estoy haciendo mal. El script se queda detenido en esta sentencia:
$sKey = RegEnumKey ($sStartKey, $iIndex)
que es la primera dentro del ciclo while.
Func _RegSearch ($sStartKey, $sSearchVal, $sSearchData)
$sData = RegRead ($sStartKey, $sSearchVal)
if @error = 0 Then
if $sData = $sSearchData Then
$sResult = $sStartKey
$bFound = True
Else
$sResult = ""
$bFound = False
EndIf
Else
$sResult = ""
$bFound = False
EndIf
$iIndex = 1
while NOT $bFound
$sKey = RegEnumKey ($sStartKey, $iIndex)
if @error = 0 Then
$sResult = _RegSearch ($sStartKey & "\" & $sKey, $sSearchVal, $sSearchData)
EndIf
$iIndex +=1
WEnd
Return $sResult
EndFunc
Es mi primer intento de desarrollar funciones con recursion, y me imagino que el error sera tan simple que no lo puedo distinguir, porque revise codigo de otras funciones de usuario y no veo por que a mi no me funciona. :(
Alguna idea?
Saludos, Carlos
ayuda con recursion
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: ayuda con recursion
Aquí tienes algunas funciones que se usan para recursión de ficheros en subdirectorios que puedes usar para la lógica de tu función:
http://www.emesn.com/autoitforum/viewto ... %B3n#p2522
http://www.emesn.com/autoitforum/viewto ... %B3n#p2522
http://www.emesn.com/autoitforum/search ... =recursivo
http://www.emesn.com/autoitforum/search ... =recursion
Seguramente ya has usado msgbox() u cualquier otro método para controlar los valores de las variables en los bucles.
Salu2:)
http://www.emesn.com/autoitforum/viewto ... %B3n#p2522
http://www.emesn.com/autoitforum/viewto ... %B3n#p2522
http://www.emesn.com/autoitforum/search ... =recursivo
http://www.emesn.com/autoitforum/search ... =recursion
Seguramente ya has usado msgbox() u cualquier otro método para controlar los valores de las variables en los bucles.
Salu2:)