Ir al contenido


Foto

[TRUCO DELPHI] Encontrar una Ventana por su Titulo / Caption..


  • Por favor identifícate para responder
5 respuestas en este tema

#1 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 29 agosto 2016 - 08:12

[TRUCO DELPHI] Verificar si un archivo esta en Uso..


delphi
  1. function IsFileInUse(fName : string) : boolean;
  2. var
  3. HFileRes : HFILE;
  4. begin
  5. Result := false;
  6. if not FileExists(fName) then exit;
  7. HFileRes :=
  8. CreateFile(pchar(fName),
  9. GENERIC_READ or GENERIC_WRITE,
  10. 0, nil, OPEN_EXISTING,
  11. FILE_ATTRIBUTE_NORMAL,
  12. 0);
  13. Result := (HFileRes = INVALID_HANDLE_VALUE);
  14. if not Result then
  15. CloseHandle(HFileRes);
  16. end;

Saludos!


  • 2

#2 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 29 agosto 2016 - 11:40

¿No repetís te el truco que publicaste aquí?
Determinar si un archivo esta en uso
 
Saludos.
  • 1

#3 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 30 agosto 2016 - 06:01

Hola @Escafandra.

 

Si, Muy Cierto.  No me habia dado cuenta. "A de ser la Edad" (^)

 

Sin embargo.. Corrigo esto posteando en este mensaje otro Truco, ya que no puedo modificar el Texto del Titulo y crearia un desastre si traspapeleo Cosas.

 

[TRUCO DELPHI] Encontrar una Ventana por su Titulo / Caption..
delphi
  1. function FindWindowByTitle(WindowTitle: string): Hwnd;
  2. var
  3. NextHandle: Hwnd;
  4. NextTitle: array[0..260] of char;
  5. begin
  6. NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  7. while NextHandle > 0 do
  8. begin
  9. GetWindowText(NextHandle, NextTitle, 255);
  10. if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
  11. begin
  12. Result := NextHandle;
  13. Exit;
  14. end
  15. else
  16. NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  17. end;
  18. Result := 0;
  19. end;

Saludos!


  • 1

#4 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 30 agosto 2016 - 10:38

¿Y no es más sencillo de esta forma, con la API FindWindow?
 


delphi
  1. FindWindow(nil, WindowTitle);


Saludos.


  • 1

#5 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 31 agosto 2016 - 12:25

Hola, @Escafandra... Bueno, Todo depende...

 

Si hace el trabajo y como dicen los Estadounidenses, "Funciona", entonces esta todo bien...  Excuseme, que la edad me ha dado con esto... (y)

 

Maestro Escafandra, gracias por revisar mis Hilos y por sus Contribuciones al Foro de DelphiAccess.   Cuando sea grande quiero ser como usted.

 

Saludos!


  • 0

#6 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 31 agosto 2016 - 04:24

Bueno, si un código funciona hace su cometido pero no suelo conformarme sólo con que funcione, sino que lo haga de la forma más rápida y optimizada posible. ¿Si una implementación puede ser rápida y simple, porqué conformarse con algo más complejo y pesado aunque funcione?

 

 

Saludos.


  • 0