Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Resumen Importante ! Como se puede hacer?Algo Muy Importante se los aseguro! Leanlo!!

Estas en el tema de Resumen Importante ! Como se puede hacer?Algo Muy Importante se los aseguro! Leanlo!! en el foro de Visual Basic clásico en Foros del Web. Hola a todos! llevaba tiempo perdido jjeje xD saludos a geoavila DavidElGrande y avellaneda y a los demas usuarios que me han tendido una mano, ...
  #1 (permalink)  
Antiguo 07/06/2009, 20:11
Avatar de JoseGMariani  
Fecha de Ingreso: diciembre-2008
Ubicación: Edo Lara
Mensajes: 251
Antigüedad: 15 años, 4 meses
Puntos: 8
Información Resumen Importante ! Como se puede hacer?Algo Muy Importante se los aseguro! Leanlo!!

Hola a todos! llevaba tiempo perdido jjeje xD saludos a geoavila DavidElGrande y avellaneda y a los demas usuarios que me han tendido una mano, ayudado desde mis inicios! :) los quiero saludar por que llevo meses que no entro.. Espero que LEAN porfavor esto. para que vean de que trata..

hago este post con la finalidad de ayudar a todos los demas usuarios que vayan a entrar a esta web en busca de algo que a sido posteado variass veces, con respuestas, rapidas, no tan concretas.. para ver si de una vez se aclara la forma de como hacer lo siguiente:

( antes que nada quiero dejar claro que ya le heche una repasada a las FAQ's desde la primera pagina a la ultima , y para algun admin que lea esto EN LA PAGINA 4 O 5 DE LAS FAQ`S alguien posteo una pregunta sin una respuesta, esa persona pidio que si era necesario le movieran el post ..
jeje bueno creo q con eso .. ya pruebo de que de verdad revise las FAQ'S de pies a cabeza! Tambien hay post sobre dudas en las ultimas paginas, que ya habian sido respondidas. )

Bueno la cuestion que quiero aclarar es como hacer lo siguiente:

Que mi aplicacion se inicie al iniciar windows?

aquii estan algunos post anteriores que eh investigado por ejemplo este (sigan leyendo) :

1ro) http://www.forosdelweb.com/f69/quier...indows-560636/

-Donde a la final de tanto leer tenemos el siguiente codigo utilizado por el usuario A.H.H , que si nos puede funcionar:

Código:
Private Sub Form_Load()

Dim sh As Object
Set sh = CreateObject("WScript.Shell")
sh.RegWrite ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cu rrentVersion\Run\Apagaport"), "C:\WINDOWS\Apagarport.EXE", "REG_SZ"

Set sh = Nothing

End Sub
Pero tiene un problema como señalo un usuario llamado Stoneplus dice que en vista no registra la entrada, luego oro usuario publico un enlace a una pagina que nos muestra un codigo gigantesco qe tiene ue ir en un modulo. cuyo codigo Yo no se utilizar.. si me podrian ayudar, (pero ya va que la duda es la siguiente) ..


-Segui buscando y encontre este otro post alguien pidiendo lo mismo:

http://www.forosdelweb.com/f69/como-...iar-pc-314737/
en este se da una solucion aprovada por el mismo davidelgrande (mis saludos) y dada por el usuario darkhack que es poner lo siguiente:

para hkey current user :
Código:
Shell "reg add hkcu\software\microsoft\windows\currentversion\run /v nombredelexe /t reg_sz /d C:\WINDOWS\system32\nombre.exe /f"
hkey local machine:

Código:
Shell "reg add hklm\software\microsoft\windows\currentversion\run /v nombredelexe /t reg_sz /d C:\WINDOWS\system32\nombre.exe /f"
Pero a un usuario no le funciona, a la final viene un usuario con la pregunta del millon de dolares.. escribe:

''.... hacer un Checkbox para activar o desactivar el autoinicio con la PC ''
yo ya eh preguntado como se hacia un form asi como de configuracion aki esta el link: http://www.forosdelweb.com/f69/como-...r-esto-680813/

davidElGrande me ayudo a entender que para que las configuraciones de algo se mantengan puedo usar un ini y q lo lea.. y avellaneda me aclara de como leer el valor de un checkbox al cargarse el form..

teniendo en cuenta todos los ejemplos anteriores, tengo la siguiente conclucion con sus respectivas preguntas...

como hago para hacer que mi aplicacion se inicie con windows.. si el usuario marca el checkbox .. y que no lo haga, si el check esta desmarcado?

una cosa que note, si utilizo los ejemplos de ariba de agregar una entrada al registro de windows... si esa entrada esta localizando mi aplicacion en C: por ejemplo. pero el usuario instalo mi aplicacion en D?¿

ya no me serviria.. ¿no hay alguna forma de hacerlo con los archivos ini como dice David el Grande? como se haria?

es que de verdad quiero hacer son sencillamente 4 a 5 cosas!! pero se me hace muyy dificil.. =( (Ojo esto que voy a decir no viene al tema lo dijo porcia acaso a un usuario tambien le puede servir mi pregunta que pueda el tener la misma duda de como hacerlo.. ) ya hic un form que se muestra cuando la persona pisa en configuracion.. muy bien,, en ese form va un check y dice ¡Iniciar cuando inicie el windows'' muy bien.. luego mi programa, carga un archivo de texto en un list box eso lo hago con los comondialog .. pero en el form de configuracion quisiera que el usuario marque la opcion de por ejemplo: ''Cargar de una vez el archivo: y aki le pongo un control de ruta para que el usuario busque el archivo .txt que quere cargar..) eso se puede hacer?
entoncs cuando el especifique el archivo .. cuando el programa vuelva a iniciarce ya tenga ese text cargado en el list.. osea que se mantenga la configuracion... en relaidad son 4 o 5 dudas que son cosas muy vacicas que muxa gente a buscadoo pero sin repsuestas.. :S pero primero qusiera que entre todos aclararamos definitivamente la pregunta que esta rodando de post en post aki en la web y que muxos usuarios querremos saber.. por eso publique este post como una forma de RESUMEN (si a alguien le sirven los post anteriores puen muy bien =)

la pregunta es: como se haria para hacer que mi aplicacion se inicie uando se inicia el sistema. si el usuario marca el checkbox que esta en el form de configuracon, y que no lo haga, si el check esta desmarcado.

Bueno eso fue todoo! lo hago por que de verdad quiero ayudar a que todos incluyendome yo, tengamos una respuesta concreta para que usuarios que hagan futuras busquedas tambien la tengan..

Muchas gracias espero que hayan leido es Interesante de VERDAD! hasta pronto porfavor ayudenme.. espero que sea de utilidad el resumen.
  #2 (permalink)  
Antiguo 07/06/2009, 20:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Resumen Importante ! Como se puede hacer?Algo Muy Importante se los asegur

Creo que lo más fácil es, leer directamente la clave del registro. Si está presente, marcar el checkbox de "Iniciar con el sistema", si no está presente, dejarlo desmarcado; y crear/eliminar dicha clave de acuerdo a la selección del usuario.

Para leer la clave del registro se puede usar esto:
Código vb:
Ver original
  1. Option Explicit
  2. Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  3. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  4. Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  5. Private Const ERROR_SUCCESS = 0&
  6. Private Const REG_SZ = 1
  7. Public Const HKEY_CLASSES_ROOT = &H80000000
  8. Public Const HKEY_CURRENT_USER = &H80000001
  9. Public Const HKEY_LOCAL_MACHINE = &H80000002
  10. Public Const HKEY_USERS = &H80000003
  11. Function GetKeyValue(ByVal hKey As Long, ByVal Path As String, ByVal Value As String) As String
  12.     Dim Result As Long
  13.     Dim vType As Long
  14.     Dim Buffer As String
  15.     Dim bSize As Long
  16.     Dim subKey As Long
  17.     Result = RegOpenKey(hKey, Path, subKey&)
  18.     Result = RegQueryValueEx(subKey&, Value, 0&, vType, ByVal 0&, bSize)
  19.     If Result = ERROR_SUCCESS And vType = REG_SZ Then
  20.         Buffer = String(bSize, Chr(0))
  21.         Result = RegQueryValueEx(subKey&, Value, 0&, 0&, ByVal Buffer, bSize)
  22.         If Result = ERROR_SUCCESS Then
  23.             GetKeyValue = Left(Buffer, InStr(Buffer, Chr(0)) - 1)
  24.         End If
  25.     End If
  26.     Result = RegCloseKey(subKey&)
  27. End Function
Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/06/2009, 08:47
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Resumen Importante ! Como se puede hacer?Algo Muy Importante se los asegur

Cita:
Iniciado por JoseGMariani Ver Mensaje
Muchas gracias espero que hayan leido es Interesante de VERDAD! hasta pronto porfavor ayudenme.. espero que sea de utilidad el resumen.

Haber haber y cual es la parte interesante? que me perdi con todo el contenido del mensaje, vayamos por partes, tienes que tener en cuenta 3 Cosas (basicas desde mi punto de vista) , lo que se puede hacer con el registro de windows:
  1. Crear una entrada en el registro
  2. Leer Informacion del registro
  3. Eliminar una entrada del registro
Ahora lo demas es simple logica
Si esta marcado el chek, Creas una entrada en el registro
Sino Eliminas la entrada del registro
Claro que antes de crear o eliminar del registro tienes que validar que exista o que no exista para evitar errores.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #4 (permalink)  
Antiguo 08/06/2009, 13:16
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Resumen Importante ! Como se puede hacer?Algo Muy Importante se los asegur

Que tal tio, con el app.path te crea la clave donde se encuentre tu .exe, no se como guardar el valor de un check1.value por eso utilizo un text1 para guardar el valor del check en el registro, en este caso necesitas un text1 y check1, ya lo probre y funciona bien, esta un poco chamullado el codigo pero puedes reducir el numero de funciones a tu antojo o colocarla en un modulo
Código:
Public Sub Crear_clave()
'crear clave de registro
Dim sh As Object
Set sh = CreateObject("WScript.Shell")
sh.RegWrite ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\programa01"), App.Path & "\programa01.exe", "REG_SZ"
Set sh = Nothing
End Sub

Public Sub Eliminar_clave()
'eliminar del registro
Dim sh  As Object
Set sh = CreateObject("WScript.Shell")
sh.RegDelete ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\programa01")
Set sh = Nothing
End Sub

Function LeerRegistro(ElControl As Control) As String
'Text1 = LeerRegistro(Text1)
LeerRegistro = GetSetting(App.EXEName, "Settings", ElControl.Parent.Name & "_" & ElControl.Name)
End Function

Function GuardarRegistro(ElControl As Control)
'GuardarRegistro Text1
SaveSetting App.EXEName, "Settings", ElControl.Parent.Name & "_" & ElControl.Name, ElControl
End Function

Private Sub Check1_Click()
'Si el check esta activo entonces crea la clave y llenamos el text con 1 para guardar dicho valor
If Check1.Value = 1 Then
Crear_clave
Text1.Text = "1"
Else
Eliminar_clave
Text1.Text = "0"
End If
End Sub

Private Sub Form_Load()
Text1 = LeerRegistro(Text1)
If Text1 = "1" Then
   Check1.Value = 1
Else
   Check1.Value = 0
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
GuardarRegistro Text1
End Sub
  #5 (permalink)  
Antiguo 08/06/2009, 20:18
Avatar de JoseGMariani  
Fecha de Ingreso: diciembre-2008
Ubicación: Edo Lara
Mensajes: 251
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Resumen Importante ! Como se puede hacer?Algo Muy Importante se los asegur

Hola a todos Gracia spor responder y leer el resumen, para los que se perdieron.. la verdad no es mi culpa que tengan poca memoria retentiba, me molesta que alguien publique algo como para criticar, pues se sabe las cosas que s epueden hacer con el registro.. -.- es preferible q si van a hablar sea algo que aporte, no hablar mas d elos mismo para acer un msj mas en la cuenta.. y otra ves repito lamento muxo que tal usuario se hay perdido.. ya pasemosa lso importante.

Nuevamente Gracias a todos los que repsondieron, amigo Franko tu respuesta esta genial si funciona.. y bueno uno podria ocultar el text1 y ya està. jeje xD asi que si es factible.. Gracias a los dos a davidelgrande y a franco por contestar ..

una pregunta lo que publicastes david.. es para verificar si la entrada en el registro ya existe? o ciertamente que hace? como lo implementaria.. se puediera implementar de alguna forma para mejorar el codigo de franko? como se podria mejorar .. Gracias por publicarlo.. ya cuando este bien mejorado jeje lo voya subir a las faq's =) para que asi cuando algun usuario pisa eso.. sencillamente se le manda a las FAQS.. jeje quisiera subirlo ahorita =D

pero vamos a ver como se puede implementar mas o mejorar, para que sea totalmente un Exito, je y nuevamente gracias de verdad.. y por leer todo el Resumen... que yoc q a verios usuarios si les sera de importancia.. =)

estoy pendiente por aki.. saludos! ..
  #6 (permalink)  
Antiguo 09/06/2009, 07:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Resumen Importante ! Como se puede hacer?Algo Muy Importante se los asegur

Lo que hace es leer la clave del registro que le especifiques. Si no devuelve nada, es porque el valor de registro no existe (o está vacía)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 09/06/2009, 08:45
Avatar de JoseGMariani  
Fecha de Ingreso: diciembre-2008
Ubicación: Edo Lara
Mensajes: 251
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Resumen Importante ! Como se puede hacer?Algo Muy Importante se los asegur

y si, si existe? ?

y donde se la expecifico? o.O jeje solamente eso.. miren encontre una forma .. lo saque de otro ejemplo.. que trabaja con un ini.. q agarra valores 1 o 0 voy a tratar de integrar eso con el ejemplo de franko, para que no se tenga que usar el text1 .. =) cuando este listo lo publico.. cualquier duda igual sigo posteando por aki.. =)
  #8 (permalink)  
Antiguo 09/06/2009, 09:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Resumen Importante ! Como se puede hacer?Algo Muy Importante se los asegur

Los parámetros en sí de la función ya son bastante intuitivas:
Código vb:
Ver original
  1. Valor = GetKeyValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", "Programa")
Si el valor existe, pues se marca el CheckBox, de lo contrario no.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:28.