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 28-11-2007
federicorl federicorl is offline
Miembro
 
Registrado: may 2006
Posts: 31
Poder: 0
federicorl Va por buen camino
no encuentra mi aplicacion FindWindow

se que algo debo estar haciendo mal estoy probando un teclado virtual y empece con el notepad

Var
manejador : THandle;
h: HWND;
Begin
h := FindWindow('Notepad', nil);
if h = 0 then ShowMessage('No se encontro la Aplicacion')
else
begin
SetForegroundWindow(h);

y me funciono bien pero cuando en Findwindow cambie 'Notepad' por el nombre de mi aplicacion no funciona, inmediatamente me indica que no encontro la aplicacion, alguien sabra que estoy haciendo mal?

de antemano les agradezco su tiempo, saludos!
Responder Con Cita
  #2  
Antiguo 06-12-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Intentas hacer una aplicación que solo pueda ejecutarse en una sola instancia? Si es así, esa no es la forma recomendada de hacerlo. Los componentes Jedi incluyen un componente para hacer evitar que tu aplicación se ejecute más de una vez al mismo tiempo. El componente se llama JvgSingleInstance y sólo necesitas colocarlo en algún formulario de tu aplicación.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 08-12-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 17
paldave Va por buen camino
Prueba con esta función:

Código Delphi [-]
function TOneInstance.IsRunning: Boolean;
const
  SSubClass = '.OneInstance.';
var
  Mutex: THandle;
  Flag: DWORD;
begin
  Result := False;
  if csDesigning in ComponentState then Exit;

  Result := True;
  Mutex := CreateMutex(nil, True,
    PChar(Application.Title + SSubClass + 'CriticalSection')); 
  if (GetLastError <> 0) or (Mutex = 0) then Exit;

  _OneInstanceMutex := CreateMutex(nil, False,
    PChar(Application.Title + SSubClass + 'Default'));
  Flag := WaitForSingleObject(_OneInstanceMutex, 0);
  Result := (Flag = WAIT_TIMEOUT);

  ReleaseMutex(Mutex);
  CloseHandle(Mutex);
end;

Llámala en el evento OnCreate del MainForm de tu aplicación, detectará si ya hay ejecutándose otra aplicación con el mismo título y te devolverá ese valor.
Suerte.
Responder Con Cita
  #4  
Antiguo 08-12-2007
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Checa la ayuda Windows SDK

Ey amigo, checa la ayuda de Windows SDK (menú Help-> Windows SDK) y busca FindWindow.

Aqui nos dice:

The FindWindow function retrieves the handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows.

Código Delphi [-]
 
HWND FindWindow(
    LPCTSTR lpClassName, // pointer to class name
    LPCTSTR lpWindowName  // pointer to window name
   );

El primer parámetro de FindWindow es el nombre de la clase de la ventana que buscas y el segundo parámetro es el nombre o el caption de la ventana que buscas.
__________________
Herr Heins Faust
Responder Con Cita
  #5  
Antiguo 10-12-2007
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.275
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
Hay dos formas de llamar a la función findWindows, como ya te han dicho.
* Utilizando Título de la ventana
* Utilizando el nombre de la clase.

Para el notepad has utilizado el nombre de la clase y te ha funcionado, ya que la ventana del Notepad tiene como nombre de clase "notepad".

Si quieres utilizarlo con tu aplicación debes saber cual es el nombre de la clase del form que estás llamando; Para saberlo puedes utilizar varias utilizades (yo uso WinExplorer, aunque seguro que hay más).

Si no puedes encontrar el nombre de la clase, siempre te queda utilizar el otro parámetro y llamar a la función FindWindows utilizando el título de la ventana, aunque esa forma creo que es menos segura.
__________________
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.
Responder Con Cita
  #6  
Antiguo 10-12-2007
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.275
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
Ya hemos hablado antes en los foros de esta utilidad y de algunas otras: aquí o aquí.
__________________
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.
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
Duda sobre FindWindow Faust API de Windows 3 30-08-2006 14:58:37
Problema con el FindWindow lookmydoom API de Windows 3 22-07-2006 09:57:56
Encuentra los 5 (o mas) errores... papulo Varios 10 16-09-2005 09:10:05
Problemas con FindWindow Fita API de Windows 4 03-03-2004 19:14:00
Conocer el nombre de la aplicacion que se encuentra activa cso2000 Varios 4 24-10-2003 02:28:14


La franja horaria es GMT +2. Ahora son las 09:46:14.


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