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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 [2] 3
11  Programación / .NET (C#, VB.NET, ASP) / [Aporte] Captura de Pantalla en C# en: 30 Mayo 2014, 13:01 pm
Me costó encontrar la manera de hacer una captura de una ventana en c#, en c++ estaba apuntado en un post con chincheta,pero en c# no encontré nada, por si alguien alguna vez busca el modo, asi es como lo he podido hacer:

MetodosNativos.CS
Código
  1. public static class MetodosNativos
  2.    {
  3. public const int SRCCOPY = 0x00CC0020; // BitBlt dwRop parameter
  4.  
  5.        [DllImport("gdi32.dll")]
  6.        public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest,
  7.            int nWidth, int nHeight, IntPtr hObjectSource,
  8.            int nXSrc, int nYSrc, int dwRop);
  9.  
  10.        [DllImport("gdi32.dll")]
  11.        public static extern IntPtr CreateCompatibleBitmap(IntPtr hDC, int nWidth,int nHeight);
  12.  
  13.        [DllImport("gdi32.dll")]
  14.        public static extern IntPtr CreateCompatibleDC(IntPtr hDC);
  15.  
  16.        [DllImport("gdi32.dll")]
  17.        public static extern bool DeleteDC(IntPtr hDC);
  18.  
  19.        [DllImport("gdi32.dll")]
  20.        public static extern bool DeleteObject(IntPtr hObject);
  21.  
  22.        [DllImport("gdi32.dll")]
  23.        public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
  24.  
  25.  
  26.        /*User32.Dll*/
  27.        [StructLayout(LayoutKind.Sequential)]
  28.        public struct RECT
  29.        {
  30.            public int left;
  31.            public int top;
  32.            public int right;
  33.            public int bottom;
  34.        }
  35.        public enum GetWindow_Cmd : uint
  36.        {
  37.            GW_HWNDFIRST = 0,
  38.            GW_HWNDLAST = 1,
  39.            GW_HWNDNEXT = 2,
  40.            GW_HWNDPREV = 3,
  41.            GW_OWNER = 4,
  42.            GW_CHILD = 5,
  43.            GW_ENABLEDPOPUP = 6
  44.        }
  45.        [DllImport("user32.dll")]
  46.        public static extern IntPtr GetDesktopWindow();
  47.  
  48.        [DllImport("user32.dll")]
  49.        public static extern IntPtr GetWindowDC(IntPtr hWnd);
  50.  
  51.        [DllImport("user32.dll")]
  52.        public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
  53.  
  54.        [DllImport("user32.dll")]
  55.        public static extern IntPtr GetWindowRect(IntPtr hWnd, ref RECT rect);
  56. }
  57.  
Capturadora.cs
Código
  1. <....Codigo de la clase
  2. public static Bitmap CapturarVentana(IntPtr handle)
  3.        {
  4.            try
  5.            {
  6.                RedimensionarVentana(handle);
  7.                // get te hDC of the target window
  8.                IntPtr hdcSrc = MetodosNativos.GetWindowDC(handle);
  9.                // get the size
  10.                MetodosNativos.RECT windowRect = new MetodosNativos.RECT();
  11.                MetodosNativos.GetWindowRect(handle, ref windowRect);
  12.                int width = windowRect.right - windowRect.left;
  13.                int height = windowRect.bottom - windowRect.top;
  14.                // create a device context we can copy to
  15.                IntPtr hdcDest = MetodosNativos.CreateCompatibleDC(hdcSrc);
  16.                // create a bitmap we can copy it to,
  17.                // using GetDeviceCaps to get the width/height
  18.                IntPtr hBitmap = MetodosNativos.CreateCompatibleBitmap(hdcSrc, width, height);
  19.                // select the bitmap object
  20.                IntPtr hOld = MetodosNativos.SelectObject(hdcDest, hBitmap);
  21.                // bitblt over
  22.                MetodosNativos.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0, MetodosNativos.SRCCOPY);
  23.                // restore selection
  24.                MetodosNativos.SelectObject(hdcDest, hOld);
  25.                // clean up
  26.                MetodosNativos.DeleteDC(hdcDest);
  27.                MetodosNativos.ReleaseDC(handle, hdcSrc);
  28.                // get a .NET image object for it
  29.                Bitmap bmp = Bitmap.FromHbitmap(hBitmap);
  30.                MetodosNativos.DeleteObject(hBitmap);
  31.                return bmp;
  32.            }
  33.            catch (Exception err) {MessageBox.show(err.ToString()); return null; }
  34.  
  35.        }
  36. ....Codigo...->
  37.  

El metodo retorna un Bitmap de la ventana que le digas como parametro, aunque tambien se podria hacer sin retorno y hacer bmp.save("ruta\archivo.bmo"); si lo que buscas es crear un archivo con la captura.
12  Programación / Programación General / Re: DUDA! Abrir antihack.dll en: 30 Mayo 2014, 02:02 am
http://www.nirsoft.net/utils/dll_export_viewer.html
13  Programación / .NET (C#, VB.NET, ASP) / Re: c# Null Exception imposible. en: 25 Mayo 2014, 12:57 pm
Ups lo habia escrito mal en el foro, estaba así:
Código:
do
{
     objeto[0].image= OtraClase.GetImage();
}while (objeto[0] == null); // Bucle hasta que objeto contenga algo que no sea null;
EventoMeterObjeto(objeto[0]); /// al intentar lanzar mi evento salta un null Reference exception, imposible que sea null en teoria no?

Ahora analizandolo, objeto seguro que no es null, pues si no, no habria salido del bloque while, entoces solo queda: puede un evento ser o estar null??
14  Programación / .NET (C#, VB.NET, ASP) / Re: Ayuda con delegados y objetos [C#] en: 24 Mayo 2014, 21:10 pm
yo tube un problema parecido, lo solucione mas o menos así:


label1.Invoke(new Action(() =>{ label1.Text = Line; }));

cambia label por tu control, y lo que quieras modificar dentro de los corchetes de Action.
15  Programación / .NET (C#, VB.NET, ASP) / Re: Leer Scanner de Codigo de barras sin tener foco en un txtboxt en: 23 Mayo 2014, 18:46 pm
Necesitas otras librerias que no vienen en el .net framework para controlar el scanner.
Supongo que para c++ habrá un monton super sencillas de implementar, en .net tienes esto que no abarca solo scanners de codigos de barras pero que puede serte util:

http://www.microsoft.com/en-us/download/details.aspx?id=5355

y esta es la documentación oficial para que puedas guiarte un poco:
http://msdn.microsoft.com/en-us/library/bb429024.aspx

Para mi msdn es muy dificil de leer, pero hay miles de sitios con documentación:

http://www.codeproject.com/Articles/34473/Controlling-a-Barcode-Reader-with-POS-for-NET


A mi hace poco me hizo falta hacer algo que no se podia en .net, asi que solo hice una dll en c++ y arreando, es otra opcion.
16  Programación / .NET (C#, VB.NET, ASP) / c# Null Exception imposible. en: 23 Mayo 2014, 18:38 pm
Tengo una clase, que contiene el siguiente codigo:
Código:
do
{
     objeto.image[0] = OtraClase.GetImage();
}while (objeto[0] == null); // Bucle hasta que objeto contenga algo que no sea null;
EventoMeterObjeto(objeto[0]); /// al intentar lanzar mi evento salta un null Reference exception, imposible que sea null en teoria no?


17  Programación / Programación C/C++ / Re: Dll que usa otras librerias en: 21 Abril 2014, 20:10 pm
Me auto respondo, no habia ningun problema, el maldito visual studio te cambia todas las configuraciones cuando cambias de debug a release, no estaba la dirección de donde linkear las librerias.
18  Programación / Programación C/C++ / Dll que usa otras librerias en: 21 Abril 2014, 19:44 pm
Estoy intentando crear una DLL que usa imageMagick++.
Al compilar como libreria estatica (.lib) me compila sin problema, pero cuando pongo en visual studio que me cree en DLL, me saltan 9 errores que no acabo de entender:

Código:
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall Magick::Image::write(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?write@Image@Magick@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall Magick::Image::scale(class Magick::Geometry const &)" (__imp_?scale@Image@Magick@@QAEXABVGeometry@2@@Z)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall Magick::Image::read(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?read@Image@Magick@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall Magick::Image::crop(class Magick::Geometry const &)" (__imp_?crop@Image@Magick@@QAEXABVGeometry@2@@Z)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall Magick::Image::~Image(void)" (__imp_??1Image@Magick@@UAE@XZ)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Magick::Image::Image(void)" (__imp_??0Image@Magick@@QAE@XZ)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Magick::Geometry::~Geometry(void)" (__imp_??1Geometry@Magick@@QAE@XZ)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Magick::Geometry::Geometry(char const *)" (__imp_??0Geometry@Magick@@QAE@PBD@Z)
1>corta.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Magick::Geometry::Geometry(unsigned int,unsigned int,long,long,bool,bool)" (__imp_??0Geometry@Magick@@QAE@IIJJ_N0@Z)
1>c:\users\samuel\documents\visual studio 2013\Projects\SolutionPokerDLL\Release\pokerdll.dll : fatal error LNK1120: 9 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Esto se puede solucionar, o no puedo crear dll's que usen otras librerias?
19  Programación / Programación C/C++ / Re: Capturar ventanas en: 19 Abril 2014, 23:45 pm
Despues de trastear toda la tarde, he encontrado una forma super sencilla de encontrar la posicion de una ventana externa a tu aplicacion:
Código:
HWND ventana = FindWindow(NULL, "Nombre de la ventana");
RECT posicion;
GetWindowRect(ventana, &posicion);

Solo hay que saber el nombre de la ventana, y no hacer falta hooking ni historias.
20  Programación / Programación C/C++ / Capturar ventanas en: 19 Abril 2014, 15:52 pm
Hola chicos, tengo una duda,
No acabo de encontrar que parte de la api, me permitiria en visual c++ capturar la imagen de una ventana (externa a mi programa).

Por si no se entiende, para windows es muy sencillo capturar una imagen de ventana ( pulsando alt + imp pant.) esto pasa la imagen al portapapeles, y se puede pegar por ejemplo en el paint.

A mi me gustaria que mi programa pudiera obtener la imagen de una ventana de otro programa sin pulsar las teclas, y poder trabajas sobre la imagen.

he estado mirando los codigos de este foro, pero no logro averiguar como obtener las coordenadas de una ventana abierta ajena a mi programa.
Gracias de antemano.
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines