Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2009
FrianxD FrianxD is offline
Miembro
 
Registrado: dic 2007
Posts: 65
Poder: 17
FrianxD Va por buen camino
Talking Interactuar con otras aplicaciones

Bueno hola antes que nada, quiero saber si me podrian ayudar en esta pequeña duda que tengo paso a explicarles

yo creo una aplicacion con un Checkbox solamente eso, y quiero que cuando el check box este marcado y el usuario preciona F1 escriba APROBADO
pero necesito que este APROBADO lo escriba en cualquier aplicacion, asi sea notepad word pad o donde sea basicamente lo que quiero es que cuando mi aplicacion este ejecutada y se precione F1 escriba APROBADO en cualquier programa que este en primer plano en ese momento, no se si me explico bien espero que si y espero que me puedan ayudar con mi duda.


Desde ya muchas gracias !
Responder Con Cita
  #2  
Antiguo 06-02-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Revisa el mensaje WM_SETTEXT o la API BOOL SetWindowText(HWND hWnd, LPCTSTR lpString)

Necesitarás el HWND del control donde quieres escribir tu texto. Si el HANDLE es de un formulario, te cambiará el Caption, Si es un control editable, se colocará ese texto.

Saludos.
Responder Con Cita
  #3  
Antiguo 06-02-2009
FrianxD FrianxD is offline
Miembro
 
Registrado: dic 2007
Posts: 65
Poder: 17
FrianxD Va por buen camino
si es un notepad donde yo quiero escribir APROBADO como deberia hacerlo, podrias darme un ejemplo ?? la verdad no entiendo mucho del tema y no se manejar las API
Responder Con Cita
  #4  
Antiguo 06-02-2009
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.265
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
CReo que lo más sencillo es que tu programa (del checkbox) registre una ShortCut global a nivel de sistema.
Por ejemplo, en este hilo se muestra como registrar dos teclas de función.

A partir de ahí podrías probar a enviar teclas a la aplicación activa, sea con algun mensaje o utilizando algun procedimiento. Si buscas en los foros "sendkeys" encontrarás varios mensajes (por ejemplo este) que te pueden servir.
__________________
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
  #5  
Antiguo 06-02-2009
FrianxD FrianxD is offline
Miembro
 
Registrado: dic 2007
Posts: 65
Poder: 17
FrianxD Va por buen camino
Muchas gracias, voy a revisar esas cosas!


gracias nuevamente!
Responder Con Cita
  #6  
Antiguo 06-02-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Una solución usando un Hook al teclado:

Código:
HHOOK WHookKeyboard = 0;

//---------------------------------------------------------------------------
LRESULT CALLBACK KeyboardHookCallBack(int Code, WPARAM wParam, LPARAM lParam)
{
   if(Code == HC_ACTION){
      // PKBDLLHOOKSTRUCT hs = (PKBDLLHOOKSTRUCT)lParam;
      PKBDLLHOOKSTRUCT hs = reinterpret_cast<PKBDLLHOOKSTRUCT>(lParam);
      if (hs->vkCode == VK_F1 && hs->flags ==0){
        HWND hWnd = 0;
        HWND hWndc = 0;
        hWnd = FindWindow("NotePad", 0);
        hWndc = FindWindowEx(hWnd, 0,0,0);
        SetForegroundWindow(hWndc);
        ::SetFocus(hWndc);
        char cadena[] = "HOLA";
        for(int n=0; n<strlen(cadena); n++){
          PostMessage(hWndc, WM_CHAR, cadena[n], 0);
        }
      }
   }


   // Permitimos el proceso del resto del teclado.
   return CallNextHookEx(WHookKeyboard, Code, wParam, lParam);
}

//---------------------------------------------------------------------------
bool Hook()
{
   if(WHookKeyboard == 0) {
     WHookKeyboard = SetWindowsHookEx(WH_KEYBOARD_LL, reinterpret_cast<HOOKPROC>(KeyboardHookCallBack), HInstance, 0);
     // Antigua y clásica forma de hacer el casting
     // WHookKeyboard = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardHookCallBack, HInstance, 0);
   }

   return (bool)WHookKeyboard;
}

//---------------------------------------------------------------------------
void UnHook()
{
   UnhookWindowsHookEx(WHookKeyboard);
   WHookKeyboard = 0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
   if(CheckBox1->Checked) Hook();
   else UnHook();
}
//---------------------------------------------------------------------------
Saludos.

Última edición por escafandra fecha: 06-02-2009 a las 14:52:12.
Responder Con Cita
  #7  
Antiguo 06-02-2009
FrianxD FrianxD is offline
Miembro
 
Registrado: dic 2007
Posts: 65
Poder: 17
FrianxD Va por buen camino
gracias por la buena onda ahora cuando este en casa voy a probar esas cosas !
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Enviar teclas a otras aplicaciones cmm07 Varios 5 12-02-2008 01:33:46
hacer interactuar 2 aplicaciones de delphi pablito23 Varios 4 08-11-2007 06:41:07
Monitorear eventos de otras aplicaciones Marco A. Ruiz API de Windows 0 22-08-2006 21:41:59
Capturar errores de otras aplicaciones Borro API de Windows 1 21-10-2005 21:40:03
Problema al ejecutar las aplicaciones en otras maquinas Durbed Varios 1 09-08-2005 18:09:43


La franja horaria es GMT +2. Ahora son las 00:53:07.


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