Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Problema de Ejecución

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Problema de Ejecución Responder citando

Hola Amigos del Foro:

Estoy haciendo una aplicacion que me permita leer la informacion que proveen varios Ratones conectados en Windows XP, lo que es botones pulsados, distancia X, Y, si se movio la rueda del Mouse (raton Wheel), esto usando , el RAW INPUT mediante el mensaje de Win XP WM_INPUT
que me permite claro, antes mediante otras funciones que se encuentran en USER32.DLL saber que dispositivos HID estan conectado. Ver:

Leyendo ratones con WM_INPUT
https://cppbuilder.es/viewtopic.php?t=11305

la aplicacion funciona correctamente, solo teniendo instalados las RTL, (donde esta instalado el BCB 6) esto es cuando enlaza el ejecutable de forma nomal.

Pero cuando lo enlazo, utilizando las siguientes opciones,
Project->options.

i) Linker: Desmarcar la checkbox 'Use dynamic RTL'
ii) Packages: Desmarcar la checkbox 'Build with runtime packages'.

para que me cree un ejecutable que corra en cualquier PC.
Me emite el siguiente error. al ejecutarlo.


El proyecto completo lo pueden descargar si lo desean en:

http://mx.geocities.com/mverastegui/descarga/ratonvcl7.zip

la intención obtener la informacion de manera separada de cada raton conectado a la PC, ya que como sabemos si tenemos dos ratones Windows solo le hace caso a "UNO" esto es de forma ficticia, ya que tambien lee la informacion de otro ratones, pero solo refleja el estado de un. Es decir si el raton 1.

En el topico 11305 citado anteriormente realiza dicha funcion , pero enlazado de manera normal, y con el BCB 6 instalado pero enlazado para que corra en cualquier PC, "no funciona".

Como resuelvo, este problema.

Alguna Sugerencia por favor.

Muchas Gracias.
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: no se si te pueda servir Responder citando

a mi me han pasado problemas similares cuando hago lo de "que corra en cualquier pc" y me salen letreros por el estilo. la manera q yo he encontrado para que me corra bien es añadiendo en la misma carpeta de mi proyecto los .dll's que uso para el programa, uno de esos el "cc3260mt.dll" q es el de Run Time Library y es muy necesario casi en todas las aplicaciones que yo he usado para poderlo llevar a otro pc, repito "en las aplicaciones que yo he realizado, no en todas". espero te sirva eso de ayuda y si algo me comentas como te fue, suerte...........
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Habeis instaldo las actualizaciones del builder6?
_________________
Un saludo
Rayder
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Solucionado Responder citando

Hola amigos del foro:

Gracias, ya solucione el problema de ejecución, el error, aparace porque quiere abrir un archivo, lo curioso es que aparece solo cuando esta construido como ejecutable completo.
Agrego lo lugares donde hice la modificación.
Código:

...
#pragma resource "*.dfm"
int iFileHandle;//ofstream Archivo;
...

int TForm1::HandleWMInput(HWND hwnd, HRAWINPUT hRawInput)
{
...
//        Archivo << cad.c_str();
        FileWrite(iFileHandle,cad.c_str(),cad.Length());
        Memo1->Lines->Add(cad);
....

}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
//   Archivo.open("log.txt");
  if (FileExists("log.txt"))
    {
/*      fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0);
      strcat(szFileName, ".BAK");*/
      RenameFile("log.txt", "log.bak");
    }
   iFileHandle = FileCreate("log.txt");
...
}

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
//     Archivo.close();
     FileClose(iFileHandle);
...
}

Estas modificaciones se encuentran el archivo. principal.cpp

por razones de tiempo, luego les pongo el enlace del programa que funciona, correctamente, para que lo puedan descargar si lo desea.

Muchas gracias.
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Solucionado enfoque de teclado Responder citando

Hola Amigos del Foro:

Ya resolvi el problema del enfoque del teclado, resulta que cuando
vas a registrar el tipo de dispositivos que va a leer tu aplicación, se tiene
que especificar el manejador de Ventana (HADLER [HWND]) que va a detectar los mensajes WM_INPUT, en este caso es el HANDLER de la Aplicacion principal.
Código:

   ....
        RAWINPUTDEVICE Rid[1];
    ...
    Rid[0].usUsagePage = 0x01;
    Rid[0].usUsage = 0x02;
    Rid[0].dwFlags = 0;
    Rid[0].hwndTarget = (HWND)this->Handle;  //Form1->Handle;
   
    if(rid.RegisterRawInputDevices_f(Rid, 1, sizeof (Rid [0])) == FALSE) 
....



Esta manera se resuelve el problema del enfoque de teclado.
Ya que cuando hwndTarget es 0, esta pendiente del teclado y los datos de los ratones no los lee.

Les doy la dirección para que descarguen el proyecto.

http://mx.geocities.com/mverastegui/descarga/ratonvcl11.zip

La aplicación, muestra los dispositivos de entrada, que estan conectados a la PC.

El unico detalle que me falta, es que realizé la lectura de los ratones cuando no este activa la aplicacion (minimizada, sin el enfoque),
y cuando quitas, o añades un raton, ya que si lo corres por ejemplo
tienes 1 raton, y te sales, agregas un segundo y ejecutas la aplicacion, el
2do, no lo detecta, mas sin embargo windows, si lo hace.

El programa te lo detecta, solo cuando has reiniciado la PC y tienes los 2 ratones conectados.

Pregunta ¿Tendra que ver con la deteccion poner y quitar dispositivos?
o ¿de que manera actualizo dicha lista?

Alguna sugerencia?

Muchas gracias, seguire intentando.
Los mantendré informados.
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Ya detecto en segundo plano, los ratones. Responder citando

Hola Amigos.
Hasta ahora tuve oportunidad de decirles, que ya
puede leer los ratones en segundo plano, pensé que era dificil, era
cuestion de leer bien la documentación, de Microsoft.

Bueno, modificación es donde antes de registrar los dispositivos que vas a leer, el valor de rid.dwFlags debe tener el siguiente valor RIDEV_INPUTSINK. de la siguiente forma se muestra el extracto.


Código:
 
...
#define RIDEV_INPUTSINK 0x00000100
 ....
        RAWINPUTDEVICE Rid[1];
    ...
    Rid[0].usUsagePage = 0x01;
    Rid[0].usUsage = 0x02;
    Rid[0].dwFlags =RIDEV_INPUTSINK;
    Rid[0].hwndTarget = (HWND)this->Handle;  //Form1->Handle;
   
    if(rid.RegisterRawInputDevices_f(Rid, 1, sizeof (Rid [0])) == FALSE) 
....


Este parametro te permite recibir los mensaje de los ratones, aun que se encuentre en segundo plano tu aplicación.
Claro, como se muestra en el extracto de código tenemos que definir
RIDEV_INPUTSINK en nuestro programa.

pueden probar, con el proyecto que se encuentra en el penultimo mensaje que he enviado RatonVCL11.zip

Muchas gracias. Seguimos en contacto.
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Nuevo enlace Responder citando

Direccion Anterior de Ratonvcl7
http://mx.geocities.com/mverastegui/descarga/ratonvcl7.zip
nueva
http://dreamsoftmx.yolasite.com/resources/descargas/ratonvcl7.zip

Direccion anterior de ratonvcl11
http://mx.geocities.com/mverastegui/descarga/ratonvcl11.zip

Nueva
http://dreamsoftmx.yolasite.com/resources/descargas/ratonvcl11.zip
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.