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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 ... 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 [700] 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 ... 1236
6991  Programación / .NET (C#, VB.NET, ASP) / Re: Problema: .dll sin .h ni .lib en c++/cli en: 16 Julio 2014, 13:44 pm
Hola

Mi experiencia con C++ es practicamente nula, pero creo que te puedo ayudar un poco, dentro de lo que cabe.

como poder usarla desde un proyecto de c++/cli en visual studio.

Parece que sin el ".lib" es complicado, pero posible:
· http://stackoverflow.com/questions/495795/how-do-i-use-a-third-party-dll-in-visual-studio-c

La otra pregunta es si dentro del .dll puede haber algo que me ayude a saber que métodos hay y como usarlos

Aquí tienes una solución en C# P/Invokeando la librería DbgHelp.dll para enumerar los símbolos, está genial :)

Código
  1. [DllImport("dbghelp.dll", SetLastError = true, CharSet = CharSet.Unicode)]
  2. [return: MarshalAs(UnmanagedType.Bool)]
  3. public static extern bool SymInitialize(IntPtr hProcess, string UserSearchPath, [MarshalAs(UnmanagedType.Bool)]bool fInvadeProcess);
  4.  
  5. [DllImport("dbghelp.dll", SetLastError = true, CharSet = CharSet.Unicode)]
  6. [return: MarshalAs(UnmanagedType.Bool)]
  7. public static extern bool SymCleanup(IntPtr hProcess);
  8.  
  9. [DllImport("dbghelp.dll", SetLastError = true, CharSet = CharSet.Unicode)]
  10. public static extern ulong SymLoadModuleEx(IntPtr hProcess, IntPtr hFile,
  11.     string ImageName, string ModuleName, long BaseOfDll, int DllSize, IntPtr Data, int Flags);
  12.  
  13. [DllImport("dbghelp.dll", SetLastError = true, CharSet = CharSet.Unicode)]
  14. [return: MarshalAs(UnmanagedType.Bool)]
  15. public static extern bool SymEnumerateSymbols64(IntPtr hProcess,
  16.   ulong BaseOfDll, SymEnumerateSymbolsProc64 EnumSymbolsCallback, IntPtr UserContext);
  17.  
  18. public delegate bool SymEnumerateSymbolsProc64(string SymbolName,
  19.      ulong SymbolAddress, uint SymbolSize, IntPtr UserContext);
  20.  
  21. public static bool EnumSyms(string name, ulong address, uint size, IntPtr context)
  22. {
  23.  Console.Out.WriteLine(name);
  24.  return true;
  25. }    
  26.  
  27. static void Main(string[] args)
  28. {
  29.  IntPtr hCurrentProcess = Process.GetCurrentProcess().Handle;
  30.  
  31.  ulong baseOfDll;
  32.  bool status;
  33.  
  34.  // Initialize sym.
  35.  // Please read the remarks on MSDN for the hProcess
  36.  // parameter.
  37.  status = SymInitialize(hCurrentProcess, null, false);
  38.  
  39.  if (status == false)
  40.  {
  41.    Console.Out.WriteLine("Failed to initialize sym.");
  42.    return;
  43.  }
  44.  
  45.  // Load dll.
  46.  baseOfDll = SymLoadModuleEx(hCurrentProcess,
  47.                              IntPtr.Zero,
  48.                              "c:\\windows\\system32\\user32.dll",
  49.                              null,
  50.                              0,
  51.                              0,
  52.                              IntPtr.Zero,
  53.                              0);
  54.  
  55.  if (baseOfDll == 0)
  56.  {
  57.    Console.Out.WriteLine("Failed to load module.");
  58.    SymCleanup(hCurrentProcess);
  59.    return;
  60.  }
  61.  
  62.  // Enumerate symbols. For every symbol the
  63.  // callback method EnumSyms is called.
  64.  if (SymEnumerateSymbols64(hCurrentProcess,
  65.      BaseOfDll, EnumSyms, IntPtr.Zero) == false)
  66.  {
  67.    Console.Out.WriteLine("Failed to enum symbols.");
  68.  }
  69.  
  70.  // Cleanup.
  71.  SymCleanup(hCurrentProcess);
  72. }

Y aquí el resto de funciones que puedes usar en caso d enecesidad:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms679291%28v=vs.85%29.aspx

Y, por si fuera poco, con la GUI de DLL Export Viewer de Nirsoft puedes obtener tanto los nombres como las direcciones y otra info.



Saludos
6992  Media / Multimedia / Re: cual es el mejor reproductor multiformatos en: 16 Julio 2014, 13:24 pm
Los mejores reproductores de vídeo suelen llevar sus propios pack de codecs integrado, y eso es lo que permite que sea "multiformatos", como el MediaPlayer-Classic H.C., SMPlayer, o VLC.

Si un reproductor no es capaz de reproducir por si solo un formato especifico, es preferible que instales ese codec a instalar todo un pack innecesario de codecs.

PD: Ahí te acabo de dar mi valoración sobre los mejores reproductores, en orden de preferencia.

Saludos
6993  Programación / Scripting / Re: [Python] script que copia extensiones del pc al usb en: 15 Julio 2014, 21:57 pm
gracias a elektro que me ayudo en batch y me sirvio para hacerlo python :D

Es un milagro que a alguien le sirva lo aprendido en Batch :P

Saludos!
6994  Sistemas Operativos / Windows / Re: Abrir ejecutable al abrir una carpeta en: 15 Julio 2014, 20:54 pm
La idea del link me parece de lo más factible, ya que no existe ningún operador del tipo "Abrir Carpeta", es una representación visual del explorer, así que, al menos hasta donde yo se (que ya estuve comiendome la cabeza con la misma pregunta hace unos años) no se puede detectar el click o doble-click de una carpeta, y de ser posible prevenir algo parecido deberías desarrollar un driver (casi náh) para decirle Hola! a los entresijos de la Shell de Windows.

Se puede lograr una 'post'-detección precisa, desarrollando una aplicación más básica (que un driver) que monitorice la ubicación actual del explorer, y una vez hayas accedido a una carpeta específica se podría "salir" de ella y/o ejecutar "X" archivo en su lugar, pero esto más bien sería una detección, no una prevención ...que eso es lo que pretendes.

Lo mejor que se me ocurre para tu caso, y con poca dificultad, sería tomar la idea de Saberuneko, pero en lugar de un acceso directo .lnk, deberías crear y asociar una nueva extensión de archivo, y añadirle un par de opciones para el menú contextual de esa asociación de archivo, las cuales dirían algo como "Abrir en el explorer" y otra  opción que diría "Ejecutar" (esta opción iría encima de la opción del explorer para que fuese la opción predeterminada al hacer doble click sobre el archivo), entonces al hacer doble click sobre el archivo, se ejecutaría el server, y al mostrar el menú contextual de dicha extensión, saldría la opción para abrir en el explorer, esto te proporcionaria la solución final al problema.

El Script de registro:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. # La extensión del archivo.
  4. [HKEY_CLASSES_ROOT\.XXX]
  5. @="ServerFile"; La clave de asociación.
  6.  
  7. [HKEY_CLASSES_ROOT\ServerFile]; La clave asociada.
  8. [HKEY_CLASSES_ROOT\ServerFile\DefaultIcon]; El icono por defecto de las extensiones que estén asociadas a esta clave.
  9. @="shell32.dll,4"; Índice 4 = Icono 'Carpeta por defecto'.
  10.  
  11. # La opción Open:
  12. [HKEY_CLASSES_ROOT\ServerFile\Shell\Open]
  13. @=".:: Ejecutar ::."     ; Nombre a mostrar en el menú contextual.
  14. "Position"="Top"         ; Posición en el menú contextual.
  15. "Icon"="shell32.dll,24"  ; Índice 24 = Icono 'Ejecutar'
  16. [HKEY_CLASSES_ROOT\ServerFile\Shell\Open\Command]; El comando asociado a la opción.
  17. @="\"X:\\Server\\Archivo.exe\""                  ; La instrucción del comando.
  18.  
  19. # La opción OpenInExplorer:
  20. [HKEY_CLASSES_ROOT\ServerFile\Shell\OpenInExplorer]
  21. @=".:: Abrir en el explorador ::."  ; Nombre a mostrar en el menú contextual.
  22. "Position"="Middle"                 ; Posición en el menú contextual.
  23. "Icon"="shell32.dll,9"              ; Índice 9 = Icono 'Disco de Red'
  24. [HKEY_CLASSES_ROOT\ServerFile\Shell\OpenInExplorer\Command]; El comando asociado a la opción.
  25. @="\"Explorer.exe\" \"X:\\Server\""                        ; La instrucción del comando

Obviamente debes asignarle las rutas correctas al script.

Lo guardas como "Archivo.reg" y lo ejecutas, luego creas un archivo dummy llamado "Archivo.xxx" (xxx = la extensión que escogí, la cual puedes modificar a tu gusto), lo colocas donde quieras, y listo.

Saludos.
6995  Informática / Hardware / Re: Problemón con mi PC, ¿será el disipador o la ram? :( en: 14 Julio 2014, 20:43 pm
Citar
Asus M5A97 LE R2.0 - 90-MIBJP0-G0EAY0MZ AMD Socket AM3

Edito:
y en las especificaciones de la placa base dice esto (que no tengo muy claro si es bueno o malo xD):
Citar
4 x DIMM, Max. 32GB, DDR3 2133(O.C.)/1866/1600/1333/1066 MHz ECC, Non-ECC,

Mas informacion en: http://www.pccomponentes.com/asus_m5a97_le_r2_0.html


luego probaré esa configuración, gracias, pero es que de todas formas sale una pantalla al bootear y hace 1 pitido q no debería hacer :-/

¿las especificaciones entre las 2 tarjetas son compatibles no?, lo del CL9 y CL10 me confunde un poco.

saludos
6996  Informática / Hardware / Problemón con mi PC, ¿será el disipador o la ram? :( en: 14 Julio 2014, 19:54 pm
Hola

A ver, no se como iniciar este post... porque realmente no sé cual podrá ser el problema, así que simplemente contaré la anécdota tal cual sin dejarme ningún detalle.

Hace unos pocos días realicé un pedido a una tienda, adquirí un disipador + cooler para mi AMD Socket AM3+ (porque el ruido del cooler de fábrica era INSOPORTABLE), y una memoria RAM (simplemente para llenar una ranura más), estos son los productos que compré:

· Cooler Master Hyper 212 EVO
· Kingston HyperX Genesis DDR3 1866 PC3-14900 4GB (1x4GB)CL10

Y esta es la RAM que yo tenia antes de hacer la compra (tengo 2 tarjetas de estas):

· Kingston HyperX Beast DDR3 1866 PC3-14900 8GB 2X4GB CL9

(Porfavor, mirar las especificaciones de las 2 tarjetas por si encontrais algún conflicto)

Vale, hoy me puse a montar el disipa pero es GIGANTE así que la tarjeta RAM que habia en la primera ranura no me cabia y entonces de las dos tarjetas RAM que yo ya tenia tuve que moverlas una ranura a la derecha, y coloqué la nueva RAM a la derecha de estas, osea, así:



Rojo: Disipador
Verde: Ranuras RAM, las 3 de la derecha están ocupadas, la primera está vacía ...u ocupada por el disipador, según se mire xD.

Terminé de colocar todo, encendí el PC y me empezó a pitar!

El pitido era 1 solo, es decir 1 pitido corto, y no se veía el panel de la Bios ni nada, simplemente hacia 1 pitido y nada más ...hasta que lo volviese a encender.

Pensé que pude haberla cagado al instalar el disipador, o la ram, o que me dejé algún cable suelto, yo que sé!, pero me puse a desconectar componentes hasta intentar hallar el problema, y al parecer, repito, AL PARECER se trata de la RAM, pero no la nueva, tocate los... sino la antigua!



La cosa está así según las pruebas que he realizado, lo explicaré con imágenes:

Azul = Kingston HyperX
Verde = Kingston HyperBeast
Blanco = Ranura vacía

o también o también o también

Al encender el PC, después de unos pocos segundos se pone a hacer 1 pitido largo y 3 o 4 cortos, y lo repite 1 vez, luego no hace nada más, no me deja proseguir el Boot y tengo que apagarlo, eso si te deja apagarlo, porque a veces por más que mantenga pulsado el botón de apagado no se apaga xD.


o también

Al encender el PC me hace 1 pitido corto y la BIOS me lanza una pantalla extraña durante 1 segundo (no me da tiempo a leer lo que pone, pero nunca me habia salido dicha pantalla así que me parece que puede haber algún error), pero el Boot prosigue y puedo iniciar sesión (estoy escribiendo ahora mismo gracias a esa configuración de tarjetas).


¿Alguien tiene idea de lo que le ha podido pasar a mi PC?

¿En que página se podía mirar lo que significada "X" cantidad de Beeps al bootear?, ya que si no recuerdo mal, cada Beep corto y largo estaba relacionado con un problema específico.

¿Quizás hay algún conflicto entre la nueva y la vieja RAM?, ¿pero entonces porque si dejo solo la vieja RAM sigue sin funcionar?.

¿Es necesario que exista una tarjeta acoplada en la PRIMERA ranura para que bootee el PC?, ya que eso contestaría a lo de que el PC no me vaya con la antigua RAM (ya que no cabe en la primera ranura así que no la puedo poner ahí)


PD: Eso si, estoy contentisimo con el nuevo disipador, apenas hace ruido.

EDITO:
Respecto a los beepcodes, me he estado informando y parece que para cada bios/uefi es diferente, mi placa base es una:
Asus M5A97 LE R2.0 - 90-MIBJP0-G0EAY0MZ AMD Socket AM3

EDITO 2:

Temperaturas actuales:

CPU: 26º
Placa base: 41º
Gráfica: 41º
HDD's: entre 35º y 45º
6997  Programación / .NET (C#, VB.NET, ASP) / Re: Marshal - Interactuando entre managed y unmanaged memory. (C++ CLI) en: 14 Julio 2014, 16:31 pm
No se deben revivir posts antiguos para formular preguntas.

Tema cerrado.
6998  Programación / Scripting / Re: [bach]No me mueve archivos pesados por la red en: 14 Julio 2014, 15:44 pm
Buenas.

1.
No está permitido el doble post ni mucho menos el triple post, puedes utilizar el botón "Modificar" en el post principal para añadir toda la nueva información que creas conveniente.

2.
Citar
move /Y "%Path_origen1%\*.trn" %unidad_red:~0,3%%Path_destino1% move /Y "%Path_origen1%\*.bak" %unidad_red:~0,3%%Path_destino1%move /Y "%Path_origen1%\*.log" %unidad_red:~0,3%%Path_destino1%

Intenta proporcioanr el código con un formato legible para todos, además, esa concatenación de comandos que has echo no está nada bien y puede resultar conflictiva, separa las instrucciones en lineas y cierra los argumentos para no dejar variables abiertas como haces:
Código
  1. Comando 1, Linea 1: Move /Y "%origen%" "%destino%"
  2. Comando 2, Linea 2: Move /Y "%origen%" "%destino%"

De todas formas, prueba con la lógica del comando RoboCopy (o en su defecto XCopy).

Saludos
6999  Programación / Programación General / Re: Dar el foco a otra aplicacion (vba) en: 13 Julio 2014, 15:47 pm
No se si te podré ayudar mucho, pero respecto a darle foco a una aplicación externa, puedes utilizar la función SetForegroundWindow, pasándole como parámetro el handle de la ventana del proceso (que no el PID).

Documentación de la API:
· SetForegroundWindow function

Declaraciones al estilo VB6:
Código
  1. Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As IntPtr) As Long

O bien puedes utilizar el método AppActivate de VB, pasándole como parámetro el título de la ventana del proceso.

¿Como obtener el título de la ventana sabiendo unicamente el nombre del proceso?
Pues en Vb.NET es sencillo, la verdad es que el Framework lo pone bien a disposición en tan solo un par de instrucciones, y yo no manejo VBA, pero parece que tienes mucha labor por delante con varias funciones de la WinAPI, imagino que podrías recurrir a alguna otra función o que quizás las classes de WMI dispondrán de alguna propiedad para obtener ese dato sí que podrías realizar una query por WMI, informate sobre ello.

De todas formas mírate la función GetWindowText, te servirá para obtener el título d ela ventana una vez ya haya conseguido obtener el Handle de la ventana dado el nombre del proceso.

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

EDITO:
Aquí tienes una solución para obtener el PID según el nombre de un proceso, le podrías enviar el resultado a la API GetWindowText obteniendo el handle de la ventana según el PID, o bien adaptar el código apra que devuelva directamente el texto y no el PID.

http://www.vbforums.com/showthread.php?537531-RESOLVED-How-to-find-Process-Handle-by-Process-Name

Saludos.
7000  Programación / .NET (C#, VB.NET, ASP) / Re: Interrumpir un thread que está en "Sleep()" c++/cli en: 13 Julio 2014, 14:33 pm
Hola

Aquí tienes la respuesta extendida a tu pregunta.

De todas formas te advierto que si tienes pensado controlar y manipular el estado de un hilo entonces deberias olvidar el uso de la Class Thread, ya que los métodos para pausar/continuar son obsoletos e intrusivos (como nos explican en MSDN), y en su defecto deberías utilizar la Class BackgroundWorker para manejar hilos, te llevaría bastante más escritura de código (de echo yo escribo una Class distinta para meter todo lo relacionado con cada BackgroundWorker) pero sin duda es más eficiente.

Saludos
Páginas: 1 ... 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 [700] 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines