|
171
|
Programación / Programación Visual Basic / Re: Ningun programador puede jaja xD
|
en: 24 Octubre 2010, 21:26 pm
|
bueno aver agamos las cosas sensillas Cliente dos textbox y un command1 Option Explicit
Dim WithEvents Client As CSocketMaster
Private Sub Client_CloseSck() Me.Caption = "Desconectado" End Sub
Private Sub Client_Connect() Me.Caption = "Conectado" End Sub
Private Sub Client_Error(ByVal Number As Integer, Description As String, ByVal sCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) MsgBox Err.Description End Sub
Private Sub Command1_Click() Client.SendData Text2 End Sub
Private Sub Form_Load() Dim IP As String IP = "10.0.0.3" 'aqui deve ir la ip publica Set Client = New CSocketMaster Client.Connect IP, "100"
End Sub
Private Sub Client_ConnectionRequest(ByVal requestID As Long) Client.CloseSck Client.Accept requestID End Sub
Private Sub Client_DataArrival(ByVal bytesTotal As Long) Dim data As String Client.GetData data Text1.Text = Text1.Text + data + vbCrLf End Sub
Servidor dos textbox y un command1 Option Explicit
Dim WithEvents Server As CSocketMaster
Private Sub Command1_Click() Server.SendData Text2 End Sub
Private Sub Form_Load() Set Server = New CSocketMaster Server.LocalPort = 100 Server.Listen End Sub
Private Sub Server_CloseSck() Me.Caption = "Desconectado" End Sub
Private Sub Server_ConnectionRequest(ByVal requestID As Long) Server.CloseSck Server.Accept requestID Me.Caption = "Conectado" End Sub
Private Sub Server_DataArrival(ByVal bytesTotal As Long) Dim data As String Server.GetData data Text1.Text = Text1.Text + data + vbCrLf End Sub
Private Sub Server_Error(ByVal Number As Integer, Description As String, ByVal sCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) MsgBox Err.Description End Sub
Eso es un código bien basico, solo tenes que cambiar la IP y probarlo te tiene que funcionar, una ves que verificaste que esto funciona le agreas las demas boludeces.
|
|
|
173
|
Programación / Programación Visual Basic / Re: Ningun programador puede jaja xD
|
en: 24 Octubre 2010, 01:16 am
|
Buenisimo BlackZeroX, hay otra cosa mas para sugerirte, que la ip no sea obligatoria ya que pude que no cosoca mi ip publica. o bien puedes hacer otro php para recuperar la ip publica, pero ya son dos peticiones creo que es mejor lo primero y hasta podria devolverla dentro del resultado. pero antes hay que arreglar algo fijate Option Explicit
Private Sub Form_Load() Winsock1.Close Winsock1.LocalPort = 300 Winsock1.Listen End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) Winsock1.Close Winsock1.Accept requestID End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim sData As String Winsock1.GetData sData Debug.Print sData End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) Debug.Print Description End Sub
no imprime ningun texto, creo que el scanX cierra demasiado rapido la conexion y no se alcanza a enviar el msg. @Zero esto deveia indicarte el estado Option Explicit
'=========Wininet Api======== Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Const INTERNET_OPEN_TYPE_DIRECT As Long = 1 Private Const INTERNET_OPEN_TYPE_PROXY As Long = 3 Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Private WithEvents CSocket As CSocketMaster
Private Sub CSocket_ConnectionRequest(ByVal requestID As Long) CSocket.CloseSck CSocket.Accept requestID End Sub
Private Sub CSocket_DataArrival(ByVal bytesTotal As Long) Dim sData As String CSocket.GetData sData Debug.Print sData End Sub
Private Sub Form_Load() Set CSocket = New CSocketMaster CSocket.LocalPort = 200 CSocket.Listen
Debug.Print GetConnection("http://infrangelux.sytes.net/ScanX/?ip=190.225.124.46&NoHtml=2&port=200&msg=Prueba") End Sub
Function GetConnection(ByVal sUrl As String) As String
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long sBuffer = Space(1000)
hOpen = InternetOpen("VB6", INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
hFile = InternetOpenUrl(hOpen, sUrl, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&) Do InternetReadFile hFile, sBuffer, 1000, Ret GetConnection = GetConnection & Left(sBuffer, Ret) If Ret = 0 Then Exit Do Loop InternetCloseHandle hFile InternetCloseHandle hOpen End Function
Private Sub CSocket_Error(ByVal Number As Integer, Description As String, ByVal sCode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) Debug.Print Description End Sub
PD algunos modem tambien bloquean los puertos acesorate de eso para habilitarlos. por las dudas utiliza tu ip publica http://www.cualesmiip.com/
|
|
|
174
|
Programación / Programación Visual Basic / Re: Ningun programador puede jaja xD
|
en: 23 Octubre 2010, 20:10 pm
|
lo primero que te recomendaria es verificar si se puede conectar a esa pc porque puede que estes detras de un router, o el firewal o antivirus bloque los puertos de seguro que es el router create un server ponelo a la escucha e intenta conectar desde otro lado lo podes hacer con el sitio de BlackZeroX http://infrangelux.sytes.net/ScanX/PD: Muy bueno BlackZeroX esa pagina yo hace rato quize hacer eso pero ningun servidor me permitio utilzar los sokets en puertos que no sea el 80, en que esta en linux o windows?, estaria bueno que agas un tipo api, para testear este tipo de problemas como el de ZERO, osea la pagina deberia retornar un OK o ERROR, algo bien pelado osea sin ningun html
|
|
|
175
|
Programación / Programación Visual Basic / Re: Problema Matematico
|
en: 22 Octubre 2010, 07:53 am
|
hola, no noes eso, pero de todas formas estoy confundido en algo creo que estoy malinterpretando algo lo que descrivi anteriormente no es tan asi, creo que es mejor cerrar la pregunta hasta tener en claro las cosas. una imagen de 24 * 24 tiene 1728 (24 x 24 x 3 = 1728) pero una imagen de 25 * 25 tiene 1900 (25 x 25 x 3 = 1875) esto no cumple la regla que pensaba alto x ancho x 3 las imagenes tienen una profundidad de bits de 24 osea un savepicture de vb Option Explicit
Private Type BITMAPFILEHEADER '14 bytes bfType As Integer '"magic cookie" - must be "BM" bfSize As Long bfReserved1 As Integer bfReserved2 As Integer bfOffBits As Long End Type
Private Type BITMAPINFOHEADER '40 bytes biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As Long End Type
Dim BFH As BITMAPFILEHEADER Dim BIH As BITMAPINFOHEADER
Private Sub Form_Load() Me.ScaleMode = vbPixels Picture1.BorderStyle = 0 Picture1.BackColor = vbWhite Picture1.Width = 24 Picture1.Height = 24 DoEvents SavePicture Picture1.Image, App.Path & "\Image1.bmp" LoadHeaderPicture App.Path & "\Image1.bmp" Debug.Print BIH.biSizeImage Picture1.Width = 25 Picture1.Height = 25 DoEvents SavePicture Picture1.Image, App.Path & "\Image1.bmp" LoadHeaderPicture App.Path & "\Image1.bmp" Debug.Print BIH.biSizeImage
End Sub
Private Sub LoadHeaderPicture(ByVal sPath As String) Open sPath For Binary Access Read As #1 Get #1, , BFH Get #1, Len(BFH) + 1, BIH Close #1 End Sub
a estudiar el formato bmp Fundamental
|
|
|
176
|
Programación / Programación Visual Basic / Problema Matematico
|
en: 22 Octubre 2010, 06:31 am
|
Hi, tengo un problema, que me voló la cabeza seguro que es una boludes mas grande que una casa pero se me quemaron las neuronas, es medio complicado explicarlo pero voy a intentarlo.
supongamos una imagen, esta tiene unas dimensiones de 16 x 16px por cada pixel de esa imagen tenemos 3 bytes esto da como resultado un array de 768 bytes
16 x 16 x 3 = 768
otro ejemplo
32 * 16 * 3 = 1536
bien haciendo esa ecuación puedo saber la cantidad de bytes que ocupara la imagen, ahora supongamos que yo quiero ingresar la cantidad de bytes y deseo que la imagen sea lo mas cuadrada posible que ecuación tengo que hacer???
yo puedo poner (tomando el primer ejemplo)
Ancho = Sqr(768 / 3) Alto = Ancho
pero que pasa si el array que ingreso es de 769 bytes tengo un resultado erróneo de 16,0104.. y esto no es una medida valida para una imagen ya que no puede tener decimales.
entonces puede que tenga que adicionar uno/s bytes extra al array para que sea un valor "par" así poder obtener un resultado correcto, no importa que sea una imagen 100% cuadrada, pero que sea lo mas aproximado.
Se entiende??, Gracias
|
|
|
178
|
Programación / Programación Visual Basic / Re: [Source] ExtractApisEXEVB6 (Se puede Ampliar)
|
en: 16 Octubre 2010, 02:53 am
|
no pero no es lo mismo,el Pe Explorer muestra las dependencias pero no las apis utilizadas es decir si abrimos iexplorer.exe nos mostrara advapi32.dll, kernel32.dll, gdi32.dll etc etc. pero no que apis en cuestión esta utilizando de todas esas dll, para los ejecutables de vb6 solo muestra msvbvm60.dll
ahora si abro el iexplorer.exe con un editor hexadecimal en la posición DF96 puedo ver
RegCloseKey, RegQueryValueExW, RegOpenKeyExW .etc
Saludos.
|
|
|
180
|
Programación / Programación Visual Basic / Re: [Source] ExtractApisEXEVB6 (Se puede Ampliar)
|
en: 14 Octubre 2010, 05:58 am
|
Muchas Gracias BlackZeroX, es una lastima que no liste de cualquier ejecutable osea solo los de vb6, porque esta muy piola para ver que apis utilizan cada programa, yo tengo que andar con un editor hexadecimal y es medio hincha ir buscando la sección donde están y es incomodo. seguramente se debe poder, pero esta medio complicado, por lo menos para mi.
Saludos.
|
|
|
|
|
|
|