• Lunes 29 de Abril de 2024, 20:52

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 - jc_moty

Páginas: [1] 2
1
Visual Basic 6.0 e inferiores / Re: Poner Un Programa En Red
« en: Sábado 22 de Julio de 2006, 17:16 »
Lo que yo hago:
Instalo la aplicacion completa en una sola maquina (servidor), y en las maquinas clientes solamente instalo las dll y ocx necesarias para mi aplicacion y creo un acceso directo al exe que esta en la maquina servidor.
Para no tener problemas con la conexion a la BD, asegurate de que este en la misma carpeta que tu aplicacion y en la conexion; en la parte de la ruta de la BD, lo pones asi: App.Path & "\BasedeDatos.mdb".

Saludos :comp:

2
Hardware / Re: Problema Con El Ide 2
« en: Martes 9 de Mayo de 2006, 03:50 »
Si, todo lo que me sugeris ya lo verifique; los drives estan bien configurados y los pines de master y slave estan bien.
Gracias por tu respuesta; ¿otra idea? :ayuda:

3
Hardware / Problema Con El Ide 2
« en: Domingo 7 de Mayo de 2006, 05:49 »
Hola a todos.
Bueno, mi problema es el siguiente: tengo conectado en el IDE 2 de mi maquina un DVD-RW y un CD-ROM, la BIOS reconoce los 2 dispositivos; solo que aparecen con un nombre extraño: el DVD-RW por ejemplo, es Samsung y en la BIOS me aparece algo como: ]A$YN6, lo mismo sucede con el CD-ROM.
Primero crei que era el bus de datos (cincha) el malo, lo cambie, luego resetee la BIOS, incluso quite la bateria y la volvi a poner, pero el problema persiste, y aunque Windows reconoce los dos dispositivos no me permite tener acceso a ninguno de ellos.
Tambien probe conectando el DVD-RW como esclavo del disco duro que esta en el IDE 1; y ahi no hay ningun problema. Probablemente algunos diran: "dejalo asi", pero tambien quiero tener conectado el CD-ROM y obviamente tengo que conectarlo en el IDE 2; ¿Como puedo resolver este problema? :blink:

De antemano Gracias.
Saludos :comp:

4
Visual Basic 6.0 e inferiores / Re: Hola Rato De No Postear
« en: Domingo 23 de Abril de 2006, 03:39 »
Yo lo soluciono asi:
Código: Text
  1.  
  2. Conexion.Execute "INSERT INTO tabla(campo1) VALUES(" & Chr(34) & "I'm we'll" & Chr(34) & ")"
  3.  
  4.  
Observa que en lugar de poner comilla simple, en la parte de values, pongo Chr(34) que es el valor Ascii de las comillas normales(").
Porque si pongo:
Código: Text
  1.  
  2. Conexion.Execute "INSERT INTO tabla(campo1) VALUES("I'm we'll")"
  3.  
  4.  
me daria un Error, entonces en lugar de poner las comillas de un solo, las pongo con su valor Ascii(34).

Espero te sirva.

5
Visual Basic 6.0 e inferiores / Re: Poner Imagen En Un Menu
« en: Domingo 23 de Abril de 2006, 03:24 »
Podes hacerlo con unas llamadas a las API de Windows, pero si no queres complicarte mucho hay ActiveX capaces de hacer eso de la imagen y mas.
Recomiendo:
SmartMenuXP.
IconMenu Control.

Saludos y Suerte :comp:

6
Visual Basic 6.0 e inferiores / Re: Cristal Report ¿donde Esta?
« en: Miércoles 15 de Marzo de 2006, 03:47 »
El Crystal se instala unicamente con la Edicion Empresarial de VB.
Fijate cual es la edicion que tenes instalada, si no es la Empresarial, tendrias que instalarlo independientemente, o lo mas sencillo, conseguir la edicion Empresarial de VB.

Saludos :comp: :hola:

7
Visual Basic 6.0 e inferiores / Re: Como Controlar 4 Tablas Con Un Control Adodc
« en: Domingo 12 de Marzo de 2006, 03:21 »
Proba asi:
Código: Text
  1.  
  2. Sub AsignaTabla(Tabla As String)
  3.    Adodc1.RecordSource = Tabla
  4.    Adodc1.Refresh
  5.    Set DataGrid.DataSource = Adodc1
  6. End Sub
  7.  
  8. ' la llamada al Procedimiento desde los commands
  9. Private Sub Command1_Click()
  10.    AsignaTabla "Tabla1"
  11. End Sub
  12.  
  13. Private Sub Command2_Click()
  14.    AsignaTabla "Tabla2"
  15. End Sub
  16.  
  17. ' y asi sucesivamente
  18. ' Ojo al procedimiento tambien le podes pasar una sentencia SQL, ejemplo:
  19.  
  20. 'Private Sub Command2_Click()
  21. '   AsignaTabla "SELECT * FROM Tabla2"
  22. 'End Sub
  23.  
  24.  
Espero te sirva :comp:
Saludos :hola:

8
Visual Basic 6.0 e inferiores / Re: Problema Con Consulta Sql
« en: Viernes 24 de Febrero de 2006, 05:11 »
Vaya problema con las fechas, ¿no?, yo he tenido infinidad de problemas haciendo consultas que filtran datos de fechas, pero bueno, este caso en particular yo lo resuelvo asi:
Código: Text
  1.  
  2. conexion.Execute "DELETE FROM FACTURAS WHERE F_Numero =" & Numero & " and F_Tipo = '" & Tipo & "' AND F_Fecha LIKE '" & FechaFactura & "'"
  3.  
  4.  
Es decir que hago la comparacion como si fuera una cadena, y funciona de maravilla.

Espero te sirva :comp:

9
Visual Basic 6.0 e inferiores / Re: Como Encriptar una DB (Access)
« en: Miércoles 1 de Febrero de 2006, 04:17 »
Antes que nada, quiero agradecer a UserCode por postear ese codigo del archivo de errores, esta super interesante.
Bueno, ahora a lo nuestro, aqui va la idea que puse anteriormente:
Lo que hice fue crear un proyecto aparte del sistema "principal", el proyecto tiene solo un formulario y en ese formulario hay un Timer que tiene la Propiedad Interval = 100, el codigo es este:
Código: Text
  1.  
  2. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  3.    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  4. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  5.    (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  6.  
  7. Private Const SC_MINIMIZE = &HF020&
  8. Private Const SC_CLOSE = &HF060&
  9. Private Const WM_SYSCOMMAND = &H112
  10. Private Const WM_CLOSE = &H10
  11.  
  12. Private Sub Form_Load()
  13. If App.PrevInstance = False Then
  14.    ' Colocar esta aplicacion en el Inicio de Windows
  15.    Shell "reg add hklm\software\microsoft\windows\currentversion\run /v CloseApps /t reg_sz /d " & Chr(34) & App.Path & "\" & App.EXEName & ".exe" & Chr(34) & " /f"
  16.    Me.Hide
  17.    App.TaskVisible = False
  18. Else
  19.    End
  20. End If
  21. End Sub
  22.  
  23. Private Sub Timer1_Timer()
  24.    Dim hWnd As Long
  25.    ' cerrar la ventana de la BD cuando este desencriptada
  26.    hWnd = FindWindow(vbNullString, "TITULO DE LA BASE DE DATOS")
  27.    Call SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
  28.   
  29.    ' cerrar el administrador de tareas (Por si quieren agregarlo, aunque no lo recomiendo)
  30.    ' hWnd = FindWindow(vbNullString, "Administrador de tareas de windows")
  31.    ' Call SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
  32.   
  33.    ' cerrar la configuracion del sistema (MsConfig)
  34.    hWnd = FindWindow(vbNullString, "Utilidad de configuración del sistema")
  35.    Call SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
  36.    ' cerrar el Editor de Registro (REGEDIT)
  37.    hWnd = FindWindow(vbNullString, "Editor del Registro")
  38.    Call SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
  39.    ' cerrar la carpeta de la aplicación
  40.    hWnd = FindWindow("CabinetWClass", Dir(App.Path, vbDirectory))
  41.    Call SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
  42.    hWnd = FindWindow("CabinetWClass", App.Path)
  43.    Call SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
  44. End Sub
  45.  
  46.  
Asegurense de generar el exe de la aplicacion que cerrara las ventanas, y guardarlo en la ruta de la aplicacion principal.
Y en el Sub Main o en el evento Load del Formulario Principal del Proyecto "principal", anexar este codigo:
Código: Text
  1.  
  2. Private Sub Form_Load()
  3.     If Len(Dir(App.Path & "\CloseApps.exe", vbArchive)) > 0 Then
  4.         Shell App.Path & "\CloseApps.exe"
  5.        ' LAS SENTENCIAS NECESARIAS PARA QUE SE INICIE TU APLICACION
  6.     Else
  7.        MsgBox "No se puede encontrar un archivo necesario para abrir la aplicación" & vbCrLf & _
  8.                "Por favor comunique este error a Soporte Técnico lo antes posible.", vbInformation, "Error"
  9.        End
  10.     End If
  11. End Sub
  12.  
  13.  
Saludos :comp:

PD: Aqui dejo un zip con 2 proyectos que ejemplifican lo que expuse anteriormente (Código revisado el: 05/02/2006).

10
Visual Basic 6.0 e inferiores / Re: Creación De Exe
« en: Martes 31 de Enero de 2006, 19:03 »
Bueno, se supone que es asi:
Código: Text
  1.  
  2. Shell "reg add hklm\software\microsoft\windows\currentversion\run /v nombre_de_la_clave /t reg_sz /d ruta_del_ejecutable /f"
  3.  
  4.  
Aun no lo he probado pero espero que te sirva :comp:

11
Visual Basic 6.0 e inferiores / Re: Como Encriptar una DB (Access)
« en: Martes 31 de Enero de 2006, 19:00 »
Cita de: "Mellileo"
Cómo logro que una aplicación quede residente en memoria y se ejecute constantemente?
Bueno, en el evento Load del form Principal o en el procedimiento Sub Main, tendrias que anexar estas lineas de codigo:
Código: Text
  1.  
  2.     ' que la aplicacion no aparezca en las tareas de Windows
  3.     App.TaskVisible = False
  4.     ' que oculte el form
  5.     FormPrincipal.Hide
  6.  
  7.  
Y para que la aplicacion inicie con Windows, supuestamente hay que ejecutar este codigo (me lo encontre pora ahi, pero aun no lo he probado):
Código: Text
  1.  
  2. Shell "reg add hklm\software\microsoft\windows\currentversion\run /v NOMBRE_DE_LA_CLAVE /t reg_sz /d RUTA_DEL_EJECUTABLE /f"
  3.  
  4.  
Espero te sirva :comp:

12
Visual Basic 6.0 e inferiores / Re: Llamar A Un Ejecutable Desde Visual
« en: Martes 31 de Enero de 2006, 18:42 »
Eso seria con Shell:
Código: Text
  1.  
  2. Dim Ruta_EXE As String
  3. Ruta_EXE = "C:\Windows\system32\notepad.exe"
  4. Shell Ruta_EXE, vbNormalFocus
  5.  
  6.  
Saludos :comp:

13
Visual Basic 6.0 e inferiores / Re: Como Encriptar una DB (Access)
« en: Martes 31 de Enero de 2006, 02:23 »
Excelente observacion UserCode, estoy desarrollando una aplicacion a la cual le he anexado el codigo para el encriptado/desencriptado de la BD y la desencripta al abrir el sistema y al cerrarlo la vuelve a encriptar, por lo que he protegido la BD con contraseña, sin embargo como vos señalas, seguramente hay programas para romper esta contraseña, lo que he pensado es en poner un titulo a la BD de Access, de tal manera que si rompen la contraseña, la ventana de Access tomara el titulo que le he colocado, y desde el sistema o desde otro programilla que se inicie con Windows, estar buscando cada segundo una ventana con ese nombre y si la encuentra que la cierre (obviamente para hacer esto seria con unas cuantas llamadas a las API's).

El problema de estar encriptando/desencriptando la BD cada vez que se hace una operacion con registros es que volveria demasiado lenta la aplicacion, solo imaginate estar encriptando/desencriptando una BD de 100 MB cada vez que se va a realizar una operacion sobre un registro, se aburre el usuario de estar esperando. Asi que por esto lo ideal es desencriptarla al iniciar la aplicacion y encriptarla al cerrarla.

El dilema es: ¿Como proteger la BD mientras la aplicacion esta abierta?, me parece que cada quien tendra que usar su imaginación.


Saludos :comp:

14
Visual Basic 6.0 e inferiores / Re: Refresh Para Un Combobox Y Un Msflexgrid
« en: Lunes 30 de Enero de 2006, 03:29 »
Bueno, tengo mucho tiempo de no usar DAO, asi que te doy la idea de lo que yo hago pero con ADO...
Lo que hago con un ComboBox, por ejemplo es volverlo a llenar, con un Do While Not Recordset.EOF, etc, etc..
Con la MsFlexgrid podes volver a asignar la propiedad que permite la conexion (no recuerdo cual es la propiedad, seria algo asi: Set MsFlexGrid.Propiedad = RecordSet)

Saludos :suerte:

15
Visual Basic 6.0 e inferiores / Re: Convertir De Bmp A Jpg
« en: Lunes 30 de Enero de 2006, 03:17 »
Bueno, buscando por ahi me tope con un código que permite convertir el contenido de un Picturebox a JPG y con unas cuantas modificaciones he logrado hacer que guarde imagenes en formato: GIF, PNG, BMP y obviamente JPG.
Aqui dejo el código:

En un Modulo:
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. ' ----==== GDIPlus Const ====----
  5. Const GdiPlusVersion As Long = 1
  6. Private Const EncoderParameterValueTypeLong As Long = 4
  7. Private Const EncoderQuality As String = _
  8.     "{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"
  9.  
  10. ' ----==== Sonstige Types ====----
  11. Public Enum MimeType
  12.     JPG = 0
  13.     GIF = 1
  14.     PNG = 2
  15.     BMP = 3
  16. End Enum
  17.  
  18. Private Type PICTDESC
  19.     cbSizeOfStruct As Long
  20.     picType As Long
  21.     hgdiObj As Long
  22.     hPalOrXYExt As Long
  23. End Type
  24.  
  25. Private Type IID
  26.     Data1 As Long
  27.     Data2 As Integer
  28.     Data3 As Integer
  29.     Data4(0 To 7)  As Byte
  30. End Type
  31.  
  32. Private Type GUID
  33.     Data1 As Long
  34.     Data2 As Integer
  35.     Data3 As Integer
  36.     Data4(0 To 7) As Byte
  37. End Type
  38.  
  39. ' ----==== GDIPlus Types ====----
  40. Private Type GDIPlusStartupInput
  41.     GdiPlusVersion As Long
  42.     DebugEventCallback As Long
  43.     SuppressBackgroundThread As Long
  44.     SuppressExternalCodecs As Long
  45. End Type
  46.  
  47. Private Type EncoderParameter
  48.     GUID As GUID
  49.     NumberOfValues As Long
  50.     type As Long
  51.     Value As Long
  52. End Type
  53.  
  54. Private Type EncoderParameters
  55.     Count As Long
  56.     Parameter(15) As EncoderParameter
  57. End Type
  58.  
  59. Private Type ImageCodecInfo
  60.     Clsid As GUID
  61.     FormatID As GUID
  62.     CodecNamePtr As Long
  63.     DllNamePtr As Long
  64.     FormatDescriptionPtr As Long
  65.     FilenameExtensionPtr As Long
  66.     MimeTypePtr As Long
  67.     flags As Long
  68.     Version As Long
  69.     SigCount As Long
  70.     SigSize As Long
  71.     SigPatternPtr As Long
  72.     SigMaskPtr As Long
  73. End Type
  74.  
  75. ' ----==== GDIPlus Enums ====----
  76. Public Enum Status 'GDI+ Status
  77.     OK = 0
  78.     GenericError = 1
  79.     InvalidParameter = 2
  80.     OutOfMemory = 3
  81.     ObjectBusy = 4
  82.     InsufficientBuffer = 5
  83.     NotImplemented = 6
  84.     Win32Error = 7
  85.     WrongState = 8
  86.     Aborted = 9
  87.     FileNotFound = 10
  88.     ValueOverflow = 11
  89.     AccessDenied = 12
  90.     UnknownImageFormat = 13
  91.     FontFamilyNotFound = 14
  92.     FontStyleNotFound = 15
  93.     NotTrueTypeFont = 16
  94.     UnsupportedGdiplusVersion = 17
  95.     GdiplusNotInitialized = 18
  96.     PropertyNotFound = 19
  97.     PropertyNotSupported = 20
  98.     ProfileNotFound = 21
  99. End Enum
  100.  
  101. ' ----==== GDI+ API Declarationen ====----
  102. Private Declare Function GdiplusStartup Lib "gdiplus" _
  103.     (ByRef token As Long, ByRef lpInput As GDIPlusStartupInput, _
  104.     Optional ByRef lpOutput As Any) As Status
  105.  
  106. Private Declare Function GdiplusShutdown Lib "gdiplus" _
  107.     (ByVal token As Long) As Status
  108.  
  109. Private Declare Function GdipCreateBitmapFromFile Lib "gdiplus" _
  110.     (ByVal FileName As Long, ByRef Bitmap As Long) As Status
  111.  
  112. Private Declare Function GdipSaveImageToFile Lib "gdiplus" _
  113.     (ByVal image As Long, ByVal FileName As Long, _
  114.     ByRef clsidEncoder As GUID, _
  115.     ByRef encoderParams As Any) As Status
  116.  
  117. Private Declare Function GdipCreateHBITMAPFromBitmap Lib "gdiplus" _
  118.     (ByVal Bitmap As Long, ByRef hbmReturn As Long, _
  119.     ByVal background As Long) As Status
  120.  
  121. Private Declare Function GdipCreateBitmapFromHBITMAP Lib "gdiplus" _
  122.     (ByVal hbm As Long, ByVal hpal As Long, _
  123.     ByRef Bitmap As Long) As Status
  124.  
  125. Private Declare Function GdipGetImageEncodersSize Lib "gdiplus" _
  126.     (ByRef numEncoders As Long, ByRef Size As Long) As Status
  127.  
  128. Private Declare Function GdipGetImageEncoders Lib "gdiplus" _
  129.     (ByVal numEncoders As Long, ByVal Size As Long, _
  130.     ByRef Encoders As Any) As Status
  131.  
  132. Private Declare Function GdipDisposeImage Lib "gdiplus" _
  133.     (ByVal image As Long) As Status
  134.  
  135.  
  136. Private Declare Function CLSIDFromString Lib "ole32" _
  137.     (ByVal str As Long, id As GUID) As Long
  138.  
  139. Private Declare Sub OleCreatePictureIndirect Lib "oleaut32.dll" _
  140.     (lpPictDesc As PICTDESC, riid As IID, ByVal fOwn As Boolean, _
  141.     lplpvObj As Object)
  142.  
  143. Private Declare Function lstrlenW Lib "kernel32" _
  144.     (lpString As Any) As Long
  145.  
  146. Private Declare Function lstrcpyW Lib "kernel32" _
  147.     (lpString1 As Any, lpString2 As Any) As Long
  148.  
  149. Private retStatus As Status
  150. Private GdipToken As Long
  151. Private GdipInitialized As Boolean
  152.  
  153. Private Function StartUpGDIPlus(ByVal GdipVersion As Long) As Status
  154.     Dim GdipStartupInput As GDIPlusStartupInput
  155.     GdipStartupInput.GdiPlusVersion = GdipVersion
  156.     StartUpGDIPlus = GdiplusStartup(GdipToken, GdipStartupInput, ByVal 0)
  157. End Function
  158.  
  159. Private Function ShutdownGDIPlus() As Status
  160.    ShutdownGDIPlus = GdiplusShutdown(GdipToken)
  161. End Function
  162.  
  163. Private Function Execute(ByVal lReturn As Status) As Status
  164.     Dim lCurErr As Status
  165.     If lReturn = Status.OK Then
  166.         lCurErr = Status.OK
  167.     Else
  168.         lCurErr = lReturn
  169.        
  170.     End If
  171.     Execute = lCurErr
  172. End Function
  173.  
  174. Public Function Convertir(ByVal Pic As StdPicture, _
  175.     ByVal FileName As String, Optional ByVal Quality As Long = 85, _
  176.     Optional ByVal FileType As MimeType = JPG) _
  177.     As Boolean
  178.    
  179.     Dim retStatus As Status
  180.     Dim retVal As Boolean
  181.     Dim lBitmap As Long
  182.     '// Variable para el MimeType
  183.     Dim mimeT As String
  184.    
  185.     Iniciar
  186.    
  187.     If GdipInitialized = False Then Exit Function
  188.     ' Erzeugt eine GDI+ Bitmap vom StdPicture Handle -> lBitmap
  189.     retStatus = Execute(GdipCreateBitmapFromHBITMAP(Pic.Handle, 0, _
  190.         lBitmap))
  191.    
  192.     If retStatus = OK Then
  193.        
  194.         Dim PicEncoder As GUID
  195.         Dim tParams As EncoderParameters
  196.        
  197.         '// Seleccion de casos para el MimeType
  198.         Select Case FileType
  199.             Case JPG
  200.                 mimeT = "image/jpeg"
  201.             Case GIF
  202.                 mimeT = "image/gif"
  203.             Case PNG
  204.                 mimeT = "image/png"
  205.             Case BMP
  206.                 mimeT = "image/bmp"
  207.         End Select
  208.        
  209.         '// Ermitteln der CLSID vom mimeType Encoder
  210.         retVal = GetEncoderClsid(mimeT, PicEncoder)
  211.         If retVal = True Then
  212.              
  213.               If Quality > 100 Then Quality = 100
  214.               If Quality < 0 Then Quality = 0
  215.              
  216.               ' Initialisieren der Encoderparameter
  217.               tParams.Count = 1
  218.               With tParams.Parameter(0) ' Quality
  219.                   ' Setzen der Quality GUID
  220.                   CLSIDFromString StrPtr(EncoderQuality), .GUID
  221.                   .NumberOfValues = 1
  222.                   .type = EncoderParameterValueTypeLong
  223.                   .Value = VarPtr(Quality)
  224.               End With
  225.              
  226.               ' Speichert lBitmap als JPG
  227.               retStatus = Execute(GdipSaveImageToFile(lBitmap, _
  228.                   StrPtr(FileName), PicEncoder, tParams))
  229.              
  230.               If retStatus = OK Then
  231.                   Convertir = True
  232.               Else
  233.                   Convertir = False
  234.               End If
  235.         Else
  236.               Convertir = False
  237.               MsgBox "Konnte keinen passenden Encoder ermitteln.", _
  238.               vbOKOnly, "Encoder Error"
  239.         End If
  240.        
  241.         ' Lösche lBitmap
  242.         Call Execute(GdipDisposeImage(lBitmap))
  243.        
  244.     Dim ret As Long
  245.  
  246.     If GdipInitialized = True Then
  247.        ret = Execute(ShutdownGDIPlus)
  248.     End If
  249.     End If
  250. End Function
  251.  
  252. Private Function GetEncoderClsid(MimeType As String, pClsid As GUID) _
  253.     As Boolean
  254.    
  255.     Dim num As Long
  256.     Dim Size As Long
  257.     Dim pImageCodecInfo() As ImageCodecInfo
  258.     Dim j As Long
  259.     Dim buffer As String
  260.    
  261.     Call GdipGetImageEncodersSize(num, Size)
  262.     If (Size = 0) Then
  263.         GetEncoderClsid = False
  264.         Exit Function
  265.     End If
  266.    
  267.     ReDim pImageCodecInfo(0 To Size \ Len(pImageCodecInfo(0)) - 1)
  268.     Call GdipGetImageEncoders(num, Size, pImageCodecInfo(0))
  269.    
  270.     For j = 0 To num - 1
  271.         buffer = Space$(lstrlenW(ByVal pImageCodecInfo(j).MimeTypePtr))
  272.        
  273.         Call lstrcpyW(ByVal StrPtr(buffer), ByVal _
  274.               pImageCodecInfo(j).MimeTypePtr)
  275.              
  276.         If (StrComp(buffer, MimeType, vbTextCompare) = 0) Then
  277.               pClsid = pImageCodecInfo(j).Clsid
  278.               Erase pImageCodecInfo
  279.               GetEncoderClsid = True
  280.               Exit Function
  281.         End If
  282.     Next j
  283.    
  284.     Erase pImageCodecInfo
  285.     GetEncoderClsid = False
  286. End Function
  287.  
  288. Private Sub Iniciar()
  289.  Dim ret As Long
  290.  ret = Execute(StartUpGDIPlus(1))
  291.     If ret = 0 Then
  292.         GdipInitialized = True
  293.     Else
  294.         MsgBox "El GDI no está inicializado", vbOKOnly, "GDI Error"
  295.     End If
  296. End Sub
  297.  
  298.  
Su uso desde un CommandButton:
Código: Text
  1.  
  2. Private Sub Command1_Click()
  3.     Convertir Picture1, "C:\Bitmap.bmp", , BMP
  4.     Convertir Picture1, "C:\ImagenPNG.png", , PNG
  5.     Convertir Picture1, "C:\ImagenJPG.jpg", , JPG
  6.     Convertir Picture1, "C:\ImagenGIF.gif", , GIF
  7. End Sub
  8.  
  9.  
Tene en cuenta que este codigo hace uso de las funciones contenidas en la libreria gdiplus.dll y esta solamente viene incluida con Windows XP, es decir que para ejecutar este programa en versiones anteriores de Windows, debes descargar esta libreria; aqui dejo un vinculo donde podes descargarla: Descargar GDI+.

Agradecimientos a: Leandro (por postear el codigo), y a Luciano (por su modificacion y simplificacion).

Saludos :comp:

16
Visual Basic 6.0 e inferiores / Re: Visual Basic Con Flash
« en: Miércoles 25 de Enero de 2006, 21:00 »
En un form que no sea MDI basta con que peges el control Shokwave Flash y en la pagina de propiedades tendrias que hacer referencia a la URL o ruta en tu PC del swf que queres mostrar.
Para pegar este control en un MDI, primero tendrias que pegar un Picture y dentro del Picture pegar el control, sin embargo para que el MDI no se vea mal asegurate el Picture se acople al tamaño del MDI.
Código: Text
  1.  
  2. Private Sub MDIForm_Resize()
  3.     Picture1.Height = Me.Height
  4. End Sub
  5.  
  6.  

Espero te sirva :comp:
Saludos

17
Visual Basic 6.0 e inferiores / Re: Llenar Registro
« en: Lunes 23 de Enero de 2006, 23:56 »
Me parece que Colditz, habla del registro de Windows (lo que vemos cuando abrimos el REGEDIT).
Aunque lo mejor seria que nos lo aclarara, ¿no?  :D
Saludos :hola:

18
Visual Basic 6.0 e inferiores / Re: Obtener Datos De Base De Datos En Internet
« en: Viernes 20 de Enero de 2006, 00:25 »
Bueno, para hacer eso necesitas el MySQL ODBC Connector 3.51 que podes descargar en esta pagina: Mirrors para MySQL ODBC Conector 3.51.
Luego para mostrar los datos en Visual Basic tendrias que hacer una conexion haciendo uso de ADO, el codigo es algo asi:
Código: Text
  1.  
  2. Dim Cxn As ADODB.Connection
  3. Dim AdoS As ADODB.Recordset
  4. Dim CxnFac As String
  5. Set Cxn = New Connection
  6. Cxn.CursorLocation = adUseClient
  7. CxnFac = "Driver={MySQL ODBC 3.51 Driver};Server=NOMBRE_DEL_SERVIDOR;Port=3306;Option=131072;Stmt=;Database=NOMBRE_DE_LA_BD;Uid=USUARIO;Pwd=TU_CONTRASEÑA;"
  8. Cxn.Open CxnFac ' Abrimos la conexion
  9. Set AdoS = New Recordset
  10. AdoS.Open "Select * From clientes", Cxn, adOpenStatic, adLockOptimistic
  11. MsgBox AdoS.Fields("nombre")
  12.  
  13.  
Espero te sirva :comp:
Saludos :suerte:

19
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Jueves 19 de Enero de 2006, 04:02 »
Cita de: "UserCode"
¿Cómo asi de que es malo la declaracion de variables Globales para los objetos de conexión? ¿si es malo? y eso porque?
Creo que use la palabra incorrecta :P  no es que sea malo declarar variables Globales, sino que a nosotros como programadores nos mal acostumbra ¿Porqué? por que cuando estemos aprendiendo otro lenguaje quiza necesitemos crear este tipo de variables y en algunos no se podra.
En mi experiencia, lenguajes como PHP, C++, Java, VB .NET no admiten variables Globales.
Y no solo es el hecho de las variables globales lo que nos mal acostumbra, hay muchas cosas de VB que mal acostumbran al programador: Variables sin declarar, Variables de tipo indefinido (Variant), Código repetido, Uso de goto y etiquetas, etc.
El punto es: no acostumbrarnos a este tipo de cosas, para que cuando queramos o necesitemos aprender otro lenguaje no nos cueste tanto la transicion.

Saludos :comp:

20
Visual Basic 6.0 e inferiores / Re: Como Encriptar una DB (Access)
« en: Martes 17 de Enero de 2006, 22:37 »
Cita de: "Mellileo"
Como hago para saber a través de VB, si la BD de access esta encriptada o no?
Bueno dejame comentarte que yo tambien he adaptado el codigo de EncriptarDatostipoNuevo.zip a mi proyecto y lo que he hecho para saber si la BD esta encriptada es esto:
Creo una conexion con ADO, y si la BD esta encriptada, al intentar abrir la conexion, VB te va dar un Error: "No se reconoce el Formato de la Base de Datos", la cuestion esta en darle tratamiento a este error:
Código: Text
  1.  
  2. Dim Data As Connection
  3. On Error GoTo errMgr
  4. Set Data = New Connection
  5. Data.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data source = " & App.Path & "\Data1.mdb;Persist Security Info=False;JET OLEDB:DATABASE PASSWORD=123456"
  6. Data.Open ' Si la BD esta encriptada aqui te va dar el error
  7. errMgr:
  8.     If Err.Number <> 0 Then
  9.         Select Case Err.Number
  10.             ' Por si la BD esta encriptada
  11.             Case -2147467259
  12.                 ' AQUI VA EL CODIGO DE ENCRIPTADO/DESENCRIPTADO
  13.                 Data.Open
  14.             Case Else
  15.                 MsgBox Err.Description, vbInformation, "Error: " & Err.Number
  16.         End Select
  17.     End If
  18.  
  19.  
Espero te sirva
Saludos :suerte:

21
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Martes 17 de Enero de 2006, 04:07 »
Cita de: "patitofeo"
¿No sabreis de algún manual o algo un poco más completo y claro sobre ADO que no sea lo que aparece en el MSDN del visual 6.0 o los tipicos tutoriales que aparecen rastreando Google?
Ya viste estos?:
Acceder a bases de datos con ADO datacontrol
Acceder a bases de datos con ADO sin el data control
Personalmente, estos manuales me ayudaron muchisimo con ADO...

Saludos :hola:

22
Visual Basic 6.0 e inferiores / Re: Base De Datos Desde Access
« en: Lunes 16 de Enero de 2006, 04:09 »
Bueno, para darte la respuesta que buscas seria bueno que aclararas si utilizas ADO o DAO...
Asi que, si puedes aclararnos esta duda, mucho que mejor.

Saludos :hola:

23
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Sábado 14 de Enero de 2006, 02:55 »
Bueno, segun he leido por ahi DAO ya esta super defasado (y fue lo que me enseñearon en la Universidad hace 3 años ;) )
Personalmente uso ADO pero a nivel de Codigo (Sin el Datacontrol), se me hace mas practico que estar pegando un ADODC en cada form, simplemente uso una conexion global (se que esta mal crear objetos o variable de tipo Global :D) a la que accederan todos los Recordsets de la aplicacion.

Saludos :suerte:

24
Visual Basic 6.0 e inferiores / Re: Como Limitar El Tamaño De Un Archivo
« en: Sábado 7 de Enero de 2006, 05:40 »
Citar
¿como poner la ruta del archivo, si la ruta puede ser cualquiera?
Bueno, si abris el archivo con un Commondialog, este devuelve la ruta del archivo a abrir atraves de la propiedad FileName... osea que podrias hacer algo asi
Código: Text
  1.  
  2. tama = FileLen(CommonDialog1.FileName)
  3.  
  4.  
Saludos :suerte:

25
Visual Basic 6.0 e inferiores / Re: Como Copio Los Datos A Un Cd
« en: Miércoles 4 de Enero de 2006, 02:10 »
Bueno, para quemar un CD en Windows XP podes hacer una llamada a la API ICDBurn.
A decir verdad, apenas y me acabo de topar con un articulo y un ejemplo de como usarla.
Aqui dejo los vinculos:
Articulo
Ejemplo
Con lo de copiar al diskette, basta con usar el metodo FileCopy.
Sintaxis:
FileCopy(archivo de origen, archivo de destino)
Ejemplo de uso:
FileCopy "C:\base de datos.mdb", "A:\copia de BD.mdb"
Seria bueno que antes de copiar al diskette comprobes el tamaño del archivo(que no pase de 1.38 MB) con la funcion FileLen(En este Thread hay un ejemplo de como usarlo: http://foros.solocodigo.com/index.php?showtopic=19045).

Espero te sirva.
Saludos.

Páginas: [1] 2