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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 [69] 70 71 72 73 74 75 76 77 78 79 80
681  Programación / Programación Visual Basic / Re: Salvar JPG con mucho menos peso sin perder calidad en: 19 Mayo 2015, 19:19 pm
Buen trabajo  ;-). Felicidades por le programa y la idea.

En cuanto a lo de cambiar el nombre yo siempre he usado la función API  SetWindowText.

Código
  1. Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

Tan sólo necesitas obtener el Handle de la ventana, en este caso del visor de imágenes de Windows. El Handle, como ya sabes puedes obtenerlo con FindWindow y necesitas el nombre de clase de la ventana que es "Photo_Lightweight_Viewer" y "ShlmgVw:CPreviewWnd" en XP, o bien el mismo título de la ventana.

Luego el código podría ser:

Código
  1. Dim hwndViewer As Long
  2. Do While hwndViewer = 0
  3. hwndViewer = FindWindow("Photo_Lightweight_Viewer", vbNullString)
  4. DoEvents
  5. Loop
  6. Call SetWindowText(hwndViewer, "Imagen 1 - Convertido")

*Recuerdo que si se sustituye "vbNullString" por el título de la ventana sólo se obtendrá el handle de una ventana que contenga dicho título.

Saludos
682  Programación / Programación Visual Basic / Re: Salvar JPG con mucho menos peso sin perder calidad en: 15 Mayo 2015, 12:02 pm
Quizás te interese este código. No es mío, es de un tal John Korejwa.  Puedes crear o convertir archivos JPG con diferentes niveles de compresión sin perder calidad. Es muy bueno, lo malo es que el como lo hace es muy complejo y resulta dificil de descifrar para luego modifiarlo y usarlo a tu manera. Utiliza módulos de clase y funciones GDI.


http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=50065&lngWId=1

Enlace de descarga:
http://www.planet-source-code.com/vb/scripts/ShowZip.asp?lngWId=1&lngCodeId=50065&strZipAccessCode=tp%2FJ500653091



683  Foros Generales / Dudas Generales / Re: ¿Las Nubes de Internet son para siempre? en: 14 Mayo 2015, 19:16 pm
Vaya  >:(

Pues entonces es mejor tener más de una copia de lo que sea, porque si cae y por la razón que sea ya no puedo acceder a mis archivos, mal asunto.
684  Programación / Programación Visual Basic / Re: Salvar JPG con mucho menos peso sin perder calidad en: 13 Mayo 2015, 20:06 pm
Hola #Fran1946#

Me alegro que te haya funcionado correctamente. El cambio puede venir bien para otros usuarios que usen W7 y buen detalle lo de incluir el nombre de clase, que lógicamente cambia. Si quieres, además, si quieres usar otra versión que no se encuentre en el directorio del sistema, puedes poner el directorio:

Call StartMSPaint("C:\Directorio\mspaint.exe", strFile, MS_SAVE)


En cuanto al código  57603-'Guardar' y el 57604- 'Guardar como', hay  varias formas de obtenerlo. Una es extrayendo el menú mediante código o bien usando Spy++, pero es difícil de explicar.

Mediante código, puedes usar este, de prueba. Ejecuta SDPaint y con el paint abierto ejecuta este código.


Código
  1. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  2. (ByVal lpClassName As String, _
  3. ByVal lpWindowName As String) As Long
  4. Private Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" _
  5. (ByVal hMenu As Long, _
  6. ByVal wIDItem As Long, _
  7. ByVal lpString As String, _
  8. ByVal nMaxCount As Long, _
  9. ByVal wFlag As Long) As Long
  10.  
  11. Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
  12. Private Declare Function GetMenuItemID Lib "user32" _
  13. (ByVal hMenu As Long, ByVal nPos As Long) As Long
  14. Private Declare Function GetSubMenu Lib "user32" _
  15. (ByVal hMenu As Long, ByVal nPos As Long) As Long
  16. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  17. (ByVal hwnd As Long, _
  18. ByVal wMsg As Long, _
  19. ByVal wParam As Long, _
  20. lParam As Any) As Long
  21. Const MF_BYPOSITION = &H400&
  22. Const WM_COMMAND = &H111
  23. Const MF_POPUP = &H10&
  24.  
  25.  
  26.  
  27. Private Sub Command1_Click()
  28.    Dim hwnd As Long
  29.    Dim hMainMenu As Long
  30.    Dim hMenu As Long
  31.    Dim MenuID As Long
  32.    Dim szbuf As String * 128
  33.    Dim szBufM As String * 128
  34.    Dim I, Z
  35.    Z = 0 'Posición del menú
  36.    I = 2 'Posición del submenú
  37.    hwnd = FindWindow("SDPaintApp", vbNullString)
  38.    If hwnd = 0 Then Exit Sub
  39.    hMainMenu = GetMenu(hwnd)
  40.    hMenu = GetSubMenu(hMainMenu, Z)
  41.    MenuID = GetMenuItemID(hMenu, I)
  42.    Call GetMenuString(hMenu, MenuID, szbuf, 128, MF_BYPOSITION & MF_POPUP)
  43.  
  44.    MsgBox MenuID & "     " & szbuf
  45.  
  46.    'X& = SendMessage(hwnd, WM_COMMAND, MenuID, 0&)
  47.  
  48. End Sub


el valor Z representa el lugar del menú e I el lugar del submenú.

Puedes crear un bucle For/Next y repasar números del -1 al  1000 para I y de esa manera obtener todos los comandos.
685  Foros Generales / Dudas Generales / ¿Las Nubes de Internet son para siempre? en: 13 Mayo 2015, 16:25 pm
Tengo varias cuentas para almacenar en una nube (Cloud computing) pero me pregunto si serán permanentes y pasará como con Megaupload o algo parecido, y un día me encuentre que el servidor de dicha nube ha cerrado.
686  Programación / Programación Visual Basic / Re: Salvar JPG con mucho menos peso sin perder calidad en: 12 Mayo 2015, 17:08 pm
Hola  :D

En un Form crea un Botón (CommandButton)


Mete esto en un Módulo:

Código
  1. Option Explicit
  2. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  3. (ByVal lpClassName As String, _
  4. ByVal lpWindowName As String) As Long
  5.  
  6. 'Funcición API para enviar un mensaje a MSPaint
  7. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  8. (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  9. Const SC_CLOSE = &HF060&
  10. Const WM_COMMAND = &H111
  11. Const WM_SYSCOMMAND = &H112
  12.  
  13. 'Función API para obtener el nombre de un archivo a partir de un directorio
  14. Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" _
  15. (ByVal lpszFile As String, _
  16. ByVal lpszTitle As String, _
  17. ByVal cbBuf As Integer) As Integer
  18.  
  19. 'Función para deternimnar si un proceso es una ventana
  20. Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
  21. 'Función para obtener el nombre corto de un directorio
  22. Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" _
  23. (ByVal lpszLongPath As String, _
  24. ByVal lpszShortPath As String, _
  25. ByVal cchBuffer As Long) As Long
  26.  
  27.  
  28. Public Const MS_SAVE = 0
  29. Public Const MS_SAVE_AS = 1
  30. Dim hwMsPaint As Long 'para el Handle de MsPaint
  31.  
  32. Public Function GetDirCorto(strPath) As String
  33. Dim ShortName As String * 255
  34. Call GetShortPathName(strPath, ShortName, 255)
  35. GetDirCorto = Left$(ShortName, InStr(1, ShortName, Chr$(0)) - 1)
  36. End Function
  37.  
  38.  
  39. 'Inicia MsPaint en modo oculto
  40. Public Function StartMSPaint(ByVal PathMsPaint As String, ByVal strPathFile As String, ByVal Modo As Integer)
  41.    On Error GoTo Error_sub
  42.    Dim Count As Long
  43.    Dim objStartup      As Object
  44.    Dim objWMIService   As Object
  45.    Dim objConfig       As Object
  46.    Dim objProcess      As Object
  47.    Dim Error           As Integer
  48.    Dim strComputer     As String
  49.    Dim intProcessID    As Long
  50.    Dim Opcion          As Integer
  51.    Dim sFile           As String
  52.    Dim sDir            As String
  53.  
  54.    strComputer = "."
  55.    hwMsPaint = 0
  56.    Set objWMIService = GetObject("winmgmts:" _
  57.    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  58.    Set objStartup = objWMIService.Get("Win32_ProcessStartup")
  59.    Set objConfig = objStartup.SpawnInstance_
  60.    objConfig.ShowWindow = 12 'Iniciar en modo oculto (usar 1 para modo visible)
  61.    Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
  62.  
  63.    sDir = GetDirCorto(strPathFile) 'Obtiene el directorio corto Ej.: "[Drive]:\Name~1.jpg"
  64.        'Si el archivo no existe...
  65.        If sDir = "" Then
  66.            MsgBox "No se encuentra " & strPathFile, vbCritical
  67.            Exit Function
  68.        End If
  69.  
  70.    Error = objProcess.Create(PathMsPaint & " " & sDir, Null, objConfig, intProcessID)
  71.        If Error Then
  72.            MsgBox "No se encuentra " & PathMsPaint & "." & vbCrLf & vbCrLf & _
  73.            "Compruebe que la aplicación existe o está correctamente escrito.", _
  74. vbCritical, "Error"
  75.            Exit Function
  76.        End If
  77.  
  78.    'On Local Error Resume Next
  79.    'Elimina las variables de objeto
  80.    Set objStartup = Nothing
  81.    Set objWMIService = Nothing
  82.    Set objConfig = Nothing
  83.    Set objProcess = Nothing
  84.  
  85.    'Obtiene el título del archivo a guardar
  86.    sFile = gFileTitle(strPathFile)
  87.  
  88.    'Obtiene el handle de MSPaint que ha abierto el archivo
  89.    Do While hwMsPaint = 0
  90.        Count = Count + 1
  91.        hwMsPaint = FindWindow("MSPaintApp", sFile & " - Paint")
  92.        DoEvents
  93.        If Count > 50000 Then Exit Function
  94.    Loop
  95.  
  96.    'No pasa hasta el siguiente comando hasta que MsPaint se haya abierto
  97.    Dim n&
  98.    Do While n& = 1
  99.        n& = IsWindow(hwMsPaint)
  100.        DoEvents
  101.    Loop
  102.  
  103.    'Envia el mensaje Guardar o Guardar como a MsPaint
  104.    Call MsPaintSave(Modo)
  105.  
  106.    Do While n& = 0
  107.    n& = IsWindow(hwMsPaint)
  108.    CloseMsPaint
  109.    DoEvents
  110.    Loop
  111.  
  112.    Exit Function
  113.  
  114. Error_sub:
  115.    MsgBox Err.Description, vbCritical
  116.  
  117.    On Local Error Resume Next
  118.    'Elimina las variables de objeto
  119.  
  120.    Set objStartup = Nothing
  121.    Set objWMIService = Nothing
  122.    Set objConfig = Nothing
  123.    Set objProcess = Nothing
  124. End Function
  125.  
  126. Private Sub MsPaintSave(ByVal Modo As Integer)
  127. Select Case Modo
  128. Dim X&
  129. Case 0
  130. X& = SendMessage(hwMsPaint, WM_COMMAND, 57603, &H0) 'Guardar
  131. Case 1
  132. X& = SendMessage(hwMsPaint, WM_COMMAND, 57604, &H0) 'Guardar como...
  133. End Select
  134.  
  135. End Sub
  136.  
  137. 'Cierra MsPaint
  138. Public Function CloseMsPaint()
  139. 'Envía el mensaje de Cerrar a MSPaint
  140. SendMessage hwMsPaint, WM_SYSCOMMAND, SC_CLOSE, &H0
  141. End Function
  142.  
  143. 'Obtiene el nombre del archivo Ej.: E:\Paisaje.jpg" ->obtiene "Paisaje.jpg"
  144. Private Function gFileTitle(ByVal strPathFile As String) As String
  145. Dim strFileTitle As String
  146. strFileTitle = Space(100)
  147. GetFileTitle strPathFile, strFileTitle, 100
  148. gFileTitle = Left$(strFileTitle, InStr(1, strFileTitle, Chr$(0)) - 1)
  149. End Function
  150.  
  151.  



Mete esto en un Form:

Código
  1.  
  2. Private Sub Command1_Click()
  3. Dim strFile As String
  4. strFile = App.Path & "\Dock.jpg"
  5.  
  6. 'MS_SAVE = Guardar (No aparecerá cuadro de diálogo)
  7. 'MS_SAVE_AS = Guardar como ...
  8. Call StartMSPaint("mspaint.exe", strFile, MS_SAVE): CloseMsPaint
  9.  
  10. End Sub
  11.  
  12. Private Sub Form_Load()
  13. Show
  14. 'Centrar formulario
  15. Me.Move (Screen.Width / 2) - (Me.Width / 2), (Screen.Height / 2) - (Me.Height / 2)
  16. Command1.Caption = "Guardar con MsPaint"
  17. End Sub
  18.  
  19.  


Lo que hace...
1. Abre MSPaint en modo oculto (se ejecuta pero no se ve) con la imagen que quieras convertir. Mejor dicho, volver a guardar pero con MSPaint.

2.  Envía un mensaje a MSPaint mediante SendMessage. Que viene a ser el equivalente a pulsar "Guardar" o "Guardar como" del menú. (A elección)

3. Cierra MSPaint.

Download code:
https://mega.co.nz/#!WEllUYYB!JpyYKyzME3pBQc_Q9oZkoa4fnRGuapVAA19fM0Z98oQ
687  Programación / .NET (C#, VB.NET, ASP) / Re: Mostar el título de un formulario alineado a la izquierda en vb net 2013 en: 8 Mayo 2015, 18:27 pm
Yo he tenido el mismo problema al parecer es un bug y se da con win 8 porque yo he instalado en 7 y no tuve ningun problema.

Por el momento solo hay un camino para resolverlo segun he leido y es modificar y pintar los bordes del formato. la verdad  no se si vale la pena el esfuerzo creo que puedo vivir con el titulo al centro jejeje
bueno te dejo el link donde lei esto y esta el codigo si tu quieres hacerlo saludos

https://social.msdn.microsoft.com/Forums/en-US/f612c65a-d946-47a2-ad21-71898c73f93f/alignment-of-windows-form-text-property?forum=vbgeneral

Es de agradecer que hayas encontrado el problema y lo hayas comentado.  ;-)
688  Programación / Programación Visual Basic / Re: Visualizador del primer sector del disco: La tabla MBR en: 7 Mayo 2015, 17:08 pm
Hola Josino

Lee en este Foro:
http://www.vbforums.com/showthread.php?599664-reading-writing-sectors-on-a-USB-memory-stick-including-MBR


Código de ejemplo:
http://www.vbforums.com/attachment.php?attachmentid=75666&d=1263714614

Introduce un PenDrive (vacío) y sustituye la letra "H:" por la letra del PenDrive en esta línea:

Código
  1. If SplitMapping(0) = "H:" Then

Al hacer clic en el botón se leerán los dos primeros bytes del MBR. La línea "DirectWriteDriveNT SplitMapping (2), 0, 511, hex2ascii ("AA")" está desactivada porque es para escribir. "Ojo con eso".

El código debe iniciarse como "Administrador", así que si usas un cuenta de usuario limitada el programa no funcionará.

En cuanto a tu queja, entiendo tu malestar. A mi me pasa lo mismo. A veces pregunto y me contestan diciendo "haz un Read Truck" o algo así y es como si me dijeran "haz un chung ching chang". Vamos que me quedo igual. Pero a veces a pesar que la respuesta sea superbásica y vaga me sirve de referéncia para buscar en google, es decir, te indica un poco el camino.

Me recuerda un poco cuando estudiaba y usaba el Yahoo Respuestas para algo muy concreto y me contestaban "mira en le wikipedia" y se quedaban tan anchos  :xD

Yo siempre que puedo pongo ejemplos, porque me encantan lo ejemplos y aporto código e incluso programas completos. Siempre se ha de suponer que el que pregunta no pregunta por gusto, si no porque no sabe.

Te sugiero que cuando busques algo y no encuentres busques en Google en inglés. Por ejemplo pones "Read MBR VB6", incluso en chino o coreano. Encontrás mucha más información y código. Hazlo desde Chrome y cuando entres en la página en cuestión pulsa con el botón derecho del ratón y selecciona "Traducir esta página" y se pondrá en castellano (español). Lo malo es que si hay código de ejemplo también se traducirá "If i= 6 then" -> "Si i=6  entonces" ten en cuenta eso.


689  Programación / Programación Visual Basic / Detectar si tengo acceso a la red de forma limitada en: 30 Abril 2015, 18:20 pm
Hola,
Necesito saber el estado de la conexión, si es limitada o no. Pero de forma que no se cuelgue el programa. Por ejemplo, supongamos que tengo conexión a la red  y trato de abrir una web mediante InternetOpen desde el Timer y si no se puede da valor falso, en cuyo caso tengo conexión a la red LIMITADA. Pero ocurre que como uso el timer constantemente trata de abrir la web y como no puede se el programa se cuelga.

gracias
690  Programación / .NET (C#, VB.NET, ASP) / Re: Mostar el título de un formulario alineado a la izquierda en vb net 2013 en: 22 Abril 2015, 16:07 pm
Nada no he sacado nada en claro del artículo.

De todas formas no lo entiendo, en todos los videotutoriales que veo, cuando se crea el formulario, el título está a la izquierda

¿Por qué a mi se me queda centrado ?

no lo entiendo

Hola #jefe1024

Ahora no tengo instalado VB.net, lo desinstalé temporalmente por diversas razones que no hace falta comentar.  Pero yo supongo que deberías mirar en las opciones de VB (que tiene muchas) haber si lo tienes configurado para que se muestre centrado. Ya que si VB lo centra por defecto por fuerza debe ser por eso.

Quizás sea una característica nueva en VB, ya que en VB.NET 2010 que es el que yo tengo, no recuerdo haber visto esa opción.


Páginas: 1 ... 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 [69] 70 71 72 73 74 75 76 77 78 79 80
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines