• Domingo 22 de Diciembre de 2024, 09:08

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Brroz

Páginas: 1 2 3 [4] 5 6 ... 43
76
Visual Basic 6.0 e inferiores / Re: Obtener Valor Binario Del Registro
« en: Sábado 19 de Febrero de 2005, 10:15 »
Hola

Ahí va:
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Const HKEY_LOCAL_MACHINE = &H80000002
  5. Private Const ERROR_SUCCESS = 0&
  6. Private Const KEY_QUERY_VALUE = &H1
  7. Private Const REG_BINARY = 3
  8.  
  9. Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
  10. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  11. Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
  12.  
  13. Private Sub Command1_Click()
  14.    
  15.     Dim lRc As Long
  16.     Dim lhKey1 As Long, lhKey2 As Long
  17.    
  18.     lRc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software", 0&, KEY_QUERY_VALUE, lhKey1)
  19.     If lRc <> ERROR_SUCCESS Then Exit Sub
  20.    
  21.     lRc = RegOpenKeyEx(lhKey1, "Microsoft", 0&, KEY_QUERY_VALUE, lhKey2)
  22.     RegCloseKey lhKey1
  23.     If lRc <> ERROR_SUCCESS Then Exit Sub
  24.    
  25.     lRc = RegOpenKeyEx(lhKey2, "Windows", 0&, KEY_QUERY_VALUE, lhKey1)
  26.     RegCloseKey lhKey2
  27.     If lRc <> ERROR_SUCCESS Then Exit Sub
  28.    
  29.     lRc = RegOpenKeyEx(lhKey1, "CurrentVersion", 0&, KEY_QUERY_VALUE, lhKey2)
  30.     RegCloseKey lhKey1
  31.     If lRc <> ERROR_SUCCESS Then Exit Sub
  32.    
  33.     lRc = RegOpenKeyEx(lhKey2, "Controls Folder", 0&, KEY_QUERY_VALUE, lhKey1)
  34.     RegCloseKey lhKey2
  35.     If lRc <> ERROR_SUCCESS Then Exit Sub
  36.  
  37.     Dim bytData(4096) As Byte, lLen As Long
  38.     lRc = RegEnumValue(lhKey1, 1&, "Presentation Cache", 19&, 0&, REG_BINARY, bytData(0), 4096)
  39.     RegCloseKey lhKey1
  40.    
  41.     If lRc = ERROR_SUCCESS Then
  42.         Dim sChr As String, i1 As Integer
  43.         For i1 = 0 To 4095
  44.             sChr = sChr & Chr(bytData(i1))
  45.         Next i1
  46.         Debug.Print sChr
  47.     End If
  48.  
  49. End Sub
  50.  
  51.  

Se puede mejorar redimensionando bytData a la longitud exacta del valor y recuperando el índice del valor, pero como sé que así en mi caso vale...  imagino que en el tuyo también...

Chao.

77
Visual Basic 6.0 e inferiores / Re: Adjuntar Archivo Desde Vb
« en: Sábado 19 de Febrero de 2005, 09:10 »
Hola bezael

Puedes usar los controles MAPISesion y MAPIMessages (Microsoft MAPI Controls) para crear funciones de mensajería usando el subsistema mapi de windows. También podrías implementar las mismas funcionalidades que estos controles mapi mediante funciones del api, aunque te lo tendrás que currar mucho más, aunque con la ventaja de implementar sólo las funciones que te interesen (en tu caso enviar un correo) en vez de tener que cargar un formulario, que hasta a lo mejor ni te hace falta, para contener los controles con todo su peso provocado por código que no vas a usar.
Creo que no hay por el foro algún código de ejemplo, pero intenta currártelo tú que no es complicado (sobre todo si usas los controles). Si te atrancas tanto de una forma u otra, avisa que te echo un cable.

También si tienes instalado outlook puedes utilizarlo para tus fines.
Si la vagancia te puede, aquí tienes un ejemplo:
http://foros.solocodigo.com/index.php?showtopic=9352

La ventaja de mapi frente outlook (aunque éste también use el subsistema mapi) es que permite utilizar cualquier cliente de correo que tengas por defecto. La contrapartida es que con outlook podrás acceder a muchas de las funcionalidades del outlook, carpetas, etc.

El problema que tiene el subsistema mapi aparece cuando después de instalar outlook 2003 aparecen mensajes avisando de que una apliacación está intentando acceder a la libreta de direcciones, o que la aplicación está enviando un mensaje, o cosas por el estilo. Esto jode los procesos automáticos y en general a la gente que intenta hacer cosas en windows sin que microsoft le toque las pelotas bajo el pretexto de la seguridad.
Yo sólo conozco una forma de evitar esto: usar el protocolo smtp escribiendo directamente en el puerto en cuestión.
Si por un casual alguien conoce otra solución, por favor que la diga.

Chao.

78
Visual Basic 6.0 e inferiores / Re: Manipular Msflexgrid
« en: Sábado 19 de Febrero de 2005, 08:50 »
Hola az8

Hasle asín:
Código: Text
  1.  
  2.     With MSFlexGrid1
  3.         .Clear
  4.         .Cols = 11
  5.         .Rows = 11
  6.         .FixedCols = 1
  7.         .FixedRows = 1
  8.     End With
  9.    
  10.     Dim iCol As Integer
  11.     For iCol = 1 To 10
  12.         MSFlexGrid1.TextMatrix(0, iCol) = "Cabecera " & iCol
  13.     Next iCol
  14.    
  15.     Dim iRow As Integer
  16.     For iRow = 1 To 10
  17.         MSFlexGrid1.TextMatrix(iRow, 0) = iRow
  18.         For iCol = 1 To 10
  19.             MSFlexGrid1.TextMatrix(iRow, iCol) = "Fila " & iRow & ",Columna " & iCol
  20.         Next iCol
  21.     Next iRow
  22.  
  23.  

Abur.

79
Visual Basic 6.0 e inferiores / Re: Ejecucion De Un *.exe
« en: Sábado 19 de Febrero de 2005, 08:35 »
Puedes usar el código en un módulo estándard, módulo de clase o formulario.

Llama al método GetProcesos pasándole como parámetro una matriz de tipo string que habrás declarado previamente. Cuando el método se haya ejecutado, tendrás en la matriz el id de proceso de cada tarea con su correspondiente ejecutable.

Código: Text
  1.  
  2. .
  3. .
  4. .
  5. Dim sProc() As String
  6. GetProcesos sProc
  7. Dim iCta As Integer, iIdx As Integer
  8. iCta = Ubound(sProc)
  9. Form iIdx=0 To iCta - 1
  10.    MsgBox sProc(0, iIdx) & " - " & sProc(1, iIdx)
  11. Next iIdx
  12. .
  13. .
  14. .
  15.  
  16.  

Chao.

80
Visual Basic 6.0 e inferiores / Re: Modificar Conjunto De Datos En Grid
« en: Sábado 19 de Febrero de 2005, 08:28 »
Hola.

Lo que haría una vez modificado el valor en el grid es ejecutar el correspondiente Update del registro en la tabla de la bd . Podrías hacerlo nada más modificado el valor o poniendo, por ejemplo, un botoncito en plan 'aplicar cambios'.

Chau.

81
Visual Basic 6.0 e inferiores / Re: Relacionas Tipo De Fichero, Con Programa
« en: Sábado 19 de Febrero de 2005, 08:23 »
Hola MindEye.

Siento contradecirte, pero el código del ejemplo sirve para lo que estás buscando:
asocia un ejecutable con una extensión determinada. Los archivos con la extensión que pasas como parámetro 2 se abren con el programa que indicas en el parámetro 1, tanto al hacer doble click sobre el archivo, como si usas una función shellExecute.

El código también asocia un icono por defecto para esos archivos (en el ejemplo aparece el icono como un valor constante "C:\VíaDeAcceso\MiIcono.Ico", pero fácilmente lo puedes sustituir por una variable).

Cuando intentas abrir el archivo una vez asociado, el sistema ejecuta el programa correspondiente pasándole como parámetro el nombre del fichero en cuestión, por lo que tu programa debe estar preparado para recibir ese parámetro con el valor para el fichero y así actuar en consecuencia.

Chau.

82
Visual Basic 6.0 e inferiores / Re: Qué Es Mejor?????
« en: Viernes 18 de Febrero de 2005, 10:48 »

83
Visual Basic 6.0 e inferiores / Re: Generar Planilla Excel Desde Text En Visual.
« en: Viernes 18 de Febrero de 2005, 10:36 »
Utiliza el buscador por el foro para ver como tienes que hacer, porque hay ejemplos y ejemplos de cosas de estas.

Chao.

84
Visual Basic 6.0 e inferiores / Re: Modificar Conjunto De Datos En Grid
« en: Viernes 18 de Febrero de 2005, 10:34 »
Hola.

Que yo sepa un datagrid no te permite hacer tal cosa. Lo podrías hacer currándolo tú a mediante código, localizando las filas seleccionadas y modificándolas una a una.

Chao.

85
Visual Basic 6.0 e inferiores / Re: Ejecucion De Un *.exe
« en: Viernes 18 de Febrero de 2005, 10:29 »
Hola.

Seguramente esto te sirva:
En una dimensión devuelve el pId y en otra el ejecutable.

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Type PROCESSENTRY32
  5.     dwSize As Long
  6.     cntUsage As Long
  7.     th32ProcessID As Long
  8.     th32DefaultHeapID As Long
  9.     th32ModuleID As Long
  10.     cntThreads As Long
  11.     th32ParentProcessID As Long
  12.     pcPriClassBase As Long
  13.     dwFlags As Long
  14.     szExeFile As String * 260
  15. End Type
  16. Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  17. Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  18. Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  19. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
  20.  
  21. Public Sub GetProcesos(ByRef Tareas() As String)
  22.  
  23.     Dim lSnapShot As Long
  24.     lSnapShot = CreateToolhelpSnapshot(2&, 0&)
  25.    
  26.     If lSnapShot <> 0 Then
  27.         Dim Proceso As PROCESSENTRY32
  28.         Proceso.dwSize = Len(Proceso)
  29.         Dim lRc As Long, lCta As Long
  30.         lRc = ProcessFirst(lSnapShot, Proceso)
  31.         Do While lRc
  32.             lCta = lCta + 1
  33.             If lCta > 1 Then
  34.                 ReDim Preserve Tareas(2, lCta)
  35.             Else
  36.                 ReDim Tareas(2, 1)
  37.             End If
  38.             Tareas(0, lCta - 1) = Proceso.th32ProcessID
  39.             Tareas(1, lCta - 1) = Left(Proceso.szExeFile, InStr(Proceso.szExeFile, Chr(0)) - 1)
  40.             lRc = ProcessNext(lSnapShot, Proceso)
  41.         Loop
  42.         CloseHandle lSnapShot
  43.     End If
  44.  
  45. End Sub
  46.  
  47.  

Chau.

86
Visual Basic 6.0 e inferiores / Re: Relacionas Tipo De Fichero, Con Programa
« en: Viernes 18 de Febrero de 2005, 10:19 »
Hola.

http://foros.solocodigo.com/index.php?showtopic=6041

El código del ejemplo no está depurado, ten en cuenta una cosa:
Si usas xp, si intentas crear una clave de registro y ésta existe, obtendrás un retorno distinto de ERROR_SUCCESS (=0) En vez de crear la clave directamente intenta abrirla primero y si obtienes un retorno = 2 es que no existe y puedes crearla.

Suerte.

87
Visual Basic 6.0 e inferiores / Re: Como Manipular Una Imagen
« en: Viernes 18 de Febrero de 2005, 10:14 »
Hola escorcia.

Nunca hice tal cosa y no sabría decirte...  pero puedes buscar información sobre el GDI y su api. Casi todas (o todas) las funciones las encontrarás en gdi32.dll.

No creo que sea muy complicado. Sé a ciencia cierta que el gdi proporciona funciones para hallar los colores más aproximados entre paletas.

Suerte.

88
Visual Basic 6.0 e inferiores / Re: Acceso Remoto A Datos
« en: Viernes 18 de Febrero de 2005, 10:08 »
Hola jacko.

Si puedes configurar una VPN entre los puntos remotos podrás trabajar como si de una red local se tratara.

Por otro lado, si estas decidido a hacerlo mediante VB, podrías intentar crear una aplicación tipo IIS o DHTML (según lo que necesites). En la ayuda del msdn hay varios artículos sobre estas cosas, incluso creo que hay algún ejemplo.

Chao.

89
Visual Basic 6.0 e inferiores / Re: Desabilitar La Red
« en: Viernes 18 de Febrero de 2005, 10:02 »
Hola.

Lo acabo de probar y desgraciadamente el tema no funciona con NET STOP, sin embargo NET START o NET USE no fallan.

Si supiera algo más lo postearía.

Sorte.

90
Visual Basic 6.0 e inferiores / Re: Como Crear Un Archivo ?
« en: Viernes 18 de Febrero de 2005, 10:00 »
Antes de nada comprueba que exista el archivo. Si el archivo existe, busca la ficha. Si no existe escribe directamente en el archivo. Cuando escribas, abre el archivo siempre para append.

Acostumbrate a saber en qué número de archivos (canal) estas escribiendo, freefile sirve para obtener un número de canal libre. No te olvides de cerrar los archivos adecuadamente.

Chao.

91
Visual Basic 6.0 e inferiores / Re: Ado Sin Bloqueo
« en: Viernes 18 de Febrero de 2005, 09:49 »
Hola.

Si utilizas ADO, puedes especificar como parámetro opción del método execute de la conexión o comando el valor adExecuteAsync, de forma que la ejecución se efectúe de forma asíncrona. Una vez que la ejecución del mandato ha finalizado se desencadenará el evento ExecuteComplete del objeto.

A ver si esto te sirve.

Chau.

92
Visual Basic 6.0 e inferiores / Re: Archivos Secuenciales
« en: Miércoles 9 de Febrero de 2005, 14:32 »
Porque así te ahorras recorrer el resto del archivo una vez que ya has encontrado una coincidencia.

Adeus.

93
Visual Basic 6.0 e inferiores / Re: Aplicacionno No Corre En Otra Computadora
« en: Miércoles 9 de Febrero de 2005, 09:32 »
Hola rodolforpv.

Un 'error 9' se produce cuando haces referencia a un índice de una matriz que no existe o si la matriz no está dimensionada.

En tu caso, dices que el error se produce al llamar al método ChngOrientationLandscape de una instancia de una clase 'PrinterControl'. Supongo que está clase forma parte del componente ese que dices que instalas. Pues bien, no conozco tal componente, pero puedo suponer lo siguiente, por supuesto a riesgo de equivocarme:

Tal vez tengas que seleccionar una impresora antes de poder cambiar la orientación de la misma, o la clase requiera algún tipo de inicialización u otra acción previa, de forma que alguna matriz que use por ahí se redimensione.

Sin embargo, dices que en otra máquina el código funciona sin problemas. ¿Y no será que en una máquina sólo tienes una impresora instalada y el la que casca más de una?

Eso es lo que la intuición me dice... ya nos contarás.

Suerte.

94
Visual Basic 6.0 e inferiores / Re: Reloj En Status Bar
« en: Miércoles 9 de Febrero de 2005, 09:16 »
Hola Solcito.

No creo que se pueda poner en un mismo panel fecha y hora juntas (a no ser que hagas como comenta el colega javirues y escribas tu el valor para el panel). Lo que si puedes hacer es poner la fecha en un panel y la hora en otro y establecer la propiedad Bevel = 0 (0-sbrNoBevel) en ambos paneles para que no se diferencien uno de otro.

La fecha y hora se muestran con el formato establecido en la configuración regional.

Por cierto Radical... te pasas dándome jabón, que no soy padre de nada ni de nadie (¡y menos supremo!) y tampoco es para tanto...

Chao.

95
Visual Basic 6.0 e inferiores / Re: Archivos Secuenciales
« en: Martes 8 de Febrero de 2005, 16:41 »
Hola sircuit.

Normalmente App.Path devuelve la vía de acceso de la aplicación sin el carácter "\" al final, pero... si resulta que la vía de acceso de la aplicación coincide con la raíz de una unidad, entonces devuelve C:\ o D:\ o lo que sea, es decir, con el carácter "\" al final. De ahí el interés de realizar siempre esa comprobación para evitar posibles errores si se da el caso.

Chao.

96
Visual Basic 6.0 e inferiores / Re: Reloj En Status Bar
« en: Martes 8 de Febrero de 2005, 15:40 »
Hola solcito.

En las propiedades de la statusbar, en la pestaña 'paneles', selecciona el panel donde deseas que aparezca el reloj. Estable la propiedad Style = 5 (5 = sbrTime). Con esto debe bastar.

Si lo quieres hacer en tiempo de ejecución:
Código: Text
  1.  
  2.    'Suponiendo que el reloj debe aparecer en el primer panel
  3.     StatusBar1.Panels(1).Style = sbrTime
  4.  
  5.  

Chao.

97
Visual Basic 6.0 e inferiores / Re: Pasar Parametros Al Inicializar Clases
« en: Martes 8 de Febrero de 2005, 15:34 »
Hola UserLx.

Es una pena, pero las clases de vb no admiten constructores... (es que vb es un lenguaje orientado a objetos de pacotilla) de la misma forma que tampoco soporta herencia y pretende usar algo que dicen que es polimorfismo (patatero) implementable a base de interfaces (cuando sabemos que el poder usar diferentes constructores para una clase es la auténtica esencia del polimorfismo).

Lo único que puedes hacer y lo que todos hacemos es establecer esos parámetros que quieres pasar al constructor como propiedades de la clase cuyos valores son asignados después de instanciar la clase o usando un método de la misma que realice las acciones que necesitarías en el constructor.

Así que ya sabes... toca escribir código de más.

Suerte.

98
Visual Basic 6.0 e inferiores / Re: Archivos Secuenciales
« en: Martes 8 de Febrero de 2005, 15:24 »
Hola.

Visto así por encima, creo que lo que debes hacer es eliminar el aviso de que no se ha encontrado coincidencia fuera del bucle: tal como está el mensaje aparecerá por cada uno de los registros que no coinciden.

La cosa quedaría asín:
Código: Text
  1.  
  2. Private Sub Command1_Click()
  3.    Dim iCanal As Integer, sPath As String
  4.    Dim bEncontrado As Boolean
  5.    sPath = App.Path
  6.    If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
  7.    iCanal = FreeFile
  8.    Open sPath & "datos.dat" For Input As #iCanal
  9.    Do Until bEncontrado Or EOF(iCanal)
  10.       Input #iCanal, namec
  11.       Input #iCanal, direc
  12.       Input #iCanal, telc
  13.       Input #iCanal, emc
  14.       Input #iCanal, comc
  15.       If Text6.Text = namec Then
  16.          Text1.Text = namec
  17.          Text2.Text = direc
  18.          Text3.Text = telc
  19.          Text4.Text = emc
  20.          Text5.Text = comc
  21.          MsgBox "La ficha de " & Text6.Text & " ha sido encontrada", vbInformation + vbOKOnly, "Información"
  22.          bEncontrado = True
  23.       End If    
  24.    Loop
  25.    if Not bEncontrado Then huhu
  26.    Close #iCanal
  27. End Sub
  28.  
  29. Private Sub huhu()
  30.    If MsgBox("La ficha de " & Text6.Text _
  31.    & " no ha sido encontrada." & vbCrLf _
  32.    & "Desea realizar una nueva busqueda ?" _
  33.    , vbQuestion + vbYesNo, "Información") = vbYes Then
  34.       Text6.Text = ""
  35.       Text6.SetFocus
  36.    End If
  37. End Sub
  38.  
  39.  

Chau.

99
Visual Basic 6.0 e inferiores / Re: Desabilitar La Red
« en: Martes 8 de Febrero de 2005, 15:13 »
Hola MindEye.

A ver si esto te puede valer...

Si la conexión va sobre netbios, puedes usar los comandos NET STOP y NET START para detener y arrancar, respectivamente, los servicios de netbios.
De igual forma puedes utilizar NET USE para mapear una unidad de red.
Puedes ejecutarlos mediante Shell.

Chao.

100
Visual Basic 6.0 e inferiores / Re: Usb
« en: Miércoles 2 de Febrero de 2005, 14:41 »
Hola riciar.

Pos es una pena... los puertos paralelo y serie sí los puedes abrir de esta forma.

Si algún día me entero de como se hace con los usb y este tema sigue abierto, lo posteo.
Abur.

Páginas: 1 2 3 [4] 5 6 ... 43