FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Modificar propiedades de sistema
Hola, necesito modificar la solapa general de propiedades de sistema ( ram/ cpu etc ... ) se que se puede hacer con delphi pero no se como... lo yo quiero por ejemplo es borrar todo lo que dice hay y modificarlo a mi gusto, por ejemplo yo tengo 2 gb de ram .. y lo que quiero es poner que tengo 6 gb se entiende ? lo mismo con el procesador... si hay alguien que sabe como hacerlo porfavor que me ayude .. desde ya muchas gracias.
PD: Aca dejo un codigo que puede que les sirva para hacerlo .. es de un usuario en clubdelphi que dice que multiplica los valores de la ram que aparecen.. por ejemplo si yo tengo 1 gb me va a aparecer que tengo 2 lo que yo quiero es que me aparezca que tengo 6 gb y tambien cambiar la info del procesador ( modelo y ghz ) [code=delphi]library Injection; uses Windows, Sysutils, Messages, Psapi, CommCtrl; type TShared = record Hook: HHooK; AttachCount: Integer; end; PShared = ^TShared; PItem = ^TItem; TItem = record hWnd: HWND; WndProc: Pointer; Next: PItem; end; var Mutex, Mem: THandle; Shared: PShared; Injected: Boolean; HandleList: PItem; function FindWindowProc(hWnd: HWND; Item: PItem): Pointer; begin if Item <> nil then begin if Item.hWnd = hWnd then Result:= Item.WndProc else Result:= FindWindowProc(hWnd,Item.Next); end else Result:= nil; end; function WindowProc(hWnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; var Str: String; begin if (Msg = WM_SETTEXT) then begin Str:= String(PChar(LParam)); Str:= StringReplace(Str,'1,00 GB','2,00 GB',[rfReplaceAll,rfIgnoreCase]); Str:= StringReplace(Str,'512 MB','1,00 GB',[rfReplaceAll,rfIgnoreCase]); LParam:= Longint(PChar(Str)); end; Result:= CallWindowProc(FindWindowProc(hWnd,HandleList),hWnd,Msg,WParam,lParam); end; procedure HookWindow(hWnd: HWND); var Item: PItem; begin if FindWindowProc(hWnd, HandleList) = nil then begin GetMem(Item,Sizeof(TItem)); Item.hWnd:= hWnd; Item.Next:= HandleList; Item.WndProc:= Pointer(SetWindowLong(hWnd,GWL_WNDPROC,LongInt(@WindowProc))); HandleList:= Item; end; end; function CallWndProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var ClassName: array[0..16] of Char; begin if Code = HC_ACTION then if Injected then begin FillChar(ClassName,Sizeof(ClassName),0); if GetClassName(PCWPStruct(lParam).hwnd,@ClassName,Sizeof(ClassName)-1) > 0 then if StrIComp(ClassName,'Link Window') = 0 then begin HookWindow(PCWPStruct(lParam).hwnd); end; end; Result := CallNextHookEx(Shared^.Hook, Code, wParam, lParam); end; procedure StartHook; stdcall; begin if Shared <> nil then begin WaitForSingleObject(Mutex, INFINITE); try with Shared^ do begin if Hook = 0 then Hook := SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, HInstance, 0); end; finally ReleaseMutex(Mutex); end; end; end; procedure StopHook; stdcall; begin if Shared <> nil then begin WaitForSingleObject(Mutex, INFINITE); try with Shared^ do begin if Hook <> 0 then begin UnhookWindowsHookEx(Hook); Hook := 0; end; end; finally ReleaseMutex(Mutex); end; end; end; procedure Inject; var Process: THandle; ModName: array[0..MAX_PATH] of Char; Target: array[0..MAX_PATH] of Char; begin Injected:= FALSE; Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, GetCurrentProcessId); if Process <> 0 then begin if GetModuleFileNameEx(Process, 0, ModName,sizeof(ModName)-1) > 0 then begin FillChar(Target,Sizeof(Target),#0); GetSystemDirectory(@Target,Sizeof(Target)-1); StrLCat(Target,'\rundll32.exe',Sizeof(Target)-1); OutputDebugString(Target); if StrIComp(Target,ModName) = 0 then begin // Un pequeño pitido nos avisa de que no hemos infiltrado Windows.Beep(500,100); HandleList:= nil; Injected:= TRUE; end; end; CloseHandle(Process); end; end; procedure Attach; stdcall; var isNew: boolean; begin Mutex := CreateMutex(nil, True, '{92366DA1-4F66-472D-BE12-65F0993F62AC}'); try Mem := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, SizeOf(TShared), '{D1A38D62-9FAB-4298-A358-579D2D286E40}'); isNew := GetLastError() = 0; if Mem <> 0 then Shared := MapViewOfFile(Mem, FILE_MAP_WRITE, 0, 0, 0) else Shared := nil; if Shared <> nil then if isNew then with Shared^ do begin Hook := 0; AttachCount := 1; end else inc(Shared^.AttachCount); finally ReleaseMutex(Mutex); end; // Aqui viene la inyeccion Inject; end; procedure UnHookWindows(Item: PItem); begin if Item <> nil then begin UnHookWindows(Item.Next); SetWindowLong(Item.hWnd,GWL_WNDPROC,LongInt(Item.WndProc)); FreeMem(Item); end; end; procedure Detach; stdcall; begin WaitForSingleObject(Mutex, INFINITE); try if (Shared <> nil) then dec(Shared^.AttachCount); finally ReleaseMutex(Mutex); end; if (Shared <> nil) then if Shared^.AttachCount <= 0 then begin StopHook; UnmapViewOfFile(Shared); CloseHandle(Mem); CloseHandle(Mutex); end; if Injected then UnHookWindows(HandleList); end; procedure DLLEntryPoint(Reason: integer); begin case Reason of Dll_Process_Detach: Detach; Dll_Process_Attach: Attach; end; end; exports StartHook, StopHook; begin Attach; DLLProc:= @DLLEntryPoint; end.[/code] |
#2
|
||||
|
||||
Cosas más rara necesitas.
Por curiosidad, ¿para qué sirve hacer eso? |
#3
|
|||
|
|||
Jajaj lo necesito para un proyecto en la tecnica con eso yo creo que impresiono al profe ..
|
#4
|
||||
|
||||
Pues en este hilo, que es (supongo) de donde has sacado ese código está todo explicado y el código que compila y funciona perfectamente .
Si te molestas un poco en leerlo y generar el proyecto no tendrás problemas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 05-07-2010 a las 10:49:20. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Modificar propiedades de texto en ejecucion | betopin | Impresión | 3 | 25-02-2009 15:24:11 |
Modificar las propiedades de Qreport en Tiempo de ejecución | GerTorresM | Impresión | 0 | 01-09-2007 19:26:16 |
modificar propiedades de un componente dentro de un dbctrlgrid | gica1815 | Conexión con bases de datos | 4 | 28-08-2006 19:50:07 |
Modificar y guardar las propiedades Font | Carmelo Cash | OOP | 7 | 12-10-2004 18:21:00 |
Como puedo Modificar los valores de las propiedades de un ejecutable | DML | Varios | 4 | 07-05-2003 21:39:03 |
|