Ver la Versión Completa : ShellExecute y "c:\WINDOWS\system32\telephon.cpl"
Durbed
20-12-2005, 15:45:29
Hola, quiero abrir las opciones de marcado de windows, lo estoy intentando mediante un shellexecute, lo raro es que si lo pongo en el ejecutar de windows (inicio->ejecutar->C:\Windows\System32\telephone.cpl), lo abre sin problemas. El shellexecute que utilizo es este:
ShellExecute(Handle, 'open', 'C:\Windows\System32\telephone.cpl', nil, nil, SW_SHOW);
Un saludo y gracias.
delphi.com.ar
20-12-2005, 15:51:28
Probá algo como:
WinExec('rundll32.exe shell32.dll,Control_RunDLL "C:\Windows\System32\telephone.cpl"', SW_SHOW);
Saludos!
:confused: Chiezen!!!!, disculpa q me entrometa en este hilo sin aportar Federico, puedes decirme algo respecto al .cpl y porq se ha de correr como parámetro del kernel (o mejor dicho.....parte del kernel)?
Durbed
20-12-2005, 16:39:48
No me ha funcionado, pero tampoco me ha dado error, simplemente no ha pasado nada.
Gracias.
Hola,
No me ha funcionado, pero tampoco me ha dado error, simplemente no ha pasado nada.
Lo que pasa es que no estás usando la ruta correcta: no es "telephone.cpl", sino "telephon.cpl". Si lo miras verás que el archivo "telephone.cpl" no existe en el directorio "System32" y sí existe "telephon.cpl".
Durbed
20-12-2005, 17:22:11
Muchas gracias a los dos, ya funciona perfectamente, esa es la tipica chorrada que te tiene liado media tarde XD
Un saludo y gracias de nuevo
delphi.com.ar
20-12-2005, 21:18:08
:confused: Chiezen!!!!, disculpa q me entrometa en este hilo sin aportar Federico, puedes decirme algo respecto al .cpl y porq se ha de correr como parámetro del kernel (o mejor dicho.....parte del kernel)?
¿Cómo parámetro del Kernel?.... Todos los procesos son objetos del Kernel!
RunDll o RunDll32 simplemente sirven para llamar a funciones exportadas por DLL´s:
RUNDLL.EXE Archivo.dll,Función Parámetro1, Parámetro2, Parámetro3
Y en este caso estamos llamando a Control_RunDLL de la librería Shell32.dll, cosa que podríamos escribir 100% en Delphi:
{ Declaración }
procedure Control_RunDLL(hWnd: HWND; hInst: HINST; cmd: LPCSTR; nCmdShow: DWORD); stdcall; external 'Shell32.dll';
...
{ Implementación }
begin
Control_RunDLL(Handle, hInstance, 'telephon.cpl', SW_SHOW);
end;
Saludos!
delphi.com.ar
20-12-2005, 21:33:04
La escribí y no la voy a dejar de subir :D
type
TControl_RunDLL = procedure(hWnd: HWND; hInst: HINST; cmd: LPCSTR; nCmdShow: DWORD); stdcall;
var
hMod: HMODULE;
Control_RunDLL: TControl_RunDll;
begin
hMod := LoadLibrary('Shell32.dll');
if hMod > 0 then
try
@Control_RunDLL := GetProcAddress(hMod, 'Control_RunDLL');
if @Control_RunDLL <> nil then
Control_RunDLL(Handle, hInstance, 'telephon.cpl', SW_SHOW);
finally
FreeLibrary(hMod);
end
else
RaiseLastOsError;
end;
Saludos!
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.