PDA

Ver la Versión Completa : Ejecutar el defragmentador desde Delphi


RoyTan
13-02-2008, 02:29:47
Saludos.

Necesito ejecutar el defragmentador de windows desde delphi.

Estoy utilizando este código pero nada de nada...

WinExec(PChar('C:\Windows\System32\Dfrg.msc'),SW_SHOWNORMAL);

Los programas con extension EXE los ejecuta todos, pero por el contrario si se utiliza programas con extension MSC, pues no.

Alguien me podría aclarar porqué.

Gracias.

cHackAll
13-02-2008, 02:49:07
WinExec('mmc c:\windows\system32\dfrg.msc', SW_SHOWNORMAL);

ixMike
13-02-2008, 14:19:10
Para eso tendrías que asegurarte que el directorio de Windows es C:\Windows\. Por ejemplo, en Win2000 se llama WINNT y yo he tenido el sistema instalado en la unidad H:

Hay una función, GetSystemDir o algo así, pero creo que lo mejor es esto:


ShellExecute(Handle, 'open', 'dfrg.msc', nil, nil, SW_MAXIMIZE);



Salu2 :)

cHackAll
13-02-2008, 19:32:47
Para eso tendrías que asegurarte que el directorio de Windows es C:\Windows\. Por ejemplo, en Win2000 se llama WINNT y yo he tenido el sistema instalado en la unidad H:

Te referes a mi codigo ixMike¿? pues deberia funcionar en cualquier instalación porque mmc.exe es un utilitario hubicado en %SystemRoot%\system32, y dicha ruta está en la variable de entorno PATH que es utilizada por WinExec.

En todo caso ambas alternativas funcionan.

Saludos

ixMike
13-02-2008, 20:59:28
Es en general, pero... después has escrito "c:\windows\system32\dfrg.msc", y ahí sí aparece "C:\Windows\". En todo caso (para evitar errores y añadir ShellApi), sería:


WinExec('mmc %systemroot%\system32\dfrg.msc', SW_SHOWNORMAL);


Ale, ya :D;)

RoyTan
14-02-2008, 00:30:24
Perfecto.

Gracias cHackAll.

RoyTan
14-02-2008, 00:32:10
Perdón IxMike, Gracias a tí tambien.

Funciona a la perfección.