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

Páginas: 1 2 3 4 [5] 6 7 8 9 10 ... 37
61
Visual Basic 6 / Re:Problema con cSocketMaster en Server 2008 - 64 bits
« en: Agosto 12, 2014, 03:54:51 pm »
El problema del DEP es de una version vieja del subclass de paul caton. El cSockMaster evidentemente la usa, y por ende tiene ese detalle. Habria que re-hacer algun socket de una vez por todas!!!

62
Visual Basic 6 / Re:Registrar aplicación en el registro.
« en: Agosto 12, 2014, 03:48:25 pm »
Es que justamente dicho valor en el registro es para que este el explorer... Podes hacer que tu app abra el explorer y listo. Si no, creo que en el mismo valor del registro podias poner mas de un ejecutable, pero no recuerdo como se hacia.

63
Visual Basic 6 / Re:Reinicio de proceso al cerrar
« en: Agosto 12, 2014, 03:40:53 pm »
Perdoname, pero lo que estas haciendo es totalmente desprolijo y derrochas un monton de recursos al ejecutar un script.
Hace otra aplicacion, que reciba como parametro el nombre del ".exe" que queres "escuchar". Aca te dejo una funcion que "espera" que terime un EXE arbitrario y luego sigue ejecutando lo que esta abajo...

Pega el codigo en un formulario y en el Form_Load llama a "WaitForExe(Command$)" y luego "Shell Command$" y finalmente "End". Pone que el form no sea visible.
(Tenes que hacerlo en un form porque si lo haces en un modulo usando el Sub Main los antivirus te van a botonear el exe).

Código: (vb) [Seleccionar]
Private Const TH32CS_SNAPHEAPLIST = &H1
Private Const TH32CS_SNAPPROCESS = &H2
Private Const TH32CS_SNAPTHREAD = &H4
Private Const TH32CS_SNAPMODULE = &H8
Private Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Private Const TH32CS_INHERIT = &H80000000
Private Const MAX_PATH As Integer = 260

Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const SYNCHRONIZE As Long = &H100000
Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)

Private Const INFINITE = &HFFFF

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 * MAX_PATH
End Type

Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long


Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function WaitForSingleObject Lib "kernel32.dll" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)

Private Function GetPIDFromName(ByVal sName As String, _
                                ByRef lPID As Long) As Boolean
    Dim lSnap           As Long
    Dim pProcess        As PROCESSENTRY32
    Dim lReturn         As Long
    Dim sExeName        As String
   
    lSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
    With pProcess
        .dwSize = Len(pProcess)
   
        lReturn = Process32First(lSnap, pProcess)
        Do While lReturn
       
            sExeName = Left$(.szExeFile, IIf(InStr(1, .szExeFile, Chr$(0)) > 0, InStr(1, .szExeFile, Chr$(0)) - 1, 0))

            If StrComp(sExeName, sName, vbTextCompare) = 0 Then
                GetPIDFromName = True
                lPID = .th32ProcessID
                Call CloseHandle(lSnap)
                Exit Function
            End If
           
            lReturn = Process32Next(lSnap, pProcess)
        Loop
    End With
   
    Call CloseHandle(lSnap)
End Function

Private Function WaitForExe(ByVal sName As String) As Boolean

    Dim lPID            As Long
    Dim lProcHandle     As Long
   
    If Not GetPIDFromName("notepad.exe", lPID) Then
        Exit Function
    End If
   
    lProcHandle = OpenProcess(SYNCHRONIZE, 0, lPID)
   
    If lProcHandle = 0 Then
        Exit Function
    End If
   
    Call WaitForSingleObject(lProcHandle, INFINITE)
   
    Call CloseHandle(lProcHandle)
   
    WaitForExe = True
End Function

64
Visual Basic 6 / Re:Problema con cSocketMaster en Server 2008 - 64 bits
« en: Agosto 12, 2014, 03:16:41 pm »
Puede ser un bug del subclass... Probaste hacer alguna app "muy basica" (que no haga nada excepto aceptar la conexion y devolver datos)?
PD: Trata de deshabilitar el "DEP" en las propiedades avanzadas del sistema (esto jode al subclass).

65
Visual Basic 6 / Re:Proyecto Grupal / Ideas
« en: Agosto 12, 2014, 12:38:43 am »
Probablemente eso ya exista... Podes usar las barras API (http://www.vbaccelerator.com/home/VB/Code/Controls/Toolbar/index.asp).

66
Visual Basic 6 / Re:Proyecto Grupal / Ideas
« en: Agosto 07, 2014, 05:53:06 pm »
Mira yo estoy haciendo con Cobein un ORM. Posiblemente no sea lo mejor, ni lo mas util para todos.
Igualmente hay otras cosas que me gustaria hacer aparte del ORM. Propongan ideas de controles de usuario, o clases... Nada de modificar el IDE de vb6 ni hacer software completo como un ERP.
Hace añares que quedaron algunas ideas pendientes como el del VNC, la clase que emula un "report", el DirectUI, etc.

67
Visual Basic 6 / Re:Proyecto Grupal / Ideas
« en: Agosto 06, 2014, 03:31:17 pm »
Hola, muchas ideas ambiciosas   :D, creo que no es para tanto, tendria que ser algo que este mas al alcance, porque no empezamos con algo mas sencillo y chiquito por ejemplo, un usercontrol con una pagina de propiedades en el cual le cargas una imagen PNG o  ICO el array de la imagen lo almacena en una propertybag  y luego al ejecutar el form contenedor le pone el icono chico y el grande a este.
Es algo sencillo, util y nos da la posibilidad de poner iconos de 32bits.                                         

Disculpa la duda... que no es lo que tiene el control de Cobein? el ucImage. Aunque cierto no tiene el array de imagenes en ese caso se podria partir desde ese UC. Salvo que no halla entendido bien la propuesta.

.
Lo que dice leandro es que un UC ponga de icono 32bpp al icono del form pariente. No lo va a pintar, ya que para eso esta el ucImage de cobein.

68
Visual Basic 6 / Re:Proyecto Grupal / Ideas
« en: Agosto 05, 2014, 09:49:15 pm »
@AxioUK: Si, se puede tranquilamente hacer algun addon. Pero de que? No hay forma de "modificar" humanamente el comportamiento de VB6; es decir, no podes hookear cuando elegis un .jpg y ahora dejar que puedas elegir un PNG, porque hay muchisimas cosas detras (quizas englozadas en el runtime, o el vba6.dll en tiempo de edicion).

@raul338: lo del pdb puede ser... pero resulta incomodo de solo pensar que para hacer el debug necesites otro soft, que nisiquiera permita edicion "on the fly" (tampoco habria que ser tan estrictos con esto, ya que muy pocos lenguajes soportan esta feature), pero es uno de los fuertes de VB6.

69
Visual Basic 6 / Re:Proyecto Grupal / Ideas
« en: Agosto 05, 2014, 04:14:29 pm »
Hola, bueno el tema del IDE no creo que sea facil ni siquiera este al alcance. Actualmente estuve buscando como "ejecutar" codigo sin compilar, para debuguear (igual que cuando uno toca F5). Resulta que no hay informacion sobre como lo hace VB6, asi que por esa parte estamos jodidos.
Despues, el tema de usar PNG en controles intrinsecos, es jodido ya que es una limitacion de VB6 y no es solo del IDE. A lo sumo como dice raul de incluir clases para que esto sea posible y totalmente transparente para el usuario...
Pero recaemos en el problema que no se puede debuguear... y no me convence asi!

70
Visual Basic 6 / Proyecto Grupal / Ideas
« en: Agosto 05, 2014, 02:54:56 am »
Buenas a todos!

Como dice el titulo, estamos viendo de hacer algun proyecto grupal (entre los que quieran participar), o bien proponer ideas POSIBLES (si es que no quieren participar en la programacion, pero tienen una idea muy buena).

En fin, no se trata de hacer un soft entero (puede que si, puede que no), sino de hacer "algo" particular...
Obviamente el codigo va a ser de caracter open-source como todo lo que se publica aqui, y NO SE PODRÁ VENDER NI COBRAR el codigo en si.

Para comenzar, e idealmente, las ideas pueden estar categorizadas como "Base de datos", "GUI (por ejemplo, skinnear tal cosa, agregar tal otra a un control, etc)", "Sockets y protocolos (por ejemplo implementar algun protocolo, hacer algun P2P, comunicacion con algun sitio, etc)", "Herramientas + Utilidades basicas (por ejemplo, alguna clase que extienda el funcionamiento de las apps de VB6 y agregue algo extra como la clase PNG, controles de usuario como el ucLinkButton, etc, o bien algo que use funciones que no estan disponibles en VB6 como extender el Aero, agregar botones a la vista previa del taskbar, etc)".

Puse algunos ejemplos, los cuales ya existen, pero es para dar una idea. Cualquier idea es bienvenida!!!

En una etapa siguiente, vamos a ponernos de acuerdo y establecer algunas reglas para programar entre todos (usar notacion hungara, option explicit, y cosas por el estilo).



Mi propuesta (seria la primer idea) es hacer una clase que administre los iconos de los formularios, botones, frames y demas. Que sea totalmente automatica, por ejemplo, los controles en su .Tag tienen la ruta a los iconos (para cada estado), y que la clase aplique los mismos. Inclusive el icono del Form, y demas. Que sea rapida y no leakee ningun handle (por lo tanto la clase deberia estar atenta a cuando un form se cierra, para poder descargar los iconos que se usaron ahi). Y por ultimo, que provea la opcion de cambiar por codigo la imagen de cualquier control (por si es necesario cambiarlo en tiempo de ejecucion). Que sea 100% API, para que soporte iconos de cualquier tamaño y resolucion.

Saludos!

73
Visual Basic 6 / Re:shellandwait ayuda, no recuerdo :(
« en: Julio 20, 2014, 09:09:10 pm »
Lo mas sencillo es ejecutar tu aplicacion con "Shell" (metodo nativo de VB6). Si necesitas mas opciones, podes usar el API CreateProcess.
La idea de ambas funciones es ejecutar la aplicacion y obtener su PID (process id). Si devuelve 0 es que no se ejecutó.
Luego, llamar al API WaitForSingleObject, utilizando como parametros el PID y "INFINITE" (asi espera eternamente hasta que el mismo finalize).

te dejo aca parte de mi codigo, que seguramente te va a servir:
Código: (vb) [Seleccionar]
Option Explicit


Private Const INFINITE = &HFFFF
Private Const STARTF_USESHOWWINDOW = &H1

Private Enum enSW
    SW_HIDE = 0
    SW_NORMAL = 1
    SW_MAXIMIZE = 3
    SW_MINIMIZE = 6
End Enum

Private Const NORMAL_PRIORITY_CLASS = &H20

Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessId As Long
    dwThreadId As Long
End Type

Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type

Private Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Long
End Type

Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Public Function RunProcess(ByVal sFile As String, ByVal sArguments As String, ByVal sPath As String) As Long
    Dim pStartInfo  As STARTUPINFO
    Dim pProcInfo   As PROCESS_INFORMATION
    Dim pSec1       As SECURITY_ATTRIBUTES
    Dim pSec2       As SECURITY_ATTRIBUTES

    RunProcess = -1
   
    pSec1.nLength = Len(pSec1)
    pSec2.nLength = Len(pSec2)
   
    With pStartInfo
        .cb = Len(pStartInfo)
        .dwFlags = STARTF_USESHOWWINDOW
        .wShowWindow = 1
    End With
   
    If CreateProcessA(vbNullString, FixPath(sPath) & sFile & " " & sArguments, _
                      pSec1, pSec2, False, NORMAL_PRIORITY_CLASS, 0&, sPath, _
                      pStartInfo, pProcInfo) Then
                     
        RunProcess = pProcInfo.hProcess
    End If
End Function

Public Sub WaitInfinite(ByVal hHandle As Long)
    Call WaitForSingleObject(hHandle, INFINITE)
End Sub

Public Function ShellAndWait(ByVal sFile As String, ByVal sArguments As String, ByVal sPath As String) As Boolean
    Dim lPID    As Long

    lPID = RunProcess(sExec, sParams, sPath)
               
    If lPID = -1 Then
        Debug.Print "Error ejecutando el programa """ & sPath & sExec & """!"
        Exit Function
    End If

    Call WaitInfinite(lPID)

    ShellAndWait = True
End Function

luego, desde tu programa llamas a ShellAndWait con los parametros del archivo ejecutable, su ruta, y los parametros (este ultimo es opcional)

saludos

74
General / Re:Terminacion de Software
« en: Julio 18, 2014, 05:54:54 pm »
el link funciona perfecto. podes usar un proxy si no te carga... (hidemyass.com)

75
Visual Basic 6 / Re:WINSOCK PROBLEM
« en: Julio 17, 2014, 10:59:24 pm »
hola, creo que hay un detalle seguramente en tu codigo.

que tipo de conexion usas? el "cliente" se conecta al "server" ? o el server al cliente?

en el caso de que el server se conecte al cliente, tenes que enviar datos luego que aparezca el evento "Connected" o OnConnect (no recuerdo el nombre).
en el otro caso (el cliente se conecta al server), tenes que enviar datos luego de aceptar la conexion entrante.

Páginas: 1 2 3 4 [5] 6 7 8 9 10 ... 37