Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2010
maxinitto maxinitto is offline
Miembro
 
Registrado: may 2010
Posts: 45
Poder: 0
maxinitto Va por buen camino
Modificar Opciones de carpeta con delphi

Hola:

Muy buenas, el caso es que he estado buscando como modificar las opciones de carpeta de windows mediante delphi....He visto aquí en algunos post que lo hacen mediante el registro pero claro no era lo que yo buscaba aunque si me ha orientado un poco... Bueno lo que yo quiero saber es, si se puede modificar tambien mediante el registro la opcion de dar un click o dos a la hora de abrir archivos o carpetas en windows. Tambien he leido que cuando cambias valores del registro respecto al explorer es necesario reiniciar el "explorer.exe", en caso de que fuese necesario me gustaria que me explicaran como hacer estos pasos.

Muchas gracias de antemano.
Responder Con Cita
  #2  
Antiguo 20-11-2010
Avatar de javier_ecf
javier_ecf javier_ecf is offline
Miembro
 
Registrado: sep 2010
Posts: 32
Poder: 0
javier_ecf Va por buen camino
Nunca lo eh intentado pero para reiniciar explorer podrias matar el proceso y mandarlo abrir.
Ejemplos:

Ejecutar aplicacion:
ShellExecute(Handle, 'open', PChar('c:\test\app.exe'), nil, nil, SW_SHOW);

Matar proceso:
Código:
procedure KillProcess(hWindowHandle: HWND);
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);

  if isWindow(hWindowHandle) then
  begin
    // PostMessage(hWindowHandle, WM_QUIT, 0, 0);

    { Get the process identifier for the window}
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      { Get the process handle }
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        { Terminate the process }
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
end;
Usarlo: KillProcess(FindWindow('notepad',nil));
Responder Con Cita
  #3  
Antiguo 21-11-2010
maxinitto maxinitto is offline
Miembro
 
Registrado: may 2010
Posts: 45
Poder: 0
maxinitto Va por buen camino
ok, muchas gracias.

por lo menos una de las cosas ya esta resuelta, la otra seria saber donde estan las entradas del registro del explorer.exe y alli alli pues iria probando ejjeej venga lo dicho muchas gracias
Responder Con Cita
  #4  
Antiguo 21-11-2010
maxinitto maxinitto is offline
Miembro
 
Registrado: may 2010
Posts: 45
Poder: 0
maxinitto Va por buen camino
Tambien he intentado monitorear el proceso explorer.exe y despues efectuado yo los cambios para que habra los archivos y carpetas con un click o dos, y me muestra tela de cosas que la mitad no entiendo jejeje si quereis probar aqui os dejo el proccess monitor y alguien que este mas metido en el tema intente localiza que valores modifica el explorer en el registro respecto al cambio que efectuamos.

Gracias de nuevo.
Responder Con Cita
  #5  
Antiguo 25-11-2010
maxinitto maxinitto is offline
Miembro
 
Registrado: may 2010
Posts: 45
Poder: 0
maxinitto Va por buen camino
Hola ya encontre donde se almacena esa clave de registro concretamente en la ruta: "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer" en la key "ShellState" si modificais la forma de abrir los archivos: con un click o dos, vereis que el valor de esa clave se modifica ademas lo e probado yo y funciona el caso es que este valor en cada pc es diferente y no se en que se basa pero bueno ya es algo mas jejeej cuando se modifica esta clave es necesario reiniciar el explorer o como bien dicen matarlo yo lo hice con este codigo:
Código Delphi [-]
uses
  Tlhelp32; 

(...)

function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;
y cuando lo hago los cambios surgen efecto, me queda averiguar en que se basa el valor que almacena para poder hacerlo que funcione en todos los pcs es para un programa que estoy elaborando.

Salu2
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
Ayudenme a deshabilitar las opciones de carpeta. scs OOP 3 07-01-2009 17:26:52
Api Opciones de Carpeta MaMu API de Windows 4 03-04-2008 09:13:46
Aplicar cambios hechos en Opciones de Carpeta aeff API de Windows 3 16-10-2007 04:42:46
Modificar opciones impresora desde delphi walace_soy Impresión 0 18-09-2007 12:18:17
Cambiar por código la opción "uso compartido de carpetas" en opciones de carpeta JuanErasmo API de Windows 1 09-11-2006 15:47:08


La franja horaria es GMT +2. Ahora son las 03:06:46.


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