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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-12-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Como dice Ñuño Martínez lo esperable es que falle. Mejor intenta informarte del componente de VB, para manejarlo desde la API de Windows en la medida que sea posible.

Saludos.
Responder Con Cita
  #2  
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
  #3  
Antiguo 26-12-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Quizás con FindComponent...

Saludos.
Responder Con Cita
  #4  
Antiguo 26-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
¿Como seria con FindComponent? He mirado la ayuda y veo que recibe como parametro un AnsiString pero no se que poner ahi y ademas doy al ejemplo y no aparece ni la funcion en el ejemplo.
Si es el Name no lo tendria en el de VB.

Última edición por aguml fecha: 26-12-2014 a las 16:06:57.
Responder Con Cita
  #5  
Antiguo 26-12-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Y para que quieres hacer esto?

Es mala idea tratar de romper el "contrato" de lo que cualquier API te suministre, EN ESPECIAL si intentas hacer una mutacion/cambio de estado o romper con el proposito de lo que hace esa API.
__________________
El malabarista.
Responder Con Cita
  #6  
Antiguo 26-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
no no, es para implementar mas cosas que la app no hace y que podria hacerlo sin problemas ya que usa un objeto el cual trae consigo esos metodos. No hay que romper apis ni nada, solo llamar a metodos que ya existen y el fabricante no los usa. Imagina una clase con los metodos Draw, SaveImage, SaveFile, Clear y Refresh, imagina que alguien usa esa clase en una aplicacion y solo usa Draw y Refresh y ¿Por que no usa el resto? El sabrá pero en mi debugger me gustaria implementar la opcion de que pueda usar cualquier metodo de esa clase y para ello necesito el puntero de la clase para poder trabajar con sus metodos, propiedades o lo que sea.
Responder Con Cita
  #7  
Antiguo 26-12-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Pues eso que dices es romper el API. Si esta escondiendo el metodo (que es una de las razones de la OO: encapsulamiento ) es porque llamarlos puede causar problemas, o no tiene implementacion o carece de sentido.
__________________
El malabarista.
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
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 05:51:36.


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