Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 26-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Lo he probado en un ejemplo creado por mi y no me funciona. Tengo esto:

App:
Código PHP:
void __fastcall TForm1::AddDll()
{
   
//cargamos la Dll
   
Dll=LoadLibrary("DllSaveImageEdited.dll");
   if(!
Dll){
      
ShowMessage("No se encontró la Dll: DllSaveImageEdited.dll");
   }else{
      
//buscamos la funcion en la dll
      
Funcion = (LPFuncion)GetProcAddress(Dll"SaveImageEdited");
      if(!
Funcion){
         
ShowMessage("ERROR, no se encontró la función: SaveImageEdited");
      }else{
         
Funcion();//Ejecutamos la funcion de la dll

         
ButtonDesinstalarDll->Enabled true;
         
ButtonInyectarDll->Enabled false;
      }
   }

Dll:
Código PHP:
#include <windows.h>
#include "C:\\Archivos de programa\\Borland\\CBuilder6\\Imports\\AddFlow5Lib_OCX.h"
//---------------------------------------------------------------------------

#pragma argsused

/*******************************************************/
/*FUNCIÓN PARA INSTALAR/DESINSTALAR EL HOOK DEL TECLADO*/
/*******************************************************/
extern "C" __declspec(dllexport__stdcall int SaveImageEdited(void)
{
   
int retval;

   try
   {
      
//Para la prueba
      
HWND hwnd FindWindow("TForm1""Form1");
      
hwnd FindWindowEx(hwndNULL"AfxOleControl42"NULL);

      
//Obtengo un puntero a dicho componente con su handle
      
TAddFlowpaf = (TAddFlow*)FindControl(hwnd); 
      
      if(
paf!=NULL) {
         
paf->SaveImage(afTypeMediumFileafWMFWideString("\\DiagramaEditado.wmf"));
         
retval 0;
      }else{
         
MessageBoxA(NULL,"El puntero no es válido.""Error"MB_OK MB_ICONERROR);
         
retval = -2;
      }
   }
   catch(...)
   {
      
retval = -1;
   }
   return 
retval;
}
//---------------------------------------------------------------------------

int WINAPI DllEntryPoint(HINSTANCE hinstunsigned long reasonvoidlpReserved)
{
   return 
1;
}
//--------------------------------------------------------------------------- 
El control es de clase "AfxOleControl42" y consigo su hwnd sin problemas pero FindControl retorna 0, o sea que no me devuelve la direccion y por tanto se muestra el mensaje de que el puntero no es valido.
¿que puede estar fallando? ya digo que es una prueba que hice en C++builder tanto la app como la dll.

En la aplicacion el componente se declara:
Código PHP:
TAddFlow *AddFlow1
Responder Con Cita
 



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
Handle de objetos juank1971 OOP 2 09-06-2012 19:10:54
Asignando procedemientos a eventos. yapt Lazarus, FreePascal, Kylix, etc. 2 28-05-2010 12:23:11
TComponent y Handle ixMike OOP 5 12-10-2007 13:45:52
Problemas asignando passwords a usuarios kman Varios 2 16-07-2006 20:53:16
Obtener Handle de un objeto senpiterno Varios 6 22-04-2004 15:21:40


La franja horaria es GMT +2. Ahora son las 13:09:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi