Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-08-2008
Avatar de BuRtOn
BuRtOn BuRtOn is offline
Miembro
 
Registrado: ene 2008
Ubicación: Bucaramanga
Posts: 215
Poder: 17
BuRtOn Va por buen camino
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:

Código Delphi [-]
procedure DisableTaskMgr(bTF: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);
  if bTF = True then
  begin
    reg.WriteString('DisableTaskMgr', '1');
  end
else if bTF = False then
  begin
    reg.DeleteValue('DisableTaskMgr');
  end;
  reg.CloseKey;
end;

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.
Responder Con Cita
  #2  
Antiguo 15-08-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
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?
Responder Con Cita
  #3  
Antiguo 15-08-2008
Avatar de BuRtOn
BuRtOn BuRtOn is offline
Miembro
 
Registrado: ene 2008
Ubicación: Bucaramanga
Posts: 215
Poder: 17
BuRtOn Va por buen camino
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..
Responder Con Cita
  #4  
Antiguo 15-08-2008
Avatar de BuRtOn
BuRtOn BuRtOn is offline
Miembro
 
Registrado: ene 2008
Ubicación: Bucaramanga
Posts: 215
Poder: 17
BuRtOn Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 15-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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:

Código Delphi [-]
DisableTaskMgr(True); // O puede ser False

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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 15-08-2008
Avatar de BuRtOn
BuRtOn BuRtOn is offline
Miembro
 
Registrado: ene 2008
Ubicación: Bucaramanga
Posts: 215
Poder: 17
BuRtOn Va por buen camino
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..
Responder Con Cita
  #7  
Antiguo 15-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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.

Código Delphi [-]
Reg.Rootkey := ....;

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,
Código Delphi [-]
Reg.OpenKey('software',True);
Reg.OpenKey('Microsoft',True);
Reg.OpenKey('Windows',True);

es equivalente a hacer:

Código Delphi [-]
Reg.OpenKey('software\Microsoft\Windows',True);

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:

Código Delphi [-]
Reg.WriteString('DisableTaskMgr','1');

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.

Código Delphi [-]
Reg.CloseKey;

¿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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 07:16:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi