PREGUNTAS CONTESTADAS - Visual Basic

 Hay un total de 3030 Preguntas.<<  >> 

    Pregunta:  41555 - MANIPULAR REGISTRO
Autor:  Janet marquet
Como podria manipular el registro de windows para añadir una clave en HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]?
Es para que el programa se ejecute siempre al iniciar windows.

Gracias
  Respuesta:  E-Mondo .
1ª PARTE
En un modulo pegar este código tal y como está:

' Este modulo es la forma basica de usar el registro
' de Windows, pero se puede implementar para:
'
' - Obtener valores binarios
' - Obtener un valor si la clave existe
'-------------------------------------------------------------
' Formato del Editor del Registro (Regedit)
'
' Mi PC
' +__ HKEY_LOCAL_MACHINE
' +___ Software
' +___ Microsoft /
' +___ Windows | BootCount "3"
' +___ CurrentVersion --| BPC_Region "1"
' | ConfigPath "C:\WINDOWS\Config"
' \
'
' Clave: HKEY_LOCAL_MACHINE
' Subclave: Software; Microsoft; Windows; CurrentVersion
' Entrada: BootCount; BPC_Region; ConfigPath
' Valor: "3"; "1"; "C:\WINDOWS\Config"

Dim Ret As Long 'Valor de retorno para todos procedimientos
Const REG_SZ = 1

' Claves principales de Regedit (Solo lectura)
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006

Public Const HKEY1 = &H80000000
Public Const HKEY2 = &H80000001
Public Const HKEY3 = &H80000002
Public Const HKEY4 = &H80000003
Public Const HKEY5 = &H80000004
Public Const HKEY6 = &H80000005
Public Const HKEY7 = &H80000006

'Declaraciones API para acceder al registro
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
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
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  Respuesta:  E-Mondo em
He puesto parte de un codigo para manipular el registro pero no he visto que salga, asi que lo pongo entero, si se corta, mandame un mail y lo mando. Un saludo.

Copia a partir de esta linea y pega el codigo en un modulo.

' Este modulo es la forma basica de usar el registro
' de Windows, pero se puede implementar para:
'
' - Obtener valores binarios
' - Obtener un valor si la clave existe
'-------------------------------------------------------------
' Formato del Editor del Registro (Regedit)
'
' Mi PC
' +__ HKEY_LOCAL_MACHINE
' +___ Software
' +___ Microsoft /
' +___ Windows | BootCount "3"
' +___ CurrentVersion --| BPC_Region "1"
' | ConfigPath "C:\WINDOWS\Config"
' \
'
' Clave: HKEY_LOCAL_MACHINE
' Subclave: Software; Microsoft; Windows; CurrentVersion
' Entrada: BootCount; BPC_Region; ConfigPath
' Valor: "3"; "1"; "C:\WINDOWS\Config"

Dim Ret As Long 'Valor de retorno para todos procedimientos
Const REG_SZ = 1

' Claves principales de Regedit (Solo lectura)
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006

Public Const HKEY1 = &H80000000
Public Const HKEY2 = &H80000001
Public Const HKEY3 = &H80000002
Public Const HKEY4 = &H80000003
Public Const HKEY5 = &H80000004
Public Const HKEY6 = &H80000005
Public Const HKEY7 = &H80000006

'Declaraciones API para acceder al registro
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
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
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Sub SaveValueKey(hKey As Long, strPath As String, strName As String, Optional strValue As String)
' Guarda el nombre de una clave, subclave, entrada y valor.
'
' SaveValueKey HKEY_LOCAL_MACHINE, "E-Mondo", "Number Version", "2.60"
'_________________________________________________________________________________
'
' Guarda el nombre de una clave, subclave y entrada sin valor.
'
' SaveValueKey HKEY_LOCAL_MACHINE, "E-Mondo", "Number Version", ""
'_________________________________________________________________________________
'
' Crea una subclave dentro de una clave existente.
'
' SaveValueKey HKEY_LOCAL_MACHINE, "Software\E-Mondo", "Number Version", "2.60"
'_________________________________________________________________________________
'
' Crea una subclave dentro de la clave (En el ejemplo se crea con valor).
'
' SaveValueKey HKEY_LOCAL_MACHINE, "E-Mondo\Help", "HelpPath", "C:\E-Mondo\Help"
'_________________________________________________________________________________
'
' Crea una clave con valor en la entrada denominada "(Predeterminado)".
'
' SaveValueKey HKEY_LOCAL_MACHINE, "E-Mondo", "", "Modulo VB"
' SaveValueKey HKEY_LOCAL_MACHINE, "E-Mondo\Help", "", "Modulo VB"
'_________________________________________________________________________________

RegCreateKey hKey, strPath, Ret
RegSetValueEx Ret, strName, 0, REG_SZ, ByVal strValue, Len(strValue)
RegCloseKey Ret
End Sub

Public Sub DelValueKey(hKey As Long, strPath As String, strName As String)

' Elimina el valor de una entrada o nombre de la clave.
' Con esto se consigue que el valor sea una cadena vacia.
'
' DelValueKey HKEY_LOCAL_MACHINE, "E-Mondo", "Number Version"
'_________________________________________________________________________________

RegCreateKey hKey, strPath, Ret
RegDeleteValue Ret, strName
RegCloseKey Ret
End Sub

Public Sub DelKey(hKey As Long, hSubKey As String)

' Elimina un subclave de una clave (con todos los valores incluidos).
'
' DelKey HKEY_LOCAL_MACHINE, "E-Mondo\Help"
'_________________________________________________________________________________
'
' Elimina una clave (y todas las subclaves y valores que contenga).
'
' DelKey HKEY_LOCAL_MACHINE, "E-Mondo"
'_________________________________________________________________________________

RegCreateKey hKey, strPath, Ret
RegDeleteKey Ret, hSubKey
RegCloseKey Ret
End Sub

Public Function GetValueKey(hKey As Long, strPath As String, strName As String) As Variant

' Obtiene el valor de una entrada de una clave. (Modo de uso).
'
' Dim Variable As String
' Variable = GetValueKey(HKEY_LOCAL_MACHINE, "E-Mondo", "Number Version")
'
' [Variable contendria: "2.60"]
'_________________________________________________________________________________
'
' Obtener el valor de una entrada de una subclave de otra subclave.
'
' Dim Variable As String
' Variable = GetValueKey(HKEY_LOCAL_MACHINE, "E-Mondo\Help", "HelpPath")
'
' [Variable contendria: "C:\E-Mondo\Help"]
'_________________________________________________________________________________
'
' Todas las claves tienen un valor por defecto identificado como: (Predeterminado),
' pero es posible que no tenga valor y viene dado como: (valor no establecido)
' Pero en ocasiones si tienen valor, pero no se puede dirigir a él
' como si fuera una entrada de clave normal.
'
' Para obtener dicho valor escribir lo siguiente:
'
' Dim Variable As String
' Variable = GetValueKey(HKEY_LOCAL_MACHINE, "Clave", "")
'
' Poniendo "", recoge el valor que tenga (Predeterminado) de la clave,
' ya tenga o no tenga valor.
'_________________________________________________________________________________

Dim strValue As String
Dim lngLen As Long
Dim lngType As Long
Dim Key As Long
Dim X As Long
X = RegOpenKey(hKey, strPath, Key)
strValue = Space$(256)
lngLen = Len(strValue)
X = RegQueryValueEx(Key, strName, 0, lngType, ByVal strValue, lngLen)
If X = 0 And lngType = REG_SZ And lngLen > 1 Then
strValue = Left$(strValue, lngLen - 1)
Else
strValue = ""
End If
GetValueKey = strValue
X = RegCloseKey(Key)
End Function

    Pregunta:  41567 - IMPRIMIR EN FORMATO PDF
Autor:  Mauricio Marroquin
Genero un documento .doc y quiero imprimir este en formato PDF, sin que se muestre ningun cuadro de sistema pidiendo nombre para el archivo o algo similar.
  Respuesta:  toni rodado
Revisa la aplicacion PDFCreator el codigo fuente esta disponible en la pagina de la aplicacion.

    Pregunta:  41609 - ERROR AL UTILIZAR FUNCIÓN DE DLL
Autor:  Juan Carlos Cordon Escudero
Buenas, mi problema es el siguiente. Tengo un programa realizado en VB6, el cual necesita utilizar una DLL externa (realizada en Visual C++), pero unas veces me da problemas de utilización y otras me saca fuera de VB6, a la función en concreto que tengo que llamar le mando los parámetros correctos. Además tengo la DLL registrada correctamente, la tengo añadida a Proyecto/Referencias, la tengo declarada en el modulo.bas (he probado con Public Declare Function y con Declare Function) y sigo sin poder utilizarla correctamente. Agradecería toda ayuda.
  Respuesta:  Rodolfo Solano
Hola Juan Carlos.

Yo he trabajado con VB6.0 y he realizado llamados a dll`s que he desarrollado y en la mayoria de los problemas que me encontre, es en el tipo de declaraciones, mas concretamente con aquellos donde se manejen numeracion. Por ejemplo si utilizas una variable numerica y la declaras entera y la dll la tiene declara de otra forma esto te causara problemas y enviara un mensaje de que encontro algun error en la memoria y se cerrara. El problema radica en la interpretacion de cada uno de los procesadores y compiladores que se esten utilizando. Mi sugerencia es que verifiques como los declaras y que de esa misma forma se encuentre declarado igual tanto en el programa como en la dll.

Espero que mis comentarios te ayuden a solucionar tu problema.

Saludos

    Pregunta:  41703 - HACER UN ZOOM EN MODO DE EJECUCION
Autor:  Mauricio Soto
Hola, antes que nada les cuento el programa(Visual Basic 5.0 ó 6.0): se trata de unos valores que estan en un MSFlexgrid(2 columnas) y despues los grafico con la instruccion Pset en un eje de coordenadas X e Y(lo cual no hay problema) la complicacion es que quisiera hacerle un zoom (a eleccion del usuario) a esta nube de puntos con el puntero del raton en modo de ejecucion........bueno esa es mi inquietud..............se lo agradeceria enormemente si me ayudaran!....... chao
  Respuesta:  Carlos Ortega
Hice un programa de gráficos que también hacia zooms definidos por el usuario. No se si te servirán mis soluciones, pero le encontré dos.
La primera, fué usar la instruccion point (esta instrucción, usa la sintaxis contenedor.point (X,Y) y te devuelve el color del píxel de la posición X,Y. Lo que hice, fué cojer un cuadrado de LxL y en un picture externo, con la instrucción Pset, ir poniendo los píxels recibidos pero ampliandolos en factor 5, es decir, por cada píxel, en el picture, se dibujaba un cuadrado de 5x5 píxels del mismo color. La pega es que no quedaba muy bien por eso de la distorsión de píxels.
La segunda y definitiva, fué cojer el cuadrado de LxL y convertirlo en un nuevo gráfico, es decir, si antes mi gráfico iba desde -X hasta X y desde Y hasta -Y con una escala de 1, ahora, recalculaba un pequeño gráfico en que empezaba en el punto C,D y acababa en C+L,D+L y dibujaba el gráfico dentro con una escala de Z (definida por el usuario). De esta manera, el gráfico quedaba perfectamente definido y el zoom era mucho más exacto. Si quieres, te puedo enviar una copia del programa para que veas por ti mismo como queda esta segunda ampliación. chao!

    Pregunta:  41706 - COMPRIMIR CON CONTRASEÑA
Autor:  Jerry Falcon
Hola a todos.

He agregado a un programa la opcion de comprimir / descomprimir utilizando los componentes azip32.dll y aunzip32.dll, pero no se como crear un archivo zip con contraseña. o como descomprimir un archivo zip que tiene contraseña.

Si tienen algun componente que haga esto les agradeceria mucho la informacion que me den.

De antemano Gracias.

Jerry Falcon
  Respuesta:  john malcolm sanchez
primero, para poder usar contraseñas propias, las librerias deben estar registradas, si lo estan, usando las funciones encrypt y decrypt puedes utilizar contraseña

    Pregunta:  41712 - TOOL TIP TEXT DE MÁS DE UNA LINEA
Autor:  Felipe
Como hacer que un tool tip text tenga mas de una linea hacia abajo.
  Respuesta:  Milton Hans Galarce
La mejor forma es que tu lo hagas con un Label.
Lo manejas invisible y dependiendo en donde lo quieras poner, te manejas con el evento Mouse_Move y lo haces visible.
La gran ventaja que tiene es que puedes tener varias lineas hacia abajo
y para que sea igual a Tool Tip, le pones el BackColor Amarillo.

    Pregunta:  41732 - VACIAR PORTAPAPELES OFFICE XP
Autor:  Jesus Pardo chacon
Buenas tardes: me pueden auydar acrear una macro excel para que vacie el portapapeles de office.

de antemano muchas gracias
  Respuesta:  eider mauricio aristizabal erazo
depronto esto te sirva de algo...
prueba utilizando noting

Ejemplo de los métodos Paste, PutInClipboard y SetText

El siguiente ejemplo demuestra el movimiento de datos de un control TextBox a un objeto DataObject, de un objeto DataObject al Portapapeles y del Portapapeles a otro control TextBox. El método PutInClipboard transfiere los datos del objeto DataObject al Portapapeles. Se utilizan también los métodos SetText y Paste.

Para utilizar este ejemplo, copie este código de ejemplo en la parte Declaraciones de un formulario. Asegúrese de que el formulario contiene:

Dos controles TextBox llamados TextBox1 y TextBox2.

Un control CommandButton llamado CommandButton1.
Dim MyData As DataObject

Private Sub CommandButton1_Click()
Set MyData = New DataObject

MyData.SetText TextBox1.Text
MyData.PutInClipboard

TextBox2.Paste
End Sub

Private Sub UserForm_Initialize()
TextBox1.Text = "Move this data to a " _
& "DataObject, to the Clipboard, then to " _
& "TextBox2!"
End Sub
  Respuesta:  Cecilia Colalongo
Fijate con ésto:

Const SHERB_NOCONFIRMATION = &H1
Const SHERB_NOPROGRESSUI = &H2
Const SHERB_NOSOUND = &H4
Private Type ULARGE_INTEGER
LowPart As Long
HighPart As Long
End Type
Private Type SHQUERYRBINFO
cbSize As Long
i64Size As ULARGE_INTEGER
i64NumItems As ULARGE_INTEGER
End Type
Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hwnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
Private Declare Function SHUpdateRecycleBinIcon Lib "shell32.dll" () As Long
Private Declare Function SHQueryRecycleBin Lib "shell32.dll" Alias "SHQueryRecycleBinA" (ByVal pszRootPath As String, pSHQueryRBInfo As SHQUERYRBINFO) As Long

SHEmptyRecycleBin Me.hwnd, vbNullString, 0
SHUpdateRecycleBinIcon

    Pregunta:  41798 - COMO REALIZAR EFECTOS DE TRANSICIONES ENTRE FORMULARIOS?
Autor:  JHON ALEXANDER BRAVO TRUJILLO
Por favor, me gustaria saber como podria realizar efectos de transiciones para pasar de un formulario a otro en VB5.0 ya que estoy haciendo un programa que contiene videos, animaciones, imagenes y sonidos y al cargar estos cuando se pasa de una pantalla a otra, hay un pequeño lapso de tiempo despues de que ha salido el formulario llamado para que salgan los videos o animaciones, y pienso que esto se solucionaria con un efecto de transición, mientras aparecen y se cargan los videos.

De antemano, MUCHAS GRACIAS.
  Respuesta:  Boule Mikhael Najm Bossio
PRIMERO CARGA EL FORMULARIO Y LUEGO MUESTRALO, AQUI TIENES UN CODIGO EJEMPLO:

LOAD FRMWHATEVER
ME.HIDE
FRMWHATEVER.SHOW
UNLOAD ME

TAMBIEN TE FUNCIONA MUCHISIMO MEJOR SI CARGAS LOS OBJETOS ANTES DE MOSTRARLOS

LOAD FORMULARIO
LOAD FORMULARIO.OBJETO
FROMULARIO.SHOW

    Pregunta:  41936 - BORRAR DIRECTORIOS RECURSIVAMENTE (DELTREE)
Autor:  Emiliano C
Cómo puedo borrar directorios en forma recursiva y con búsqueda?
Ej:Tengo el siguiente arbol

raiz
|
|___borrar
| |____arc1
|
|___dir2
|_____arch2
|______borrar

Y quiero borrar todos los directorios "borrar" con sus contenidos.
Sería como hacer un deltree, pasándole como entrada dir borrar /s /ad
Gracias
  Respuesta:  Agustín Dávila
Utiliza este procedimiento que aquí te escribo:

Private Sub Borrar_Carpeta(Ruta As String)
On Error GoTo erro1
Dim a As String
a = MsgBox("¿ Está seguro que desea borrar esta carpeta ?", vbQuestion + vbYesNo)
If a = vbYes Then
Set fs = CreateObject("Scripting.FileSystemObject")
fs.deletefolder (Ruta)
End If
Exit Sub
erro1:
MsgBox Err.Description, vbCritical
End Sub

    Pregunta:  41941 - ENLAZAR DB SQL 7 A UN DATAENVIRONMENT EN TIEMPO DE EJECUCIÓN
Autor:  Luis Muro
Tengo un problema con el DataEnvironment, al crear mis reportes. El problema radica en que mi base de datos de SQL 7.0 no está pre definida, es decir que ésta depende de la elección que se haga en mi sistema. Tengo 6 bases de datos (de diferentes empresas), pero con la misma estructura (mismas tablas, procedimientos almacenados, vistas, etc...) así como las mismas plantillas de reportes. Lo único que diferencia una de otra son los registros que contienen.

Deseo poder enlazar la base de datos de SQL al DataEnvironment en tiempo de ejecución.

Espero obtener ayuda de ustedes.

Gracias.
  Respuesta:  Alí Díaz
Suponga que:
- "DataE" es el nombre del DataEnvironment
- ruta es la ruta de la base de datos y debe ir entre comillas dobles

Unload DataE
DataE.Connections(1).Open ("ruta")

Listo; ojalá le sirva.

|<  <<  240 241 242 243 244 245 246 247 248 249 250  >>  >|