Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2010
mantpro mantpro is offline
Registrado
 
Registrado: jul 2010
Posts: 2
Poder: 0
mantpro Va por buen camino
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]
Responder Con Cita
  #2  
Antiguo 04-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cosas más rara necesitas.
Por curiosidad, ¿para qué sirve hacer eso?
Responder Con Cita
  #3  
Antiguo 04-07-2010
mantpro mantpro is offline
Registrado
 
Registrado: jul 2010
Posts: 2
Poder: 0
mantpro Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Cosas más rara necesitas.
Por curiosidad, ¿para qué sirve hacer eso?
Jajaj lo necesito para un proyecto en la tecnica con eso yo creo que impresiono al profe ..
Responder Con Cita
  #4  
Antiguo 05-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 12:14:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi