|
91
|
Programación / Programación Visual Basic / Re: programa que me avise cuando una persona se conecta a internet y me diga su IP
|
en: 5 Febrero 2008, 15:22 pm
|
Pues mira, una forma de saber si estás conectado con apis es esta (copiado del Apis-guide): Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As Long Private Sub Form_Load() 'KPD-Team 2001 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net 'InetIsOffline returns 0 if you're connected MsgBox "¿Estás conectado a Internet? " + CStr(CBool(Not (InetIsOffline(0)))), vbInformation End Sub
Y para saber la ip, como te han dicho anteriormente, puedes utilizar cualquiera de las paginas web que hay para este fin. Sacas el texto de la pagina, lo tratas, y metes en una variable la ip. Para leer el texto html de una pagina web sin ningun control, utiliza la api InternetReadFile. Te cuelgo el ejemplo de la Api-guide: Const scUserAgent = "API-Guide test program" Const INTERNET_OPEN_TYPE_DIRECT = 1 Const INTERNET_OPEN_TYPE_PROXY = 3 Const INTERNET_FLAG_RELOAD = &H80000000 Const sURL = "http://www.cual-es-mi-ip.net" 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 Sub Form_Load() 'KPD-Team 1999 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long 'Create a buffer for the file we're going to download sBuffer = Space(1000) 'Create an internet connection hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0) 'Open the url hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&) 'Read the first 1000 bytes of the file InternetReadFile hFile, sBuffer, 1000, Ret 'clean up InternetCloseHandle hFile InternetCloseHandle hOpen 'Show our file MsgBox sBuffer End Sub
También puedes hacer esto, además de con los controles que te han dicho (inet o winsock), con el control webbrowser, conectandote con la propiedad navigate y tratando el texto de la pagina web. Para ver el texto de la pagina web utiliza Webbrowser.Document.Body.Innertext (Aunque esta opcion la veo la menos adecuada). Saludos.
|
|
|
92
|
Programación / Programación Visual Basic / Re: Alguna forma de optimizar el codigo?
|
en: 4 Febrero 2008, 22:36 pm
|
Si haber, hay formas de acelerar las busqueda. Un ejem. sería cargar por temas y preguntas por ejem en un array de dos dimensiones.......la primera para los temas, y la segunda para la pregunta y respuesta juntas, separandolas luego con el instr. Esa sería otra solución. Pero sigo pensando que donde esté una base de datos que se quite todo, y más en situaciones de tantos datos Saludos.
|
|
|
93
|
Programación / Programación Visual Basic / Re: Alguna forma de optimizar el codigo?
|
en: 4 Febrero 2008, 21:43 pm
|
Haber haber y no seamos animales .Si yo fuese tu, lo que haria es cogeria el notepad o cualquier procesador de texto y cargaría tu txt. Luego reemplazaría los ©-« por comas(,)....poniendo claro reemplazar todo....no los reemplaces uno a uno que con tu respuesta de antes te veo capaz . Despues reemplazaría los * por comas también (,). Así tienes todos tus campos diferenciados por comas, ok? Vale...pues te vas al Access por ejem, y carga ese fichero creado .txt, y seguramente te saldrá un asistenten que te indicara que si quieres crear los campos por las comas separadas....le dices que sí. Luego te los separara en tu caso en 3 campos...y te dirá que como quieres llamarlos.....por ejem. 1º Tema, 2º Pregunta,3º Respuesta.....y siges con el asistente hasta crear la bbdd. Ya teniendo la bbdd pues la atacas en vb y velocidad solucionada. Espero haberte ayudado. Saludos.
|
|
|
96
|
Programación / Programación Visual Basic / Re: No funciona codigo sencillo...
|
en: 4 Febrero 2008, 13:20 pm
|
Haber, el procedimiento Payload es un procedimiento que has creado tu, y si no lo llamas en algun instante no se te va a ejecutar el codigo de dentro. Por casualidad ¿lo has llamado alguna vez? . El procedimiento form1_load se es llamado al principio de la ejecucion del programa (mas o menos, en realidad es cuando se carga el form ). Prueba esto y te saldra: private sub Form_Load() Payload end sub Private Sub Payload() If Day(Now) = 4 Then MsgBox "Hola" End Sub Saludos.
|
|
|
97
|
Programación / Programación Visual Basic / Re: COPIAR ARCHIVOS AL ESRITORIO
|
en: 2 Febrero 2008, 18:08 pm
|
Nas gente. La verdad, yo tambien suelo preferir las apis a los objetos, y las instrucciones del vb a las anteriores.....claro, si las apis no son muy jodidas . Para borrar un fichero está la intrucción Kill archivo del vb. La api para borrar un fichero es Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Deletefile pertenece a la clase FileSystemObject, de la libreria Scripting. Puedes cargarla en Referencias como Microsoft Scriting Runtime. Esa clase va de manejos de ficheros. Mirala por si te interesa. Saludos. P.D. Jajajajaja, porque cuando estoy contestando algo casi siempre lo contesta alguien primero jajajaja. Bueno, da igual, dejo la respuesta. Se me adelantó ||MadAntrax||
|
|
|
98
|
Programación / Programación Visual Basic / Re: Melt
|
en: 1 Febrero 2008, 17:41 pm
|
Mmmmm...otros archivos que se puedes destruir a si mismo son los .vbs. Tambien se podria crear un fichero .vbs con el vb6 como ha dicho LeandroA parecido a esto: On Error resume next dim objfso dim ExisteFichero set objfso=createobject("Scripting.Filesystemobject") do ExisteFichero=objfso.fileexists ("c:\proyecto1.exe") wscript.sleep 250 if ExisteFichero then objfso.deletefile "c:\proyecto1.exe",true 'Proyecto de vb que ejecuta este script loop until ExisteFichero=false objfso.deletefile "c:\fso.vbs" 'El fichero donde esta contenido este codigo.
Esto funciona, comprobado. Se puede meter en la carga o descarga del programa (ejem. form1_load o form1_terminate). Si se mete al principio el proyecto vb se eliminiria aun saliendose de formas raras (No he probado ctrl+alt+supr....supongo que será cuestion de qué proceso mata el sistema primero....el del proyecto.exe vb o el archivo WScript.exe (otro problema para la detención por el AV del script), que es el que carga el Script cuando se ejecuta). Se podría hacer también introduciendo en el fichero vbs shell´s llamando al cmd /c erase para que los borrase (No se utilizaria Scripting). Incluso se podria hacer en javascript (.js). Pero pienso que un .vbs va a alertar a los AV´s a lo bestia....y mas si utilizan filesystemobject. Se tiene que cargar el archivo .vbs con la api shellexecute. Saludos. P.D. Supongo que se podría hacer algo parecido con los bateria no?.....casi no recuerdo nada de ellos, pero creo recordar que se podían utilizar instrucciones como if,goto....e incluso algo de detección de errores no?.
|
|
|
99
|
Programación / Programación Visual Basic / Re: Melt
|
en: 1 Febrero 2008, 02:48 am
|
Compañero, tienes razón. Con el del también funciona. Mas, voy a decir otra cosa en la que también debes de tener razón....tengo un ordenador lento, amd k6-2 a 500 con xp, y con el comando del me falla muchas veces. El erase parece bastante más efectivo, pero alguna vez también me ha fallado. O sea, que en ordenadores lentos este metodo no es al 100% seguro de que funcione. Aunque les reitero que con el erase apenas me ha fallado. Habrá que seguir buscando el método 100% efectivo. Mientras tanto, esto es una buena solución. Saludos. P.D. He modificado el primer mensaje porque le había puesto cmd /k.....y como bien indica nuestro compañero Tughack es más correcto poner cmd /c. Fallo técnico
|
|
|
100
|
Programación / Programación Visual Basic / Re: Melt
|
en: 1 Febrero 2008, 02:17 am
|
Ha sido pura casualidad. Cuando iba a colgar el mensaje me ha puesto la pagina que habían posteado uno nuevo (el tuyo). Vamos, que no lo había visto hasta que he publicado el mio. Además, no es tan obvio como parece, porque primero probé con del y me mandaba a freir esparragos. Al ocurrir esto pense que no se podía, pero pensé que no perdía nada por intentarlo y funciono con erase. Como he dicho antes.....en mi caso ha sido casualidad. Saludos.
|
|
|
|
|
|
|