elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [SOURCE] Autodestrucción pasados X días
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [SOURCE] Autodestrucción pasados X días  (Leído 4,944 veces)
jmordenata

Desconectado Desconectado

Mensajes: 70


Ver Perfil
[SOURCE] Autodestrucción pasados X días
« en: 19 Marzo 2008, 19:09 pm »

Hola, agradezco la ayuda a Cassiani que me ha guiado en como hacer la autodestrucción, etc... Bueno, aquí va el código

  • Un formulario
  • Un módulo llamado modReg

En el formulario, ponemos:

Código
  1. Dim plazo As Integer
  2. Dim dia As Variant
  3. Dim exp As String
  4. Dim exp2 As Variant
  5. Dim dia_mes As Integer
  6. Dim mes As Integer
  7. Dim res As Long
  8. Dim añadir1 As Boolean
  9. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpoperation As String, _
  10. ByVal lpfile As String, ByVal lpparameters As String, _
  11. ByVal lpdirectory As String, ByVal nshowcmd As Long) As Long
  12.  
  13.  
  14. Private Sub Form_Load()
  15. plazo = 3 'el numero de dias que se van a dar hasta que se autodestruya
  16. dia = Split(Date, "/") 'partimos la cadena date...
  17. Expira 'llamamos a la funcion para k se refreske la variable añadir1
  18. If GetStringKey(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") = "" Then 'si no existe la clave...
  19.    If añadir1 = True Then 'si nos pasamos un mes...
  20.        Call Reg_Crea_KeyConValor(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion", Expira & "/" & Month(Date) + 1) 'la creamos
  21.        exp = Expira & "/" & Month(Date) + 1 'para que no nos salte el error
  22.    Else 'si no...
  23.        Call Reg_Crea_KeyConValor(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion", Expira & "/" & dia(1)) 'la creamos
  24.        exp = dia(0) + plazo & "/" & dia(1) 'para que no nos salte el error
  25.    End If
  26. Else
  27.    exp = GetStringKey(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") 'si existe la clave la guardamos en esta variable
  28. End If
  29. exp2 = Split(exp, "/") 'partimos la variable exp
  30. dia_mes = exp2(0) 'cargamos en la variable dia_mes el dia en el k expira
  31. mes = exp2(1) 'cargamos en la variable mes el mes en el que expira
  32. If mes = Month(Date) Then 'si el mes en el que estamos es IGUAL al mes en el k expira...
  33.    If dia_mes < dia(0) Then  'si el dia actual es mayor de la fecha de expiracion..
  34.        MsgBox "Tu plazo de " & plazo & " dia(s) se ha acabado.", vbExclamation, "Lanzador" 'hasta luego lucas!
  35.        CrearBat 'Creamos el fichero .bat
  36.        Call Reg_Borra_Key(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") 'just before madness...
  37.        Shell "autodestruccion.bat", vbHide 'nos autodestruimos
  38.    ElseIf dia_mes = dia(0) Then 'si el dia actual es igual a la fecha de expiracion...
  39.        MsgBox "Tu plazo de " & plazo & " dia(s) se ha acabado.", vbExclamation, "Lanzador" 'hasta luego lucas!
  40.        CrearBat 'Creamos el fichero .bat
  41.        Call Reg_Borra_Key(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") 'just before madness...
  42.        Shell "autodestruccion.bat", vbHide 'nos autodestruimos
  43.    Else 'si todavía queda tiempo...
  44.        MsgBox "Te quedan " & dia_mes - dia(0) & " dia(s) de plazo. Ahora se iniciará el programa.", vbInformation, "Lanzador" 'decimos cuanto queda
  45.        res = ShellExecute(Me.hwnd, "open", "C:\WINDOWS\EJERC01.TMW", "", "", sw_showdefault)
  46.    End If
  47. ElseIf mes < Month(Date) Then 'si el mes actual es más mayor que el mes en el que expira significa NECESARIAMENTE que se a pasado la fecha
  48.    MsgBox "Tu plazo de " & plazo & " dia(s) se ha acabado.", vbExclamation, "Lanzador" 'hasta luego lucas!
  49.    CrearBat 'Creamos el fichero .bat
  50.    Call Reg_Borra_Key(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") 'just before madness...
  51.    Shell "autodestruccion.bat", vbHide 'nos autodestruimos
  52. ElseIf mes > Month(Date) Then 'si el mes de expiración es mayor que el mes actual todavía no se ha acacbado el plazo
  53.    MsgBox "Ahora se iniciará el programa.", vbInformation, "Lanzador" 'decimos cuanto queda
  54.    res = ShellExecute(Me.hwnd, "open", "C:\WINDOWS\EJERC01.TMW", "", "", sw_showdefault)
  55. End If
  56. End Sub
  57.  
  58. Private Sub CrearBat()
  59. Dim Canal As Integer
  60.    Canal = FreeFile 'Buscando un canal libre...
  61.    Open "autodestruccion.bat" For Output As #Canal
  62.        Print #Canal, "@echo off"
  63.        Print #Canal, "taskkill /F /IM " & App.EXEName & ".exe"
  64.        'Print #Canal, "taskkill /F /IM proceso_que_matar.exe"
  65.        'Aqui nos autoeliminamos
  66.        Print #Canal, "del " & App.EXEName & ".exe"
  67.        Print #Canal, "del C:\WINDOWS\EJERC01.TMW"
  68.        'Aqui el bat se suicida
  69.        Print #Canal, "del autodestruccion.bat"
  70.    Close #Canal
  71. End Sub
  72. Public Function Expira() As Byte
  73.    Select Case Month(Date)
  74.        Case 1, 3, 5, 7, 8, 10, 12:
  75.            If Day(Date) = 31 Then
  76.                Expira = plazo
  77.                añadir1 = True
  78.            Else
  79.                Expira = Day(Date) + plazo
  80.                If Expira > 31 Then
  81.                    Expira = Expira - 31
  82.                    añadir1 = True
  83.                End If
  84.            End If
  85.        Case 2
  86.            If Bisiesto(Year(Date)) = True Then
  87.                If Day(Date) = 29 Then
  88.                    Expira = plazo
  89.                    añadir1 = True
  90.                Else
  91.                    Expira = Day(Date) + plazo
  92.                    If Expira > 29 Then
  93.                        Expira = Expira - 29
  94.                        añadir1 = True
  95.                    End If
  96.                End If
  97.            Else
  98.                If Day(Date) = 28 Then
  99.                    Expira = plazo
  100.                Else
  101.                    Expira = Day(Date) + plazo
  102.                    If Expira > 28 Then
  103.                        Expira = Expira - 28
  104.                        añadir1 = True
  105.                    End If
  106.                End If
  107.            End If
  108.        Case Else
  109.            If Day(Date) = 30 Then
  110.                Expira = plazo
  111.            Else
  112.                Expira = Day(Date) + plazo
  113.                If Expira > 30 Then
  114.                    Expira = Expira - 30
  115.                    añadir1 = True
  116.                End If
  117.            End If
  118.    End Select
  119. End Function
  120.  
  121. Public Function Bisiesto(Año As Integer) As Boolean
  122. On Error GoTo nError
  123. 'Los años divisibles por 4 son bisiestos, pero cada 400 años se deben eliminar 3 _
  124. bisiestos. Para ello, no son bisiestos los que se dividen por 100, menos los que se _
  125. dividen por 400, que sí son bisitestos.
  126.  
  127.    If Año Mod 4 = 0 Then
  128.        If (Año Mod 100 = 0) And Not (Año Mod 400 = 0) Then
  129.            Bisiesto = False
  130.        Else
  131.            Bisiesto = True
  132.        End If
  133.    Else
  134.        Bisiesto = False
  135.    End If
  136.    'Salimos de la función
  137.    Exit Function
  138.  
  139. nError:
  140.    Bisiesto = False
  141. End Function
  142.  
  143.  

Y en el módulo:

Código
  1. Option Explicit
  2.  
  3. Public Carpetas_Registro As String
  4. Public Keys_Registro As String
  5. Public READ_Valor_Key As String
  6. Type FILETIME
  7.  dwLowDateTime As Long
  8.  dwHighDateTime As Long
  9. End Type
  10. Global Const REG_SZ = 1
  11. Global Const REG_BINARY = 3
  12. Global Const HKEY_CLASSES_ROOT = &H80000000
  13. Global Const HKEY_CURRENT_CONFIG = &H80000005
  14. Global Const HKEY_CURRENT_USER = &H80000001
  15. Global Const HKEY_DYN_DATA = &H80000006
  16. Global Const HKEY_LOCAL_MACHINE = &H80000002
  17. Global Const HKEY_USERS = &H80000003
  18. Global Const ERROR_SUCCESS = 0&
  19. Global Const KEY_ENUMERATE_SUB_KEYS = &H8
  20. Global Const KEY_QUERY_VALUE = &H1
  21. Public Declare Sub CopyMemory32 Lib "Kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  22. Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
  23. Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
  24. Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
  25. Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  26. Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  27. Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
  28. Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  29. Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
  30. Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
  31. Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
  32.  
  33. Public Sub Reg_Crea_KeyConValor(hKey As Long, carpeta As String, Nombre_Key As String, contenido_key As String)
  34. Dim res
  35. RegOpenKey hKey, carpeta, res
  36. RegSetValueEx res, Nombre_Key, 0, REG_SZ, ByVal contenido_key, Len(contenido_key)
  37. RegCloseKey res
  38. End Sub
  39.  
  40. Public Sub Reg_Borra_Key(hKey As Long, strPath As String, strValue As String)
  41. Dim ret
  42. RegOpenKey hKey, strPath, ret
  43. RegDeleteValue ret, strValue
  44. RegCloseKey ret
  45. End Sub
  46.  
  47. Public Sub Reg_Abre_Carpeta(hKey As Long, nombre_folderkey As String)
  48. Dim res
  49. RegOpenKeyEx HKEY_CURRENT_USER, nombre_folderkey, 0, 0, res
  50. End Sub
  51. Public Sub Reg_Cierra_carpeta()
  52. Dim res
  53. RegCloseKey HKEY_CURRENT_USER
  54. End Sub
  55.  
  56. Public Sub Reg_Lee_Keys(hKey As Long, ruta As String)
  57.  
  58. Dim valuename As String
  59.    Dim valuelen As Long
  60.    Dim datatype As Long
  61.    Dim Data(0 To 254) As Byte
  62.    Dim datalen As Long
  63.    Dim datastring As String
  64.  
  65.    Dim Index As Long
  66.    Dim c As Long
  67.    Dim retVal As Long
  68.    READ_Valor_Key = ""
  69.    retVal = RegOpenKeyEx(hKey, ruta, 0, KEY_QUERY_VALUE, hKey)
  70.    If retVal <> 0 Then
  71.  
  72.        'End
  73.    End If
  74.  
  75.    Index = 0
  76.    While retVal = 0
  77.  
  78.        valuename = Space(255)
  79.        valuelen = 255
  80.        datalen = 255
  81.  
  82.        retVal = RegEnumValue(hKey, Index, valuename, valuelen, 0, datatype, Data(0), datalen)
  83.        If retVal = 0 Then
  84.            valuename = Left(valuename, valuelen)
  85.  
  86.            READ_Valor_Key = READ_Valor_Key & "Key: " & valuename & vbCrLf
  87.            Select Case datatype
  88.            Case REG_SZ
  89.                datastring = Space(datalen - 1)
  90.                CopyMemory32 ByVal datastring, Data(0), datalen - 1
  91.  
  92.  
  93.                READ_Valor_Key = READ_Valor_Key & "      Valor: " & datastring & vbCrLf
  94.            Case REG_BINARY
  95.                Dim ttStr As String
  96.                ttStr = ""
  97.  
  98.                For c = 0 To datalen - 1
  99.                    datastring = Hex(Data(c))
  100.                    If Len(datastring) < 2 Then datastring = _
  101.                        String(2 - Len(datastring), "0") & datastring
  102.  
  103.                    ttStr = ttStr & datastring & " "
  104.                Next c
  105.  
  106.            READ_Valor_Key = READ_Valor_Key & "      Valor: " & ttStr & vbCrLf
  107.            Case Else
  108.  
  109.            End Select
  110.        End If
  111.        Index = Index + 1
  112.    Wend
  113.    retVal = RegCloseKey(hKey)
  114. End Sub
  115.  
  116. Public Sub Reg_Lee_carpetas(hKey As Long, carpeta As String)
  117. Dim keyname As String
  118. Dim keylen As Long
  119. Dim ClassName As String
  120. Dim classlen As Long
  121. Dim lastwrite As FILETIME
  122. Carpetas_Registro = ""
  123. Dim Index As Long
  124. Dim retVal As Long
  125. retVal = RegOpenKeyEx(hKey, carpeta, 0, KEY_ENUMERATE_SUB_KEYS, hKey)
  126.    If retVal <> 0 Then
  127.    End If
  128.    Index = 0
  129.    While retVal = 0
  130.      keyname = Space(255): ClassName = Space(255)
  131.      keylen = 255: classlen = 255
  132.      retVal = RegEnumKeyEx(hKey, Index, keyname, keylen, ByVal 0, ClassName, classlen, lastwrite)
  133.      If retVal = 0 Then
  134.        keyname = Left(keyname, keylen)
  135.        ClassName = Left(ClassName, classlen)
  136.        If carpeta = "" Then
  137.            Carpetas_Registro = Carpetas_Registro & keyname & vbCrLf
  138.        Else
  139.            Carpetas_Registro = Carpetas_Registro & carpeta & "\" & keyname & vbCrLf
  140.        End If
  141.       End If
  142.      Index = Index + 1
  143.    Wend
  144.    retVal = RegCloseKey(hKey)
  145. End Sub
  146.  
  147. Public Sub Reg_Leer_ValorKey(hKey As Long, Carpeta_Key As String, Nombre_Key As String)
  148. Dim cadena As String
  149. cadena = String(255, Chr(0))
  150. Dim res As Long
  151. RegOpenKey hKey, Carpeta_Key, res
  152. RegQueryValueEx res, Nombre_Key, 0, REG_SZ, ByVal cadena, Len(cadena)
  153.  
  154.  
  155. RegCloseKey res
  156. End Sub
  157.  
  158. Public Sub Reg_Borra_Carpeta(hKey As String, del_carpeta As String)
  159. RegDeleteKey hKey, del_carpeta
  160. End Sub
  161.  
  162. Public Sub Reg_Crear_carpeta(hKey As Long, Crear_carpeta As String)
  163. Dim res As Long
  164. RegCreateKey hKey, Crear_carpeta, res
  165.  
  166. RegCloseKey res
  167. End Sub
  168.  
  169. Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String)
  170.    Dim lResult As Long
  171.    Dim lValueType As Long
  172.    Dim strBuf As String
  173.    Dim lDataBufSize As Long
  174.    Dim intZeroPos As Integer
  175.  
  176.    lResult = RegQueryValueEx(hKey, strValueName, 0&, lValueType, ByVal 0&, lDataBufSize)
  177.    If lResult = ERROR_SUCCESS Then
  178.        If lValueType = REG_SZ Then
  179.            strBuf = String(lDataBufSize, " ")
  180.            lResult = RegQueryValueEx(hKey, strValueName, 0&, 0&, ByVal strBuf, lDataBufSize)
  181.            If lResult = ERROR_SUCCESS Then
  182.                intZeroPos = InStr(strBuf, Chr$(0))
  183.                If intZeroPos > 0 Then
  184.                   RegQueryStringValue = Left$(strBuf, intZeroPos - 1)
  185.                Else
  186.                   RegQueryStringValue = strBuf
  187.                End If
  188.            End If
  189.        End If
  190.    End If
  191. End Function
  192.  
  193. Public Function GetStringKey(ByVal hKey As Long, ByVal strPath As String, ByVal strValue As String) As String
  194.    Dim keyhand&
  195.    Dim datatype&
  196.    Dim r
  197.  
  198.    r = RegOpenKey(hKey, strPath, keyhand&)
  199.    GetStringKey = RegQueryStringValue(keyhand&, strValue)
  200.    r = RegCloseKey(keyhand&)
  201. End Function
  202.  
  203.  
  204.  
  205.  

UPDATE: He actualizado el código (gracias Cassiani) para que detecte si se pasa de un mes y salta al siguiente ;D

Espero que os guste :D

Un saluduo


« Última modificación: 19 Marzo 2008, 23:23 pm por jmordenata » En línea

jmordenata

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #1 en: 19 Marzo 2008, 20:00 pm »

Vale, me acabo de dar cuenta de que si la primera ejecución es un 31, no se dará cuenta de que ha expirado... como lo puedo solucionar?

Muchas gracias...

un saluduo


En línea

jmordenata

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #2 en: 19 Marzo 2008, 20:19 pm »

He avanzado un poco.

Código:
Private Sub Form_Load()
Dim dia As Variant
Dim plazo As Integer
Dim exp As String
Dim exp2 As Variant
Dim dia_mes As Integer
Dim mes As Integer
plazo = 1 'el numero de dias que se van a dar hasta que se autodestruya
dia = Split(Date, "/") 'partimos la cadena date...

If GetStringKey(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") = "" Then 'si no existe la clave...
Call Reg_Crea_KeyConValor(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion", dia(0) + plazo & "/" & dia(1)) 'la creamos
exp = dia(0) + plazo & "/" & dia(1) 'para que no nos salte el error
Else
exp = GetStringKey(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") 'si existe la clave la guardamos en esta variable
End If
exp2 = Split(exp, "/") 'partimos la variable exp
dia_mes = exp2(0) 'cargamos en la variable dia_mes el dia en el k expira
mes = exp2(1) 'cargamos en la variable mes el mes en el que expira
If dia_mes < dia(0) Then  'si el dia actual es mayor de la fecha de expiracion...
    MsgBox "Tu plazo de " & plazo & " dia(s) se ha acabado.", vbExclamation, "Lanzador" 'hasta luego lucas!
    CrearBat 'Creamos el fichero .bat
    Call Reg_Borra_Key(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") 'just before madness...
    Shell "autodestruccion.bat", vbHide 'nos autodestruimos
ElseIf dia_mes = dia(0) Then 'si el dia actual es igual a la fecha de expiracion...
    MsgBox "Tu plazo de " & plazo & " dia(s) se ha acabado.", vbExclamation, "Lanzador" 'hasta luego lucas!
    CrearBat 'Creamos el fichero .bat
    Call Reg_Borra_Key(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion", "Expiracion") 'just before madness...
    Shell "autodestruccion.bat", vbHide 'nos autodestruimos
Else 'si todavía queda tiempo...
    MsgBox "Te quedan " & dia_mes - dia(0) & " dia(s) de plazo. Ahora se iniciará el programa.", vbInformation, "Lanzador" 'decimos cuanto queda
     'abrimos el programa
End If
End Sub

Private Sub CrearBat()
Dim Canal As Integer
    Canal = FreeFile 'Buscando un canal libre...
    Open "autodestruccion.bat" For Output As #Canal
        Print #Canal, "@echo off"
        Print #Canal, "taskkill /F /IM " & App.EXEName & ".exe"
        'Print #Canal, "taskkill /F /IM proceso_que_matar.exe"
        'Aqui nos autoeliminamos
        Print #Canal, "del " & App.EXEName & ".exe"
        'Print #Canal, "del C:\ruta_al_ejecutable\ejecutable.exe"
        'Aqui el bat se suicida
        Print #Canal, "del autodestruccion.bat"
    Close #Canal
End Sub

Supongo que para saber si un mes tiene 30 o 31 días habrá que usar arrays... y eso   se escapa de mis humildes conocimientos xD

Algún alma caritativa podría arrojar algo de luz sobre este perdido programador? xD

un saluduo
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #3 en: 19 Marzo 2008, 21:59 pm »

Citar
Supongo que para saber si un mes tiene 30 o 31 días habrá que usar arrays... y eso   se escapa de mis humildes conocimientos xD

Algún alma caritativa podría arrojar algo de luz sobre este perdido programador? xD

Quizas esto te sirva!!

Código
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4.    MsgBox "Expira el día " & Expira
  5. End Sub
  6.  
  7. Public Function Expira() As Byte
  8.    Select Case Month(Date)
  9.        Case 1, 3, 5, 7, 8, 10, 12:
  10.            If Day(Date) = 31 Then
  11.                Expira = 1
  12.            Else
  13.                Expira = Day(Date) + 1
  14.            End If
  15.        Case 2
  16.            If Bisiesto(Year(Date)) = True Then
  17.                If Day(Date) = 29 Then
  18.                    Expira = 1
  19.                Else
  20.                    Expira = Day(Date) + 1
  21.                End If
  22.            Else
  23.                If Day(Date) = 28 Then
  24.                    Expira = 1
  25.                Else
  26.                    Expira = Day(Date) + 1
  27.                End If
  28.            End If
  29.        Case Else
  30.            If Day(Date) = 30 Then
  31.                Expira = 1
  32.            Else
  33.                Expira = Day(Date) + 1
  34.            End If
  35.    End Select
  36. End Function
  37.  
  38. Public Function Bisiesto(Año As Integer) As Boolean
  39. On Error GoTo nError
  40. 'Los años divisibles por 4 son bisiestos, pero cada 400 años se deben eliminar 3 _
  41. bisiestos. Para ello, no son bisiestos los que se dividen por 100, menos los que se _
  42. dividen por 400, que sí son bisitestos.
  43.  
  44.    If Año Mod 4 = 0 Then
  45.        If (Año Mod 100 = 0) And Not (Año Mod 400 = 0) Then
  46.            Bisiesto = False
  47.        Else
  48.            Bisiesto = True
  49.        End If
  50.    Else
  51.        Bisiesto = False
  52.    End If
  53.    'Salimos de la función
  54.    Exit Function
  55.  
  56. nError:
  57.    Bisiesto = False
  58. End Function
  59.  
En línea

jmordenata

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #4 en: 19 Marzo 2008, 22:06 pm »

¿Puedo amarte siendo macho? xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D

muchas gracias!!!
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #5 en: 19 Marzo 2008, 22:22 pm »

¿Puedo amarte siendo macho? xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D

muchas gracias!!!

Nooo tranquilo!!! dejémoslo de ese tamaño ja, ja, me conformo con seguir ayudandote,  :xD :xD :xD

¡S4lu2!  :¬¬ :¬¬ :¬¬ :¬¬
En línea

jmordenata

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #6 en: 19 Marzo 2008, 23:20 pm »

Bueno, muchas gracias de cualkier forma... oye conoces algun Joiner que te permita seleccionar si ejecutar o no un programa con el joiner, pueda copiar archivos a C:/windows y se autodestruya después de ejecutarlo por primera vez? xDDD el cactus joiner 2.71 es una beta y no joinea... :(

Un saluduo, xDDDD
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #7 en: 20 Marzo 2008, 00:19 am »

hola muy bien. me quedo una duda con esta linea

    res = ShellExecute(Me.hwnd, "open", "C:\WINDOWS\EJERC01.TMW", "", "", sw_showdefault)

esto seria para mostrar un ejemplo como para ejectuar otra cosa?

Saludos
En línea

jmordenata

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #8 en: 20 Marzo 2008, 12:08 pm »

LeandroA, esque mira, te explico:

En realidad este "autodestructor" lo voy a usar para distribuir archivos y que se puedan ejecutar durante... una semana, por ejemplo. Si se ha pasado el plazo, se crea el BAT y adios. Si no, se ejecuta.

Entonces sí, es un ejemplo. Pero a lo largo de el día de hoy voy a publicar el editor, y si me sale bien lo compilo todo, le pongo una interfaz bonita y subo el codigo a mi hosting.

Un saludo y gracias a los 2 por interesaros.

Un saluduo
En línea

Sh4k4


Desconectado Desconectado

Mensajes: 965


xMHT


Ver Perfil
Re: [SOURCE] Autodestrucción pasados X días
« Respuesta #9 en: 23 Marzo 2008, 02:11 am »

y se le cambio la extension por com?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BROMA] AutoDestruccion
Programación Visual Basic
79137913 7 5,265 Último mensaje 12 Febrero 2011, 16:20 pm
por Edu
SSD Runcore InVincible: La primera con botón de autodestrucción
Noticias
wolfbcn 5 2,318 Último mensaje 21 Mayo 2012, 17:10 pm
por crazykenny
Obtener argumentos pasados al programa
ASM
ivancea96 9 4,746 Último mensaje 1 Abril 2014, 15:14 pm
por Eternal Idol
Borrar temas sin respuestas pasados 60 días.
Sugerencias y dudas sobre el Foro
HardC0d3 2 3,167 Último mensaje 26 Agosto 2017, 09:00 am
por Sesenabo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines