Hay un total de 3030 Preguntas. | << >> |
Pregunta: | 24051 - CODIGO PARA PONER UN PROGRAMA COMO PREDETERMINADO |
Autor: | antonio Gomez Sanchez |
Me gustaria saber cual es el codigo para poner como predeterminado un programa creado con visual basic que este en conflicto con otro.
Ya que he creado un navegador para ver paginas web y me gustaria que saliera en tiempo de ejecucion un formulario que te preguntase si quieres poner el Navegador como predeterminado asi podrias abrir vinculos con ese navegador o ver paginas webs offline sin tener que usar el predeterminado como por ejemplo I.EXPLORER O NETSCAPE |
Respuesta: | Eduard Pascual Sáez |
Si echas un vistazo al registro de Windows, verás que en HKEY_CLASSES_ROOT aparecen todas las extensiones de archivo reconocidas por el sistema, así como el tipo de archivo que representan. Por ejemplo, en mi máquina los archivos .htm son del tipo htmlfile. Más abajo, en la entrada htmlfile/shell/open/command, aparece
"C:\Archivos de programa\Internet Explorer\iexplore.exe" -nohome Si cambias esta entrada por algo así como: App.Path + App.ExeName + "%1", obtendrás que cuando windows quiera ejecutar un archivo que identifique como 'htmlfile' lance tu ejecutable pasándole el nombre completo del archivo como parámetro. Luego sólo te has de preocupar de leer el parámetro y hacer que tu programa abra el archivo. Si es un navegador, te puede servir algo así: comboboxDireccion.Text = parametro comboboxDireccion_KeyPress(KeyCodeConstants.vbKeyReturn) Esto hace creer a tu programa que el usuario ha insertado la dirección del archivo en la barra de direcciones y ha presionado Enter. Puedes abreviar con comboboxDireccion_KeyPress(13), pero te recomiendo añadir un comentario al código para recordar que el 13 es el código de la tecla Enter. Por último, solo te falta consultar el registro cuando se inicie tu aplicación y, si el usuario desea establecer tu programa como predeterminado, modificar el registro. Para ello hay dos métodos: el primero consiste en abrir los archivos .dat del registro y modificarlos a pelo... poco recomendable. El segundo consiste en usar la API de Windows... algo peligroso pero eficaz cuando sabes lo que tocas. Deberás buscar las extensiones que quieras asociar a tu programa (con el . incluído) en HKEY_CLASSES_ROOT y consultar la entrada predeterminada. Una vez las tengas todas (usa un array de String), tendrás los tipos de archivo. Antes de continuar, estaría bien revisar el array en busca de valores duplicados, pero no es imprescindible. Las direccioes del registro que tendrás que modificar a continuacion serán algo así como: Dim tipoArchivo As String, entrada As String For Each tipoArchivo in TiposArchivos Do 'TiposArchivos seria el array... entrada = "HKEY_CLASSES_ROOT\" & tipoarchivo & "\shell\open\command\" 'codigo para modificar o leer cada entrada Next En cada entrada, el contenido de la clave predeterminada es el comando que se ejecutará cuando un usuario intente abrir un archivo del tipo correspondiente. Si deseas que tu programa reciba el nombre completo del archivo como parámetro, indícalo con el parámetro %1 después de la ruta de tu programa. El código para modificar el registro lo dejo en tus manos. Hay muchas bibliotecas por la red que facilitan el manejo del registro desde VB. Si necesitas más ayuda, no dudes en enviarme un e-mail. Atentamente, Eduard Pascual, programador semi-profesional |
Pregunta: | 24086 - LENTIDUD AL CERRAR BASE DE DATOS CON DAO EN RED. |
Autor: | Chema |
Cuando una base de datos esta abierta por dos usuarios e intento cerrarla tarda aproximadamente 1 segundo, cuando solo es una no es apreciable, pero cuando son 5 la lentitud es considerable. ¿Existe alguna forma de solucionar esto?
Utilizo VB5 con bases de datos access y dao/jet 3.5. |
Respuesta: | guampi guampi |
al establecer la conexion con la base, hacelo de modo asincrono. asi, al cerrarla, tu aplicacion no se bloquea esperando que termine de ejecutarse la accion de cerrar la base |
Pregunta: | 24108 - ABRIR CONSULTA ALMACENADA CON PARAMETROS Y ADO |
Autor: | Christian |
Tengo un gran inconveniente al querer ejecutar esta consulta en una base de acces ya que la misma tiene dos parametros y no se como pasarselos, el ejemplo que esta abajo funciona bien si la consulta no tiene parametros pero a la hora de ponerle un parametro no se como pasarselo.
Con DAO si funciona pero con ADO no tengo ni idea de como hacerlo Set cn = New ADODB.Connection cn.Open ("Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=True;Data Source=" & App.Path & "\General.mdb") RsUsuarios.Open "[Ingreso_al_sistema]", cn, adOpenKeyset, adLockReadOnly, adCmdStoredProc Ingreso_al_Sistemas --> es la consulta de access Si alguuien me puede ayudar se lo agradeceria mucho De ante mano gracias a todos por colaborar Saludos Christian |
Respuesta: | nahuel penna |
esto en un modulo
Public cn As Connection Sub conexion() Dim E As String ChDir App.Path ChDrive App.Path E = App.Path If Len(E) > 3 Then E = E & "\" End If Set cn = New Connection With cn .Provider = "microsoft.jet.oledb.4.0" .ConnectionString = "" & E & "db1.mdb" .CursorLocation = adUseClient End With cn.Open End Sub esto en load del formulario With Rs5 .Source = "SELECT ..." .ActiveConnection = Module1.cnprogramacion2 .CursorType = adOpenStatic .CursorLocation = adUseClient .LockType = adLockOptimistic .Open End With |
Pregunta: | 24113 - QUIERO MOSTRAR UNA PANTALLA PRESIONANDO UN F4 |
Autor: | Juan Jose Saldana Leal |
En Visual Basic 5... estoy en una pantalla de captura y sin salir de esa y presionando F4 quiero aparecer otra pantalla que tiene un listado de articulos... |
Respuesta: | christian gonzalez |
probá creando un menú con el editor de menúes, poné la propiedad visible igual a False y el metodo abreviado elegís tu F4 o cualquier otro metodo que dispone. y luego programas el codigo click del menu correspondiente, que haga lo que vos querés, podés mostrar el furmulario articulos en forma modal y luego con un boton lo descargás o ocultás.
simple y sencillo. |
Respuesta: | Antonio Quintela |
En el evento KeyDown del formulario de captura debes incluir el siguiente código:
Public Const VK_F4 = &H73 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = VK_F4 Then ' Incluye el código de carga del formulario con el listado de articulos End If End Sub Además la propiedad KeyPreview del formulario de captura debe tener el valor: true. Espero que te funcione, saludos. |
Pregunta: | 24143 - CAMBIAR COLOR A MENúS |
Autor: | sergio alcuña |
Como puedo cambiar el color del fondo a un menú y tambien a los imputbox y msgbox |
Respuesta: | Agustín Dávila |
La respuesta no la encontrarás en el Visual Basic, si no en el propio Windows, o sea que para poder cambiar los colores del menú y del inputbox o msgbox tendrás que ir a "Panel de Control/Pantalla/Apariencia". Aunque no se si con alguna API de windows se podría cambiar |
Pregunta: | 24151 - ERROR 3050 |
Autor: | Rodolfo Piña Duhart |
Ayuda Urgente......
Estoy ejecutando una aplicación en VB5.0 y al tratar de abrir una base de datos ACCESS me arroja el siguiente error: RUN-TIME ERROR 3050 NO SE HA PODIDO BLOQUEAR EL ARCHIVO..... Estoy accesando la base como: Dim db1 as DATABASE, tabla1 as Recordset set db1 = Opendatabase(nombredebase.mdb) set tabla1 = db1.OpenRecordset(nombretabla) Gracias por vuestra ayuda..... |
Respuesta: | MAURICIO DIAZ |
lo resolvi en 1 minuto con tu ayuda me posicione en el el disco donde estaba el archivo y di clik secundario para ver las propiedades y desbloque los usuarios dando atributos para escribir en ese momento corrieron archivos des bloqueados, espero le sirva a alguien saludos y gracias .. |
Respuesta: | Hector Shamir Perez |
Hola Rodolfo,
Cuando intentas abrir una base de datos Access, es creado un archivo .ldb para bloquearla, cuando no se puede crear este archivo se genera ese error. Verifica que el directorio donde se encuentra la base de datos no sea de solo lectura para el usuario de la PC Saludos, espero te sirva. |
Pregunta: | 24164 - ¿CONVIENE USAR ETIQUETAS EN LUGAR DE VARIABLES GLOBALES? |
Autor: | Miguel Esquef |
Estoy desarrollando una aplicacion en VB6 y trabaja con muchas cadenas y numeros y me preguntava si en lugar de declarar muchas variables globales para almacenar las cadenas lo podria hacer en etiquetas ocultas (o esto ocasiona mas desperdicio de recursos). Ese es mi interrogante. Gracias |
Respuesta: | Mario Campos |
Sí, el tener instancias de objetos sobre formularios insume más recursos del sistema, lo que te conviene hacer si estás trabajando con variables globales, es declararlas en un módulo estándar, va a ser mejor y aparte a e estas variables las vas a tener disponibles para todo el proyecto. |
Pregunta: | 24187 - ERROR AL REGISTRAR |
Autor: | Alfredo Mujica M |
Hola:
Tengo un proyecto, genero el empaquetado y al instalar el sistema en otra maquina me marca el siguiente error: No se puede registrar el archivo: 'C:\Windows\Temp\msftqws.pdw\$(DLLSelfRegisterEx)' por que no se encontro. Ya busque este archivo en mi maquina y no lo encuentro, espero alguien sepa que puedo hacer. Gracias, muchas gracias. |
Respuesta: | Agustín Dávila |
Este problema ya me sucedió a mi, y me paso al incluir un control de Calendario de windows. La solución es buscar el archivo "Setup.lst" que te origina al empaquetar el programa, abrirlo con el "Notepad" por ejemplo y buscar la cadena "DllSelfregisterEx" y cambiarla por la cadena "DllSelfregister". |
Pregunta: | 24209 - PROBLEMAS CON LA INSTALACIóN DE APLICACIONES VB6 |
Autor: | Zulema Bustamante |
Estoy utilizando el siguiente ambiente de desarrollo:
1.Windows 98 version Ingles 2.-VB6 version Ingles 3.-Access 2000 ver Castellano Realizo el empaquetado de mi aplicación usando wl Wizard que trae VB6 y tengo los siguientes problemas: a) Al empaquetar me notifica que 2 dlls no tienen los archivos de dependencia, pero igual crea el empaquetado.No se a que se debe esto ni sus consecuencias. b) Al instalar la aplicación en el siguiente ambiente: b1. Windows 98 castellano b2. Access 2000 en castellano lo instala sin problemas pero cuando quiere acceder a la base de datos me arroja el error "Class not support......" Segun estuve investigando el tema es mdac_typ.exe y realice los siguientes pasos: 1.Corri Service PAck 5 para VB6 en ingles 2.Actualice mdac a md |
Respuesta: | Mauricio Leyzaola |
Hola Zulema. A mi me ocurrio algo parecido hace unas semanas en mi trabajo. Mi problema fue que estaba haciendo el programa en una máquina con NT y como no genera adecuadamente el ejecutable (ese es otro tema y no me preguntes por que), tenia que compilarlo y generar el EXE en una máquina con Windows 98.
El programa utilizaba referencias a ADO 2.1 (cuando lo hice en Windows NT) porque esa era la versión que tenía esa máquina, pero al compilarlo y crear el paquete de instalación en la máquina de Windows 98 el MDAC era versión 2.5 (que es la versión que finalmente se instalaba en las máquinas cliente). Consulte la enredosa y enorme página de Microsoft y después de varias horas descubrí que el estúpido programa de instalación era el problema. La solución: 1. Consigue la versión más actual de MDAC (ADO) que funcione en tu sistema. Cuidado porque las más recientes solamente funcionan con Windows 2000. 2. Desde VB, cuando hagas referencia al ADO, utiliza la misma versión del punto 1. Y naturalmente, esta versión deberá estar presente en el equipo donde compiles tu proyecto y lo hagas EXE. 3. Al hacer el paquete de instalación omite el archivo MDAC para que no te lo incluya en la instalación. Es más recomendable que actualizes cada máquina cliente con la última versión de MDAC de la misma manera que el punto 1. 4. Reemplaza todos los Falso por False y todos los Verdadero por True en el archivo Setup.lst (lo puedes abrir con el notepad de windows), esto al parecer causa problemas con lo idiomas (ya sabes, made in memo puertas). 5. Haz la instalación como lo harías normalmente. Espero que sirva. Saludos y suerte. |
Pregunta: | 24262 - SCROLLBARS EN MDI |
Autor: | picarog . |
Tengo un formulario mdi en el que dentro de él se cargan otros formularios que necesitan barra de desplazamiento vertical. Cuando el formulario es demasiado largo aparece la barra y sin problemas. Bien, el problema lo tengo cuando necesito tener el enfoque en un campo que está al fondo del formulario, el foco lo coje, pero la barra de desplazamiento no se mueve.
¿Como puedo solucionar esto? Es un poco urgente.... Gracias de antemano |
Respuesta: | coatl_zrm ccp |
Saludos picarog.
Hace unas semanas yo tenia la misma duda, pero yo queria mover los scroll bars de la ventana hija y no del mdiForm. Después de buscar mucho y no encontrar nada me dicidí a hacerlo yo mismo y me he sorprendido, pues despues de tantos dolores de cabeza la respuesta resulto ser no muy complicada. Bien, logre solucionar mi problema y de paso pude hacer lo que tu quierias: mover las scroll bars del mdiForm. '---------------------------- '-En un módulo '--------------------------- Option Explicit Private Type SCROLLINFO cbSize As Long fMask As Long nMin As Long nMax As Long nPage As Long nPos As Long nTrackPos As Long End Type Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function SetScrollPos Lib "user32" (ByVal hwnd As Long, ByVal nBar As Long, ByVal nPos As Long, ByVal bRedraw As Long) As Long Private Declare Function SetScrollInfo Lib "user32" (ByVal hwnd As Long, ByVal n As Long, lpcScrollInfo As SCROLLINFO, ByVal bool As Boolean) As Long Private Declare Function GetScrollInfo Lib "user32" (ByVal hwnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long Private Declare Function ScrollWindowByNum& Lib "user32" Alias "ScrollWindow" (ByVal hwnd As Long, ByVal XAmount As Long, ByVal YAmount As Long, ByVal lpRect As Long, ByVal lpClipRect As Long) Private Declare Function GetWindowRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT) Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Private Declare Function GetFocus Lib "user32" () As Long Private Const SB_VERT = 1 Public Const GW_CHILD = 5 Function Focus(howner As Long) Dim s As SCROLLINFO Dim H As Long, nOldPos As Long Dim RecWin As RECT, RecControl As RECT Dim DimWin As Integer, DimControl As Integer howner = GetWindow(howner, GW_CHILD) H = GetFocus() GetWindowRect H, RecControl GetWindowRect howner, RecWin GetScrollInfo howner, SB_VERT, s nOldPos = s.nPos 'Determina las dimensiones de los controles (en este caso solo 'Alto') DimWin = (RecWin.Bottom - RecWin.Top) - 50 DimControl = RecControl.Bottom - RecControl.Top If (RecControl.Top < (RecWin.Top + 25)) Or (DimControl > DimWin) Then 'si el control esta por arriba del área de trabajo s.nPos = s.nPos - ((RecWin.Top + 25) - RecControl.Top) ElseIf RecControl.Bottom > RecWin.Bottom Then 'si el control esta por debajo del área de trabajo s.nPos = ((RecControl.Bottom + 25) - RecWin.Bottom) + s.nPos End If SetScrollInfo howner, SB_VERT, s, True 'Activa las coordenadas del Scroll ScrollWindowByNum howner, 0, nOldPos - s.nPos, 0, 0 SetScrollPos howner, SB_VERT, s.nPos, True End Function '------------------------------------------------------------------------- '- Dentro de cada uno de los controles del MdiChild debes colocar lo siguiente '-En este caso yo coloque una matriz de textbox '-------------------------------------------------------------------------- Private Sub Text1_GotFocus(Index As Integer) Focus MDIForm1.hwnd End Sub Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) Focus MDIForm1.hwnd End Sub Si te interesa un pequeño ejemplo mandame tu email, dado que no lo haz puesto en tu pregunta. Ah, si hay un usuario que sepa como mejorar este codigo favoir de escribirme, me interesa mucho saber que esto se pueda reducir. Gracias. |
|< << 188 189 190 191 192 193 194 195 196 197 198 >> >| |