Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - SquX

#1
Hola, les vengo a plantear una pequeña duda que tengo:

Acabo de empezar a programar en el lenguaje "C" y he utilizado Dev-C++ y me ha ido muy bien. Pero me he dado cuenta de que los ejecutables por más pequeño se haga un Code, los ejecutables siempre pesan entre 16-15 KB y quisiera saber si hay alguna forma de bajar ese peso? ya que según tengo entendido, se pueden dejar ejecutables hasta de 2 KB.

Recuerdo que había visto un video tutorial en donde dejaban un ejecutable de Dev-C++ a 5 KB y creo que hasta logre hacerlo, pero perdí el tutorial y ya no me recuerdo como se hace.
#2
Bueno pues hice este pequeño modulo para comprobar la IP publica desde el VB conectándose a la web de: ip-adress.com y descargando el código de fuente. No es ninguna ciencia pero a mas de alguien le sirve.

Código (vb) [Seleccionar]


Option Explicit

'--------------------------------------------
'   Autor   : SquX
'   Nombre  : mIP
'   Funcion : Optener el IP publico
'--------------------------------------------

Private Const INTERNET_OPEN_TYPE_DIRECT             As Integer = 1
Private Const INTERNET_OPEN_TYPE_PROXY              As Integer = 3
Private Const INTERNET_FLAG_RELOAD                  As Long = &H80000000
Private Const INTERNET_FLAG_NO_CACHE_WRITE          As Long = &H4000000

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

Public Function sIP() As String

   sIP = Dividir(Code("http://www.ip-adress.com"), "<h2>My IP address is: ", "</h2>")

End Function

Public Function Code(sURL As String) As String ' // Basado en ejemplo en recursosvisualbasic.com.ar

   Dim sBuff   As String * 100
   Dim sOpen   As Long
   Dim sFile   As Long
   Dim sRet    As Long
   
   sOpen = InternetOpen("SquX", INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
   
   If sOpen <> 0 Then
   
       sFile = InternetOpenUrl(sOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_NO_CACHE_WRITE, ByVal 0&)
       
       If sFile <> 0 Then
       
           Do
               
               Call InternetReadFile(sFile, sBuff, 100, sRet)
               
               Code = Code & Mid$(sBuff, 1, sRet)
               
               If sRet = 0 Then
               
                   Exit Do
                   
               End If
               
           Loop
           
           Call InternetCloseHandle(sFile)
           Call InternetCloseHandle(sOpen)
           
       End If
       
   End If
           
End Function

Public Function Dividir(Texto As String, Delimitador1 As String, Delimitador2 As String) As String

   Dim sData() As String
   
   sData() = Split(Texto, Delimitador1)
   sData() = Split(sData(1), Delimitador2)
   
   Dividir = sData(0)
   
End Function



Uso:

Código (vb) [Seleccionar]


Option Explicit

Private Const MB_ICONINFORMATION            As Long = &H40&

Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Private Sub Form_Load()

   Call MessageBox(Me.hwnd, "Mi ip es: " & sIP, "IP", MB_ICONINFORMATION)

End Sub



Espero criticas :)
#3
Hola.

Tengo una duda acerca de que si es mejor usar Apis o usar funciones de VB en los codigos para mayor velocidad etc.

Ejemplo: E visto que algunos codigos usan el api MessageBox en lugar de usar la función de VB que es msgbox o en otros que en funciones como copiar usan el API CopyFile en lugar de usar el filecopy de VB.

Espero que me respondan.

Adios