|
17471
|
Programación / Desarrollo Web / jQuery y pequeño conflicto de metodo que no corre -.-
|
en: 27 Julio 2010, 09:29 am
|
Buenas 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
|
|
|
17473
|
Comunicaciones / Redes / Help! no hayo como pasar datos
|
en: 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 / Programación C/C++ / .bmp a .jpeg con GDIPlus
|
en: 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 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
|
Seguridad Informática / Análisis y Diseño de Malware / Re: [SRC][C++] ClsScreenCapture
|
en: 10 Julio 2010, 23:11 pm
|
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
|
Programación / Programación C/C++ / Re: Capturar Pantalla (sin método de teclado)
|
en: 9 Julio 2010, 05:04 am
|
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
|
Programación / Programación C/C++ / Re: Capturar Pantalla (sin método de teclado)
|
en: 8 Julio 2010, 20:47 pm
|
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 ) 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
|
Programación / Programación C/C++ / Re: Capturar Pantalla (sin método de teclado)
|
en: 8 Julio 2010, 18:03 pm
|
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 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 eso si... el programa es un poco lento... problema que ya veré como solucionar luego
|
|
|
17479
|
Programación / Programación C/C++ / Re: Capturar Pantalla (sin método de teclado)
|
en: 8 Julio 2010, 04:56 am
|
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 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
|
Programación / Programación C/C++ / Re: Capturar Pantalla (sin método de teclado)
|
en: 8 Julio 2010, 04:36 am
|
littlehorse, cool eso era lo que necesitaba el linker (si, es dev c++) nicolas_cof 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
|
|
|
|
|
|
|