Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - engel lex

#17471
Buenas  :D estoy trabajando ahorita web, estoy creando paginas basicas y todo esto y me topé con jQuery hace unos dias... mi asunto está en que quiero hacer un input de texto simple, que cuando tome foco borre su contenido y lo debe en blanco (si el contenido es X) o que al perder foco (si el contenido es vacio) escriba X

estoy conla idea principal aun... y no me funciona ni si quiera lo basico -.- no entiendo por que... no comprendo el error si derepente escribo un codigo y el script y todo cool de repente modifico una tonteria y todo se peta -.-

he aqui mi codigo... (si me pueden dar infor de donde estudiar jQuery muchas grax)

de antemano, si, las rutas están bien -.-

test.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ooo</title>
<script language="javascript" src="include/js_functions/manejo_texto.js"></script>
<script language="javascript" src="include/jquery.js"></script>
</head>
<body>
<form name="form" method="post" action="o.php">

   <input name="nombre" type="text" id="nombre" size="20" maxlength="20" value="Ingrese su nombre" >        

</form>
</body>
</html>


manejo_texto.js
var x;
x=$(document);
x.ready(inicializa);

function inicializa()
{
 var x;
 x=$('#nombre');
 x.focus(tomaFoco);
}

function tomaFoco()
{
var x;
x=$('#nombre');
x.attr("value","");
}



--------------------actualizacion------------------------
A MazarD:
el codigo que posteaste en plano, tampoco me corre :s mi codigo no es muy diferente, lo que pasa es que en tu caso estás haciendo directo todo y usando funciones anonimas...
en la forma que lo uso, se ve diferente porque todo está definido por partes y no se vé tan churrero... :s aun no he revisado las paginas... pero revisaré y luego aviso
#17472
Redes / Re: Help! no hayo como pasar datos
18 Julio 2010, 00:59 AM
Inicialmente no lo hice en ese tema, porque aunque es referente pensé que mi pregunta era muy vaga como para meterlo en redes
Pd: ya le envie un mp al mod
#17473
Redes / Help! no hayo como pasar datos
17 Julio 2010, 06:04 AM
Tengo un router nexxt wireless... el hecho es que sin importar los que he hecho (port forwarding, virtual server, dmz... ya no se ni que inventarme) no logro abrir puertos, ni para acceso ftp, no nada, aparente mente para la salida de datos... para el ingreso (hasta ahora) nunca he tenido problemas... cuando intento ingresar al ftp, el log del ftp, es que sí recivió un intento de conexión.... peor no pasan mas datos... por controles winsock, lo mismo, el winsock recive la peticion de conexión.... pero mas ningun dato... todos los programas que he probado, los he probado por loop interno (127.0.0.1) por ip interna (192.168.1.102) y la conexión y transmision de datos es perfecta... el problema es cuando intento pasar a travez de mi ip externa..


algunos programas han logrado pasar datos de entrada y salida de manera perfecta, juegos, un programa de administracion remota (solo cuando yo tengo el cliente, si tengo el server, no se comunica), entre otros... que puede ser?

el firewall de router está desactivado... (o por lo menos eso dice el) y el de mi computadora por razones experimentales, también... como ya dije, por experimentos me doy cuenta que el problema es cuando intento pasar a traves de mi router,,,
#17474
Programación C/C++ / .bmp a .jpeg con GDIPlus
11 Julio 2010, 00:36 AM
Estoy peleando con la conversion a jpeg con GDI+... primero, simplemente los .h que conseguian, me daban varios cientos de errores (literalmente) ya conseguí unas que no me dán errores... estoy tratando de reproducir un codigo que conseguí aqui

Citarhttp://foro.elhacker.net/analisis_y_diseno_de_malware/srcc_clsscreencapture-t279310.0.html

estoy trabajando con dev c++

actualmente mis problemas son del linker, no se que mas agregar... agregué -lgdiplus (en realidad lo puse tratando de adivinarlo por obviacion así que ni sé si estará bien) y me resolvió aproximadamente la mitad de los errores del linker...


C:\Dev-Cpp\include\GDI\Gdiplus.h:52,               from C:\Dev-Cpp\include\ShotHZero.h In file included from C:/Dev-Cpp/include/GDI/Gdiplus.h:52,               from C:/Dev-Cpp/include/ShotHZero.h

C:\Dev-Cpp\include\ShotHZero.h:14,               from C:\Users\Engel\Desktop\cpp\pantallaHZ.cpp                  from C:/Dev-Cpp/include/ShotHZero.h:14,               from C:\Users\Engel\Desktop\cpp\pantallaHZ.cpp

C:\Dev-Cpp\include\GDI\GdiplusImageAttributes.h In member function `Gdiplus::Status Gdiplus::ImageAttributes::ClearColorKey(Gdiplus::ColorAdjustType)':

C:\Dev-Cpp\include\GDI\GdiplusImageAttributes.h [Warning] passing NULL used for non-pointer converting 4 of `Gdiplus::GpStatus Gdiplus::DllExports::GdipSetImageAttributesColorKeys(Gdiplus::GpImageAttributes*, Gdiplus::ColorAdjustType, BOOL, Gdiplus::ARGB, Gdiplus::ARGB)'

C:\Dev-Cpp\include\GDI\GdiplusImageAttributes.h [Warning] passing NULL used for non-pointer converting 5 of `Gdiplus::GpStatus Gdiplus::DllExports::GdipSetImageAttributesColorKeys(Gdiplus::GpImageAttributes*, Gdiplus::ColorAdjustType, BOOL, Gdiplus::ARGB, Gdiplus::ARGB)'

[Linker error] undefined reference to `CreateStreamOnHGlobal@12'
[Linker error] undefined reference to `EncoderQuality'
[Linker error] undefined reference to `EncoderQuality'
[Linker error] undefined reference to `EncoderQuality'
[Linker error] undefined reference to `EncoderQuality'
C:\Dev-Cpp\include\GDI\GdiplusImageAttributes.h ld returned 1 exit status


aun no entiendo bien los problemas del linker ni muy bien los de c++... los 2 problemas previos al linker parecen ser de poca importancia
(corrí un ejemplo de la msdn con GDI bastante simple y corrió bien aun cuando presentó esos 2 problemas)

