|
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
« en: Sábado 19 de Febrero de 2005, 10:15 »
Hola Ahí va: Option Explicit Private Const HKEY_LOCAL_MACHINE = &H80000002 Private Const ERROR_SUCCESS = 0& Private Const KEY_QUERY_VALUE = &H1 Private Const REG_BINARY = 3 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 Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long 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 Private Sub Command1_Click() Dim lRc As Long Dim lhKey1 As Long, lhKey2 As Long lRc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software", 0&, KEY_QUERY_VALUE, lhKey1) If lRc <> ERROR_SUCCESS Then Exit Sub lRc = RegOpenKeyEx(lhKey1, "Microsoft", 0&, KEY_QUERY_VALUE, lhKey2) RegCloseKey lhKey1 If lRc <> ERROR_SUCCESS Then Exit Sub lRc = RegOpenKeyEx(lhKey2, "Windows", 0&, KEY_QUERY_VALUE, lhKey1) RegCloseKey lhKey2 If lRc <> ERROR_SUCCESS Then Exit Sub lRc = RegOpenKeyEx(lhKey1, "CurrentVersion", 0&, KEY_QUERY_VALUE, lhKey2) RegCloseKey lhKey1 If lRc <> ERROR_SUCCESS Then Exit Sub lRc = RegOpenKeyEx(lhKey2, "Controls Folder", 0&, KEY_QUERY_VALUE, lhKey1) RegCloseKey lhKey2 If lRc <> ERROR_SUCCESS Then Exit Sub Dim bytData(4096) As Byte, lLen As Long lRc = RegEnumValue(lhKey1, 1&, "Presentation Cache", 19&, 0&, REG_BINARY, bytData(0), 4096) RegCloseKey lhKey1 If lRc = ERROR_SUCCESS Then Dim sChr As String, i1 As Integer For i1 = 0 To 4095 sChr = sChr & Chr(bytData(i1)) Next i1 Debug.Print sChr End If End Sub
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
« 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=9352La 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
« en: Sábado 19 de Febrero de 2005, 08:50 »
Hola az8 Hasle asín: With MSFlexGrid1 .Clear .Cols = 11 .Rows = 11 .FixedCols = 1 .FixedRows = 1 End With Dim iCol As Integer For iCol = 1 To 10 MSFlexGrid1.TextMatrix(0, iCol) = "Cabecera " & iCol Next iCol Dim iRow As Integer For iRow = 1 To 10 MSFlexGrid1.TextMatrix(iRow, 0) = iRow For iCol = 1 To 10 MSFlexGrid1.TextMatrix(iRow, iCol) = "Fila " & iRow & ",Columna " & iCol Next iCol Next iRow
Abur.
79
« 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. . . . Dim sProc() As String GetProcesos sProc Dim iCta As Integer, iIdx As Integer iCta = Ubound(sProc) Form iIdx=0 To iCta - 1 MsgBox sProc(0, iIdx) & " - " & sProc(1, iIdx) Next iIdx . . .
Chao.
80
« 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
« 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
« en: Viernes 18 de Febrero de 2005, 10:48 »
83
« 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
« 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
« 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. Option Explicit Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * 260 End Type Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long) Public Sub GetProcesos(ByRef Tareas() As String) Dim lSnapShot As Long lSnapShot = CreateToolhelpSnapshot(2&, 0&) If lSnapShot <> 0 Then Dim Proceso As PROCESSENTRY32 Proceso.dwSize = Len(Proceso) Dim lRc As Long, lCta As Long lRc = ProcessFirst(lSnapShot, Proceso) Do While lRc lCta = lCta + 1 If lCta > 1 Then ReDim Preserve Tareas(2, lCta) Else ReDim Tareas(2, 1) End If Tareas(0, lCta - 1) = Proceso.th32ProcessID Tareas(1, lCta - 1) = Left(Proceso.szExeFile, InStr(Proceso.szExeFile, Chr(0)) - 1) lRc = ProcessNext(lSnapShot, Proceso) Loop CloseHandle lSnapShot End If End Sub
Chau.
86
« en: Viernes 18 de Febrero de 2005, 10:19 »
Hola. http://foros.solocodigo.com/index.php?showtopic=6041El 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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
« 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: 'Suponiendo que el reloj debe aparecer en el primer panel StatusBar1.Panels(1).Style = sbrTime
Chao.
97
« 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
« 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: Private Sub Command1_Click() Dim iCanal As Integer, sPath As String Dim bEncontrado As Boolean sPath = App.Path If Right(sPath, 1) <> "\" Then sPath = sPath & "\" iCanal = FreeFile Open sPath & "datos.dat" For Input As #iCanal Do Until bEncontrado Or EOF(iCanal) Input #iCanal, namec Input #iCanal, direc Input #iCanal, telc Input #iCanal, emc Input #iCanal, comc If Text6.Text = namec Then Text1.Text = namec Text2.Text = direc Text3.Text = telc Text4.Text = emc Text5.Text = comc MsgBox "La ficha de " & Text6.Text & " ha sido encontrada", vbInformation + vbOKOnly, "Información" bEncontrado = True End If Loop if Not bEncontrado Then huhu Close #iCanal End Sub Private Sub huhu() If MsgBox("La ficha de " & Text6.Text _ & " no ha sido encontrada." & vbCrLf _ & "Desea realizar una nueva busqueda ?" _ , vbQuestion + vbYesNo, "Información") = vbYes Then Text6.Text = "" Text6.SetFocus End If End Sub
Chau.
99
« 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
« 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
|
|
|