|
21
|
Programación / Programación Visual Basic / Re: dudas con autoexec.bat
|
en: 13 Noviembre 2007, 02:15 am
|
Me parece que existen varios archivos en windows que el mismo sistema operativo los protege, creo que uno de esos es el autoexec.bat, y por eso no es tan fácil leer su contenido, estos archivos van a retornar siempre el 32 de archivo. acabe de investigar un poco, y encontre una api que te puede ayudar a averiguar si el archivo que estas averiguando por sus atributos es o no un archivo protegido por windows. El api es SfcIsFileProtected y podes encontrar sus especificaciones acá: http://msdn2.microsoft.com/en-us/library/aa382536.aspx.En base a esas especificaciones arme este código: Private Declare Function SfcIsFileProtected Lib "sfc.dll" (ByVal Handle As Long, ByVal ProtFileName As Long) As Long Private Declare Function GetLastError Lib "kernel32" () As Long Private Sub Command1_Click() Dim res& res = SfcIsFileProtected(0, StrPtr("C:\Windows\explorer.exe")) 'pasamos como parámetro, el handle 0, que no es necesario y la ruta del archivo If res = 0 then msgbox "Archivo no está protegido o no existe" else msgbox "Archivo protegido" end if msgbox GetLastError 'aca podemos mirar si el archivo no existe End Sub
Bueno, mira a ver si te sirve saludos aca el tema de los recursos protegidos por windows: http://msdn2.microsoft.com/en-us/library/aa382551.aspx
|
|
|
22
|
Programación / Programación Visual Basic / Re: ¿Cómo hacer un messenger?
|
en: 12 Noviembre 2007, 05:34 am
|
Quzás te sirva este manual sobre winsock + http que postee hace varios días, y que no se le dió la suficiente importancia, pero te puede servir xD Link: http://foro.elhacker.net/index.php/topic,186798.0.htmlAhora te explico yo variada cosa, para el login y el user logeado con éxito, podes mandar por un GET el user con su respectiva clave, algo como: GET /login.php?u=usuario&p=password HTTP/1.1 Host: tupagina.com Connection: Close
Y el login.php que contiene el código: //conexión a mysql y la selección de la base de datos $sentencia='SELECT * FROM tabla_usuarios WHERE usuario = "'.$usuario.'" LIMIT 1'; //cerras conexión echo 'logged=1'; }else{ echo 'logged=0'; }
y en el dataarrival del winsock pones: dim Datos as string winsock1.getdata datos vars=split(datos,"=")(0) cont=split(datos,"=")(1) if vars="logged" then if cont="1" then msgbox "usuario loggeado" else msgbox "clave o usuario incorrectos" end if
Bueno, que te sirva! Saludos
|
|
|
24
|
Programación / Programación Visual Basic / Re: problema con cadena de texto
|
en: 8 Noviembre 2007, 21:50 pm
|
Bueno, mira un code diferente , es que me gusta codear jaja Private Sub Command1_Click() Dim Canal%, palabras$, palabra$, palabras_por_separado As Variant, ruta$, x% 'Declaramos todas las variables Canal = FreeFile 'Abrimos un canal libre de escritura/lectura Open "c:\palabras.txt" For Input As Canal 'Abrimos el archivo c:\palabras.txt en modo lectura por el canal "canal" palabras = Input$(LOF(Canal), Canal) 'Leemos todo el contenido del archivo Close #Canal 'Cerramos el canal palabras_por_separado = Split(palabras, vbCrLf) 'Guardamos en un array todas las palabras que leimos delimitadas por enter x = Random(0, UBound(palabras_por_separado)) 'Llamamos a la función Random, y nos retorna un número entre 0 y el número de palabras que hay palabra = palabras_por_separado(x) 'La palabra (La que metemos en el text1.text) es el numero aleatorio que nos dió la función Random Text1.Text = palabra End Sub Private Function Random(ByVal Menor As Variant, ByVal Mayor As Variant) As Single 'Función para retornar un número aleatorio Randomize 'Inicializamos el generador de números aleatorios Random = Int((Mayor - Menor + 1) * Rnd + Menor) 'Restamos los do números mas uno, lo multiplicamos por un valor cualquiera, y se lo sumamos de nuevo al menor, así garantizamos que el numero que multiplicamos no sea menor que el número menor If Random > Mayor Then Random = Mayor 'Si el número que retorno es mayor que el número mayor, entonces retornamos el número mayor End Function
Ahí te explique mi code, el tuyo tambíen esta bien, si te inicia siempre en la misma palabra, pon un "Randomize" antes de utilizar el "Rnd". Saludos
|
|
|
26
|
Programación / Programación Visual Basic / Re: problema con cadena de texto
|
en: 8 Noviembre 2007, 19:53 pm
|
Corrije está línea: If Mid(tmp, i, 1) = "_" And LCase(Mid(Text1.Text, i, 1)) = Chr$(KeyAscii) Then
A: If Mid(tmp, i, 1) = "_" And LCase(Mid(Text1.Text, i, 1)) = letra Then
Saludos!, ahora lo pruebo que no ando en mi compu
|
|
|
27
|
Programación / Programación Visual Basic / Re: problema con cadena de texto
|
en: 8 Noviembre 2007, 04:50 am
|
Claro!, mira, para hacer que se compare sin importar si esta en mayus o en minus, lo que haces es, hacer que la letra insertada se pase a minúsculas con la función Lcase(), y luego donde se comparan las letras "Mid(Text1.Text, i, 1) = Chr$(KeyAscii)", haces que la letra que se sacó del text1.text se ponga también a minúsculas. Así: Private Sub Text3_KeyPress(KeyAscii As Integer) Dim tmp As String, letra As String letra = LCase(Chr$(KeyAscii)) tmp = Text2.Text If InStr(1, Text1.Text, letra, vbTextCompare) <> 0 Then For i = 1 To Len(Text1.Text) If Mid(tmp, i, 1) = "_" And LCase(Mid(Text1.Text, i, 1)) = Chr$(KeyAscii) Then Mid(tmp, i, 1) = Mid(Text1.Text, i, 1) End If Next i End If Text2.Text = tmp Text3.Text = "" End Sub
Saludos!
|
|
|
28
|
Programación / Programación Visual Basic / Re: duda al cambiar nick de msn
|
en: 7 Noviembre 2007, 22:41 pm
|
Ya voy aprendiendo Private WithEvents MSN As MessengerAPI.Messenger Private Sub Form_Load() Set MSN = New MessengerAPI.Messenger Set contactos = MSN.MyContacts For Each contacto In contactos If contacto.Status <> 1 Then '1 = offline, no utilizes tantos "or" en tu código... List1.AddItem contacto.SigninName End If Next End Sub
Editado. A parte de que me falto el "saludos ", se me olvidó decirte que si estás usando el option explicit, tenes que declarar obligatoriamente cada variable, para el user, podes poner al principio del código "Dim user".
|
|
|
29
|
Programación / Programación Visual Basic / Re: problema con cadena de texto
|
en: 7 Noviembre 2007, 05:04 am
|
:O Dim i As Integer Private Sub Command1_Click() Text2.Text = "" For i = 1 To Len(Text1.Text) Text2.Text = Text2.Text & "_" Next i End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) Dim tmp As String, letra As String letra = Chr$(KeyAscii) tmp = Text2.Text If InStr(1, Text1.Text, letra) <> 0 Then For i = 1 To Len(Text1.Text) If Mid(tmp, i, 1) = "_" And Mid(Text1.Text, i, 1) = Chr$(KeyAscii) Then Mid(tmp, i, 1) = Chr$(KeyAscii) End If Next i End If Text2.Text = tmp Text3.Text = "" End Sub
No le agregue espacios después del "_" porque se me complicaba la cosa, pero ahí está! Tenes que agregar tres textbox, el primero es el de la palabra, el segundo donde se dibujan los "____" y el tercero donde metes la letra. También agrega un commandbutton- Saludos!
|
|
|
30
|
Programación / Programación Visual Basic / Re: duda al cambiar nick de msn
|
en: 7 Noviembre 2007, 00:06 am
|
Mmm, prueba esto: Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Ese lo metes despues del "Public WithEvents MSN as MessengerApi.Messenger", y en el código que te puse, pon después del "DoEvents" esto: Sleep 1000
Así se asegura de que la ventana de opciones aparecerá, y el contenido sea insertado correctamente. Lo del error que te sale es cuando corres un activex, y posiblemente la libreria a la que llames este dañada o simplemente no esté (Me parece que es así , alguién que por favor aclare). Saludos!
|
|
|
|
|
|
|