FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Editar Regedit de windows con Delphi 7.0
Saludos amigos, mire lo que sucede es que necesito editar el regedit de windows y cambiar valores....por ejemplo, necesito cambiar el siguiente registro:
HEY_CURRENT_USER ---> Desktop ---> MenuShowDelay , cambiar el valor de MenuShowDelay que es por defecto 400 cambiarlo a 0, eso es lo que necesito hacer, y pude conseguir el siguiente codigo:
No entiendo por que declaran ahi la variable bTF ??, si bien la puedo declarar en el uses, colocando var bTF :Bloean, bueno el hecho es que no se como modificar ese codigo para que me haga lo que yo deseo, alguien que me pueda colaborar por favor, pero que me colaboren al ejemplo que mensione anteriormente, Gracias. |
#2
|
|||
|
|||
Hola!
bTF es una variable que debe recibir el procedimiento. Ese valor lo estan enviando cuando se llama a ese procedimiento desde otro punto de la aplicacion. ¿Recuerdas la estructura de arbol del registro? Bueno, pues si te fijas en el codigo que muestras recorren esa estructura y se posicionan donde necesitan cambiar el dato segun sea el valor de btF. Asi tu deberas recorrer la estructura hasta encontrar la clave que quieres cambiar. probablemente no sea necesario usar una variable como aqui pero eso lo deberas determinar tu en tu aplicacion.
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#3
|
||||
|
||||
Saludos, gracias por responder, bueno la prgeunta es, si declaro la variable como dije anteriormente si me funcionara ??, es que si la coloco en el procedure me enviara error de una vez, y pues ese es todo el codigo que tengo, se que tambien tengo que incluir el Ragistry en el uses...pero como hago para cambiar el valor de 1 a 0, como lo mencione en el ejemplo ???, por favor si me puedes especificar un poco mas, es que nunca he hecho esto, y solo quiero aprenderlo...Gracias amigo..
|
#4
|
||||
|
||||
Oh lo olvidaba, tengo que colocar el codigo en algun evento en especial de la forma ?, o puedo colocar un boton y poner el codigo en el evento onclick del boton, para realizar la operacion cuando yo lo desee ???
Gracias por tu tiempo |
#5
|
||||
|
||||
Hola BuRtOn,
Aclarame una pregunta ¿Entiendes lo que es un parámetro? BTF es el parámetro que espera dicho procedimiento para saber como y/o que hacer en base al valor suministrado. La forma en que se invoca al procedimiento es simple:
Con respecto a Tregistry sugiero que hagas una lectura de la ayuda. Para hacer el cambio que buscas se emplea el método WriteString. El segundo parámetro representa el valor a guardar (o cambiar), mientras que el primero es la clave a modificar. Y para ello necesariamente debe estar abierta dicha clave del registro. Lo cual se consigue invocando al método OpenKey. Saludos, |
#6
|
||||
|
||||
Hola dlphius....pues mira esta es la primera vez que voy a hacer esto, y pues lo que basicamente quiero hacer es:
HEY_CURRENT_USER ---> Desktop ---> MenuShowDelay , cambiar el valor de MenuShowDelay que es por defecto 400 cambiarlo a 0, eso es lo que necesito hacer. Pero no se donde ubicarme en el valor que trae por defecto ese registro, en este caso seria 400, y no se donde le coloco el nuevo valor que seria 0, eso es basicamente lo que no entiendo, no se donde colocar el valor por defecto y el valor que le voy a dar que seria 0...eso es basicamente lo que no entiendo, el resto de codigo si lo entiendo un poco mas...bueno gracias por tu ayuda, espero que me colabores.. |
#7
|
||||
|
||||
A ver BuRtOn, por algo digo que leas la ayuda sobre TRegistry.
Tienes la clave de registro HEY_CURRENT_USER\Desktop\MenuShowDelay Bueno, empecemos a desarmar esta clave para que comprendas el porqué de cada método que ves en el código. HEY_CURRENT_USER corresponde al ROOT. El directorio principal de la clave. Luego le siguen los subdirectorios de la clave. En este caso es uno sólo: Desktop. Y por último viene la variable, MenuShowDelay. Cuando uno desea modificar una clave del registro debe abrir primero dicha clave. Esto se consigue con los siguientes pasos: 1. Establecer el root.
2. Abrir el/los directorio/s. Aqui hay dos maneras, Si el subdirectorio tiene muchos subdirectorios debemos ir abriendolos uno por uno, o directamente los abrimos todos de una vez. Por ejemplo,
es equivalente a hacer:
El segundo parámetro, que corresponde a un tipo boolean, es para indicar si debe crear el directorio en caso de no existir dicho directorio. Una vez que todos los directorios han sido abiertos, ya podemos modificar la clave o variable que buscamos. Aqui dependerá si lo que guarda es string, integer, etc. Por ejemplo, supongamos que se guarda un string:
En el ejemplo, se cambia la variable DisableTaskMgr con el valor 1 pero en string. Una vez hecho los cambios, hay que cerrar la clave.
¿Se entiende ahora? Es necesario que conozcas el registro de Windows. Al menos, lo que vas a modificar y/o leer. Con respecto a cuando y donde hacer esto, dependerá de lo que se necesite. Puede ser en la primera vez que se va a usar el programa, y de allí en mas no debería hacer falta volver a hacerlo. Dije debería puesto que si se cambia el registro, en forma externa a tu aplicativo ya suenan las sirenas. Puede ser ante la pulsación de un botón, en el evento OnCreate del form principal... esto ya es una cuestión de requisitos, de diseño del sistema y/o de implementación. Saludos, |
#8
|
||||
|
||||
que pena, aki esta el codigo es que me salio a lo Ancho... Última edición por dec fecha: 15-08-2008 a las 05:05:57. |
#9
|
||||
|
||||
Hola BuRtOn,
Tengo para ti cuatro observaciones: 1. En el segundo OpenKey, estás pasando el texto con un espacio al final. Deberías quitar ese espacio. 2. Dudo que encuentres el directorio Desktop en HKEY_CURRENT_USER. Yo más bien diría que es HKEY_CURRENT_USER\Control Panel\Desktop. 3. El valor que se almacena en MenuShowDelay es un string. 4. ¿Tiene algún significado para ti el parámetro BTF? ¿Sabes lo que hace DeleteValue? Esto te lo pregunto porque se me hace que copiaste código sin entender el porqué y de donde sale el parámetro BTF. Ese parámetro que ves en el procedimiento está para controlar alguna acción dentro del procedimiento del cual copiaste. Ahora, para ti, ¿que es ese BTF? Te sirve de algo? Porque si haces esto:
Lo que conseguirás es eliminar dicha clave del registro (si existiese). ¿Deseas brindar la posibilidad de que se elimine y/o se escriba en el registro con un parámetro? BuRtOn, Al menos hubieras dado un nombre adecuado al procedimiento, Para que no sea tan evidente que copiaste y solo lo editaste según lo que yo te dije. Antes te pregunté si comprendías lo que es un parámetro. Di por entendido de que así era y que comprenderías que ese parámetro sólo es de interés para el que ha diseñado ese código. Que quieres te diga... a mi me huele a un simple Copy-Paste. ¿Leiste un poco la ayuda sobre el TRegistry? ¿Te fijaste si la clave en el registro está y de que tipo es? ¿O simplemente porque es un "número" intuías que verdaderamente se almacena un número? Si ejecutaras el código que expusiste, conseguirías crear una clave DisableTaskMgr (en el caso de que BTF sea True) en HKEY_CURRENT_USER\Desktop\MenuShowDelay \ con un valor entero (si tu WriteXXX fuera WriteInteger) y no estarías modificando la clave adecuada. Menos mal que antes te dije que conocieras la parte del registro con la que vas a trabajar En definitiva: 1. Establecer el root correcto. 2. Abrir el directorio Control Panel 3. Abrir el directorio Desktop 4. Escribir en MenuShowDelay el valor '0' (o el que se desee. ¡Poner antención al tipo por favor!) 5. Cerrar Ahora si, espero que se entienda. Saludos, |
#10
|
||||
|
||||
Hola delphius, Bueno como primer punto, no tengo por que disimular que copie el codigo, por que si no te diste cuenta yo recalque al principio de este hilo que el codigo me lo habia pasado un amigo, para que analisara las cosas, algo muy diferente a que me pusiera a mentir de que el codigo lo habia hecho yo.
Como segundo punto, no sabia a un 100% como se comportaria ese codigo en el Regedit de windows, por algo pregunte. Tercer punto: Lamentablemente no tengo mucho tiempo que si diga para leer las cosas que a mi me interesan y deseo aprender, por mi estudio, y no solo eso, ahora nos enfocan a visual Basic 5.0, y tambien me toca estudiar. Cuarto punto: Estudio Delphi aun por que me gusta y lo aprecio mucho, pero aveces no me queda tiempo. Quinto punto: De igual forma te agradesco que me allas ayudado, va ser muy util tu ayuda, pero enserio, ya relajate un poco delphius y no me condenes a cadena perpetua sin antes leer bien lo que yo expongo en mis hilos, lo digo en cuanto a lo que dijiste que ubira disimulado que el codigo es copiado, a mi me gusta decir las cosas como son, no puedo aparentar que ese codigo es mio, por que por algo estoy preguntndo, no es apenas obvio ???.. Bueno Gracias, voy a intentar lo que me dijiste delphius, y sin broncas, gracias. |
#11
|
||||
|
||||
Saludos, Ok delphius gracias tus aportes fueron de gran ayuda, repase bien el codigo y pude lograr lo que queria, aqui esta el codigo como lo hice:
Espero que a alguien le sea util...Bueno delphius ahora va esta pregunta, como hago el condicional, para que me haga lo siguiente: * Por ejemplo voy a ejecutar la aplicacion para que me aumente la velocidad de mi menu de inicio de windows, que es basicamente cambiar el valor de 400 a 0, como esta en mi codigo, pero si alguien ejecuta mi aplicacion y ya han modificado el registro, osea ya no esta en 400 si no en 0, en pocas palabras necesito que me determine si el menu ya ha sido optimizado oh no, osea al ejecutar mi aplicacion que me determine si el valor 400 ya ha sido modificado a 0, para enviar un mensaje que me diga: "su equipo ya habia sido optimizado", espero que me puedas colaborar, y grcias ante mano. |
#12
|
||||
|
||||
Cita:
TRegistry cuenta con los métodos necesarios para leer, guardar, eliminar claves, para saber si existe alguna clave en particular o no... En estos momentos no tengo Delphi a mano, pero estoy seguro de que para leer el valor es ReadString. El procedimiento es el mismo: 1. Establecer el root 2. Abrir directorios 3. Leer clave 4. Si el valor de clave leida es distinto a '0' 4.1. escribir en clave el valor '0' Una vez que el TRegistry se ubica en una clave, se puede trabajar con ella. De modo que con solo abrir los directorios para leerlos ya no te haría falta volver a abrirlos para modificarlo. ¿Se entiende? Sugiero que leas la ayuda sobre TRegistry. En serio, es preferible tomarse unos minutos para leer un poco y comprender mejor que intentar a ciegas. Recuerda que el registro de Windows es un tanto sencible, una metedita de pata y ¡PUM! estallan pantallitas azules. Saludos, |
#13
|
|||
|
|||
Tendrias que preguntar por el valor de la clave,
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#14
|
||||
|
||||
Saludos, ok entendi, pero ahora tengo un problema, jejeje, como se si mi registro es string o binary, o lo que sea es que no puedo editar esta clave:
[FONT='Book Antiqua','serif']HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control \SessionManager\MemoryManagement\PrefetchParameters[/font][FONT='Book Antiqua','serif']. Una vez alli aumentaremos el contenido del valor EnablePrefetcher del predeterminado "3" al recomendado "5".[/font] [FONT='Book Antiqua','serif']Gracias por su ayuda...muy amables.[/font] |
#15
|
||||
|
||||
Si te fijas, al costado izquierdo muestra una pequeña imagen que dependiendo del tipo de dato muestra ab, numero binario, etc. Si vez binario es que el valor que se guarda es hexadecimal, binario o decimal; si vez un ab es un string, etc...
La tercera columna, muestra el tipo... es mejor mirar alli Esto dice la ayuda: REG_BINARY Datos binarios sin procesar. La mayor parte de la información de los componentes de hardware se almacena en forma de datos binarios y se presenta en el Editor del Registro en formato hexadecimal. REG_DWORD Datos representados por un número de 4 bytes de longitud. Muchos parámetros de controladores de dispositivo y de servicios son de este tipo, y se presentan en el Editor del Registro en formato binario, hexadecimal o decimal. REG_EXPAND_SZ Cadena de datos de longitud variable. Este tipo de datos incluye variables que se resuelven cuando un programa o un servicio utiliza los datos. REG_MULTI_SZ Una cadena múltiple. Los valores que contienen listas o valores múltiples legibles suelen ser de este tipo. Las entradas están separadas mediante espacios, comas u otras marcas. REG_SZ Cadena de texto de longitud fija. REG_FULL_RESOURCE_DESCRIPTOR Serie de tablas anidadas, diseñadas para almacenar una lista de recursos para un componente de hardware o un controlador. Un poquito de F1 no hace mal a nadie. Sino fíjate, ¿porque crees que Schumacher se retiró? ¿Porqué me estaba metiendo demasiado en la F1? Saludos, Última edición por Delphius fecha: 15-08-2008 a las 18:18:15. |
#16
|
||||
|
||||
Ok, pero donde consigo ejemplos de como editar cada uno, pues fijate el ejemplo que te di, la clave que no pude editar....Gracias delphius....es que no se como van los parametros paa editar un Integer, o un Boolean o Binary...el string ya lo se...Gracias de nuevo...
|
#17
|
|||
|
|||
Hola
Cita:
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#18
|
||||
|
||||
OK Ok, solo que no soy bueno para el ingles....pero enserio les agradezco ejemplos, o un hilo donde esten los ejemplos, gracias...
Posdata: Conste que no estoy pidiendo que me hagan lo que quiero...gracias de nuevo.. |
#19
|
|||
|
|||
Cita:
http://www.swissdelphicenter.ch/torr...de.php?id=1665 Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#20
|
||||
|
||||
Cita:
Bueno, volvamos al tema: en la ayuda viene algunos ejemplos. Y si buscas sobre TRegistry en los foros encontrarás más. Allí verás, que al final en la "cabecera" sobre la ayuda en algunos métodos y/o propiedades del TRegistry aparece un "see also" y/o "example" Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Editar componente por defecto de Delphi 6 | kapullok_2006 | OOP | 3 | 05-08-2008 15:04:57 |
Como editar una imagen con delphi 7 | kurono | Varios | 6 | 02-01-2008 22:23:12 |
Regedit | REHome | Windows | 6 | 06-08-2007 18:55:00 |
Editar imagen en Delphi | feico | Gráficos | 1 | 03-04-2007 14:36:06 |
leer una veriable del Regedit de windows con Delphi | afarenas | Varios | 8 | 26-09-2006 02:01:30 |
|