pero ya no se que hacer... he intentado cualquier cosa... pero por mi poco conocimiento, no seria mas que intentar programar usando magia vudú
#17475
Disculpen por revivir el tema... pero intento usar el codigo, y el gdipluh.h me dá miles de errores junto con el resto de sus librerias... no sé si fue mi fuente de descargar que está mal o que... ya que lo descargué por lo menos de 4 sitios diferentes... y no consigo lograr que funciones
#17476
no se que pasa... con la librería gdiplus (la descargué de codeguru porque aparentemente devc++ no la trae, pero me causa como mil problemas con cada una de las librerías... creo que deben estar malas, porque conseguí una GdiplusEnums.h y resolvió (aparentemente) los problemas con esa librería... pero aun tengo problemas con el resto...  en la pagina de MS solo me dan  la .dll y otra que conseguí, me dá el mismo problema que con la primera que descargué... algún link de ayuda?? en google no consigo nada que me sirva  :-\


Debe haber modos de codificar rápido... paint lo hace en una fracción de segundo... en comparación a los casi 5 segundos que tardo jpeglib


Actualizacion...

Me rendí con la GDI... ninguno de los ejemplos me corre y no logro resolver nada contra el linker... así que me dediqué analizar porque la jpeglib era lenta... y no es la jpeglib... es la manera de pasarle los datos...

GetPixel(hDCmem, px, py);

este comando está durando mucho mas de lo que me gustaria... así que, si alguien conoce algún simil, u otros metodos que hagan lo mismo me serian util



Actualizaciion 2...

Para los que les parezca interesante el tema... conseguí un modo de hacerla mucho mas rapido... en menos de medio segundo, y es este metodo


int datasize = Cx*Cy;
COLORREF* lpClrData = (COLORREF*)LocalAlloc(LPTR, datasize * sizeof(COLORREF));
DWORD ds = GetBitmapBits(Hbmp, datasize * sizeof(COLORREF), lpClrData);

eso para pasarlo a memoria y para leerlo


pixel = lpClrData[100*Cx+100];


lo que hace es tornarlo practicamente un apuntador y sacarlo directo de memoria sin muchas conversiones ni nada, para recorrer la imagen... y es compatible con los metodos de color que venia usando el algoritmo


#17477
:o con el gdiplus.h yo como no conseguí informacion clara sobre ese, ni lo intenté...

que tal en respecto a velocidad? (el jpeglib me está dando casi 3 segundo en convertir de hbitmap a jpeg  :( :-\ y soy obsesivo con que mis programas sean rápidos :P)

Por cierto... pregunta aparte... veo que los ejecutables de c++ son pesados en disco duro (vengo de trabajar con visual)... esta aplicacion pesa ya casi 1,5mb... como se puede reducir ese peso en lo posible? y cuales son los costes de reducirlo? (es decir, si gasta mas memoria, es mas lento)
#17478
Sorry -.- por fastidiar... ya se que no lo hago

Gracias rob1104 si era eso... -.- despues tendré que ver como rayos soluciono si el linker fastidia mas...

po si alguien quiere el codigo, está publicado :P solo hay que cambiar

#include <jpeg\jpeglib.h> (claro asumiendo que lo consiguieron, si alguien lo necesita le puedo pasar el link de descarga)

extern "C" {
#include <jpeg\jpeglib.h>
}

al parecer esa lib tiene cabacera de c :P

eso si... el programa es un poco lento... problema que ya veré como solucionar luego
#17479
rob1104 wow creía que había modificado eso D: (de hecho el el main le había puesto system metrics, porque estaba para esa resolución, y pensé que había eliminado todas las instancias de esa resolución :s

Sorry  :-( tienes razón en que tal vez no me detuve mucho en el shot.h

modifico eso y otros detalles que ví, y ya posteo el codigo :P


Lh: No hagas doble post, usa el botón modificar!


He aquí el código final...

Espero no tener errores... en los comentarios que agregué si alguien ve algo incorrecto, acepto muy bien las correcciones ya que el código no entiendo del todo las implementaciones (disculpen si mi terminología no es la correcta)

El archivo con el main va así



#include <iostream>
#include <cstdlib>
#include "shot.h"

using namespace std;

int main(/*int argc, char *argv[]*/)
{
    int x = GetSystemMetrics(SM_CXSCREEN);
    int y = GetSystemMetrics(SM_CYSCREEN);

            //CapturaPantalla(200,200,500,500,"L:\\hola.bmp"); //Capturar crop xi,yi,xf,yf (xi=x inicial, yf=y final)

            //CapturaPantalla(0,0,x,y,"L:\\hola.bmp"); // para capturar pantalla completa


    //system("PAUSE");
    return EXIT_SUCCESS;
}





El shot.h es este


#include <windows.h>


PBITMAPINFO CreateBitmapInfoStructure(HBITMAP hBmp)
{
BITMAP bmp;
PBITMAPINFO pbmi;
WORD cClrBits;

//obtiene la altura, anchura, y profundidad del color de la imagen
if(!GetObject(hBmp,sizeof(BITMAP),(LPSTR)&bmp))return NULL;

cClrBits = 24;

/*
reserva la memoria para la estructura PBITMAPINFO, que contendrá la informacion
de la cabecera
*/
if(cClrBits!=24)
pbmi=(PBITMAPINFO)LocalAlloc(LPTR,sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*(1<<cClrBits));
else
pbmi=(PBITMAPINFO)LocalAlloc(LPTR,sizeof(BITMAPINFOHEADER));

//inicializa la estructura
pbmi->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
pbmi->bmiHeader.biWidth = bmp.bmWidth;
pbmi->bmiHeader.biHeight = bmp.bmHeight;
pbmi->bmiHeader.biPlanes = bmp.bmPlanes;
pbmi->bmiHeader.biBitCount = 24;

if(cClrBits<24)pbmi->bmiHeader.biClrUsed=(1<<cClrBits);

pbmi->bmiHeader.biCompression = BI_RGB;
pbmi->bmiHeader.biSizeImage=(pbmi->bmiHeader.biWidth+7)/8*pbmi->bmiHeader.biHeight*cClrBits;
pbmi->bmiHeader.biClrImportant = 0;

return pbmi;
}

HRESULT SaveBitmap(char strFileName[128],PBITMAPINFO pbi,HBITMAP hBMP,HDC hDC)
{
HRESULT hr = E_FAIL;
HANDLE hf; // file handle
BITMAPFILEHEADER hdr; // bitmap file-header
PBITMAPINFOHEADER pbih; // bitmap info-header
LPBYTE lpBits; // memorypointer
DWORD dwTotal; // total count of bytes
DWORD cb; // incremental count of bytes
BYTE *hp; // byte pointer
DWORD dwTmp; // temp-variable


if(pbi==NULL)return E_FAIL;

pbih=(PBITMAPINFOHEADER)pbi;
lpBits=(LPBYTE)GlobalAlloc(GMEM_FIXED,pbih->biSizeImage);

if(!lpBits)return E_FAIL;

if(!GetDIBits(hDC,hBMP,0,(WORD)pbih->biHeight,lpBits,pbi,DIB_RGB_COLORS))return E_FAIL;

//crea el .bmp
hf=CreateFile(strFileName,GENERIC_READ|GENERIC_WRITE,(DWORD)0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);

if(hf==INVALID_HANDLE_VALUE)return E_FAIL;

hdr.bfType = 0x4D42; // 0x42 = "B", 0x4D = "M"


hdr.bfSize=(DWORD)(sizeof(BITMAPFILEHEADER)+pbih->biSize+pbih->biClrUsed*sizeof(RGBQUAD)+pbih->biSizeImage);
hdr.bfReserved1=0;
hdr.bfReserved2=0;

hdr.bfOffBits=(DWORD)sizeof(BITMAPFILEHEADER)+pbih->biSize+pbih->biClrUsed*sizeof(RGBQUAD);


if(!WriteFile(hf,(LPVOID)&hdr,sizeof(BITMAPFILEHEADER),(LPDWORD)&dwTmp,NULL))return E_FAIL;

if(!WriteFile(hf,(LPVOID)pbih,sizeof(BITMAPINFOHEADER)+pbih->biClrUsed*sizeof(RGBQUAD),(LPDWORD)&dwTmp,(NULL)))return E_FAIL;


dwTotal=cb=pbih->biSizeImage;
hp=lpBits;

if(!WriteFile(hf,(LPSTR)hp,(int)cb,(LPDWORD)&dwTmp,NULL))return E_FAIL;
if(!CloseHandle(hf))return E_FAIL;

GlobalFree((HGLOBAL)lpBits);

return S_OK;
}

/*
uso: CapturaPantalla(posicion_inicial_x,posicion_inicial_y,posicion_final_x,posicion_final_y);
*/

void CapturaPantalla(unsigned int Ax,unsigned int Ay,unsigned int Bx,unsigned int By,char *Ruta)
{
BYTE *mem;
int bpp,c;
    HWND HwndSrc;
    HDC HdcSrc;
    HDC HdcMemory;
    HDC HdcStrech;
    HBITMAP Hbmp;
    HBITMAP HbmpStrech;
    HBITMAP HbmpPrev;
    HBITMAP HbmpPrevStrech;
    HBITMAP BmpPrueba;
    int Cx,Cy;
    Cx=Bx-Ax;
    Cy=By-Ay;
HwndSrc=GetDesktopWindow();                               //almacena el manejador del escritorio
    HdcSrc=GetWindowDC(HwndSrc);                               //se obtiene el DC del escritorio
HdcMemory=CreateCompatibleDC(HdcSrc);                      //se crea una copia del DC del escritorio
HdcStrech=CreateCompatibleDC(HdcSrc);                   //Cd que almacenara la imagen pequeña
Hbmp=CreateCompatibleBitmap(HdcSrc,Cx,Cy);          //se cra un bitmap del DC del escritorio
//toma desde la posision 0,0 hasta x,y
HbmpStrech=CreateCompatibleBitmap(HdcSrc,Cx,Cy);  //bitmap que almacenara el Strech
//modficacion produce un aparente error de sincrinizacion (aparentemente tangencial al sumar o restar un valor)
//el error de sincronizacion es cuando disconcuerda los numeros con BmpPrueba
HbmpPrev=(HBITMAP)SelectObject(HdcMemory,Hbmp);        //se asocia el bitmap con el DC
HbmpPrevStrech=(HBITMAP)SelectObject(HdcStrech,HbmpStrech);

BitBlt(HdcMemory,0,0,Cx,Cy,HdcSrc,Ax,Ay,SRCCOPY);
//El primer par de cordenadas toma la posicion desde x,y hasta Bx,By
//el segundo par, mueve la imagen x,y posixiones hacia atras

    StretchBlt(HdcStrech,0,0,Bx,By,HdcMemory,0,0,Bx,By,SRCCOPY);
    //aparentemente hace lo mismo que el comando anterior en modificacion
   
    HbmpStrech=(HBITMAP)SelectObject(HdcStrech,HbmpPrevStrech);
    Hbmp=(HBITMAP)SelectObject(HdcMemory,HbmpPrev);

bpp=Bx*By*8; //NPI para que sirve ya que ni si quiera está implementado su uso :s
   
c=GetBitmapBits(HbmpStrech,0,0);
mem=(BYTE*)malloc((c-1)*sizeof(BYTE*));
memset(mem,0,sizeof(mem));

    GetBitmapBits(HbmpStrech,c,mem);
BmpPrueba = CreateCompatibleBitmap(HdcSrc,Cx,Cy-0);
//x,y determinan el temaño de la captura
SetBitmapBits(BmpPrueba,c,mem);
SaveBitmap(Ruta,CreateBitmapInfoStructure(BmpPrueba),BmpPrueba,HdcSrc);

    DeleteDC(HdcSrc);
    DeleteDC(HdcMemory);
    DeleteDC(HdcStrech);
    DeleteObject(Hbmp);
    DeleteObject(HbmpPrev);
    DeleteObject(HbmpStrech);
    DeleteObject(HbmpPrevStrech);

return;
}



Mis pseudo análisis (-.- realmente mas por método de caja negra que por cualquier otro método) es en esta sección



HwndSrc=GetDesktopWindow();                               //almacena el manejador del escritorio
    HdcSrc=GetWindowDC(HwndSrc);                               //se obtiene el DC del escritorio
HdcMemory=CreateCompatibleDC(HdcSrc);                      //se crea una copia del DC del escritorio
HdcStrech=CreateCompatibleDC(HdcSrc);                   //Cd que almacenara la imagen pequeña
Hbmp=CreateCompatibleBitmap(HdcSrc,Cx,Cy);          //se cra un bitmap del DC del escritorio
//toma desde la posision 0,0 hasta x,y
HbmpStrech=CreateCompatibleBitmap(HdcSrc,Cx,Cy);  //bitmap que almacenara el Strech
//modficacion produce un aparente error de sincrinizacion (aparentemente tangencial al sumar o restar un valor)
//el error de sincronizacion es cuando disconcuerda los numeros con BmpPrueba
HbmpPrev=(HBITMAP)SelectObject(HdcMemory,Hbmp);        //se asocia el bitmap con el DC
HbmpPrevStrech=(HBITMAP)SelectObject(HdcStrech,HbmpStrech);

BitBlt(HdcMemory,0,0,Cx,Cy,HdcSrc,Ax,Ay,SRCCOPY);
//El primer par de cordenadas toma la posicion desde x,y hasta Bx,By
//el segundo par, mueve la imagen x,y posixiones hacia atras

    StretchBlt(HdcStrech,0,0,Bx,By,HdcMemory,0,0,Bx,By,SRCCOPY);
    //aparentemente hace lo mismo que el comando anterior en modificacion
   
    HbmpStrech=(HBITMAP)SelectObject(HdcStrech,HbmpPrevStrech);
    Hbmp=(HBITMAP)SelectObject(HdcMemory,HbmpPrev);

bpp=Bx*By*8; //NPI para que sirve ya que ni si quiera está implementado su uso :s
   
c=GetBitmapBits(HbmpStrech,0,0);
mem=(BYTE*)malloc((c-1)*sizeof(BYTE*));
memset(mem,0,sizeof(mem));

    GetBitmapBits(HbmpStrech,c,mem);
BmpPrueba = CreateCompatibleBitmap(HdcSrc,Cx,Cy-0);
//x,y determinan el temaño de la captura
SetBitmapBits(BmpPrueba,c,mem);
SaveBitmap(Ruta,CreateBitmapInfoStructure(BmpPrueba),BmpPrueba,HdcSrc);




#17480
littlehorse, cool  ;D eso era lo que necesitaba el linker (si, es dev c++)
nicolas_cof  :D agradezco también mucho tu interés en ayudarme

pero ahora surge un nuevo problema...

:-(

crea la imagen, pero este captura solo 800x600 y deja el resto en negro (mi pantalla es 1400x900)


si, se que estoy jodiendo mucho, para lo poco que nos conocemos... pero así iré aprendiendo  ;)