Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.delphi
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 17-06-2004, 15:34:10
Sonic
 
Mensajes: n/a
Predeterminado Problema con los mensajes de windows

Buenas, a ver si alguien puede echarme una mano con un problema q m trae de
cabeza...

Estoy desarrollando una aplicacion en modo consola y necesito que reciba
mensajes de una DLL.



- En la DLL envío los mensajes del siguiente modo:

PostMessage(HWND_BROADCAST, CM_MI_MENSAJE, wParam, lParam);



- previamente he registrado el mensaje (tanto en la aplicacion de consola
como en la DLL). Lo he hecho asi:

CM_MI_MENSAJE:=RegisterWindowMessage(pchar('MiMens aje'));



- En la aplicacion de consola, para que pueda recibir mensajes, he creado un
HWND (para que windows le permita recibir mensajes). Lo he creado asi:

winhandle:=AllocateHWND(WndProc);



- Y en la aplicacion de consola, tengo un bucle que se dedica a leer los
mensajes que le lleguen, del siguiente modo:

repeat
if PeekMessage(msg, winhandle, 0, 0, PM_REMOVE) then begin
writeln(inttostr(msg.message));
end;
sleep(20); // esto es para que el uso de CPU no se me dispare al 100%
until salir;



- En principio parece que todo me funciona bien, pero a veces (no siempre),
estando la consola en 2º plano, el valor de msg.message devuelto por
PeekMessage es 0 (en vez de CM_MI_MENSAJE). Si entonces pongo la aplicacion
en 1er plano, vuelve a dar valores correctos (y vuelve a dar 0 si la pongo
en 2º plano). Los valores de lParam y wParam son siempre correctos.

¿A que puede ser debido esto? ¿A alguien le ha pasado alguna vez?

No se si alguien podra echarme una mano con esto, pero ya no se k hacer. Le
he dado mil vueltas al codigo, incluso lo he reescrito de nuevo y sigue
igual.

Un saludo!!


Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 17-06-2004, 16:08:35
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

Creo q ya se donde esta el error pero eso m plantea otra cuestion.

imaginemos la siguiente DLL:



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

begin
end.





Si en una aplicacion cargo la DLL y llamo a "proc1" me guardará en valor 1
en "num" y mostrará una ventana de texto con el numero 1.

si despues de eso llamo a "proc2" debería mostrar una ventana de texto que
también tenga el numero 1. ¿verdad?

Pues NO. Resulta que si la aplicacion no esta en primer plano, el numero que
muestra es 0.

¿¿¿¿¿¿¿PORQUE???????

no lo entiendo


Responder Con Cita
  #3 (permalink)  
Antiguo 17-06-2004, 16:08:35
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

Creo q ya se donde esta el error pero eso m plantea otra cuestion.

imaginemos la siguiente DLL:



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

begin
end.





Si en una aplicacion cargo la DLL y llamo a "proc1" me guardará en valor 1
en "num" y mostrará una ventana de texto con el numero 1.

si despues de eso llamo a "proc2" debería mostrar una ventana de texto que
también tenga el numero 1. ¿verdad?

Pues NO. Resulta que si la aplicacion no esta en primer plano, el numero que
muestra es 0.

¿¿¿¿¿¿¿PORQUE???????

no lo entiendo


Responder Con Cita
  #4 (permalink)  
Antiguo 17-06-2004, 16:08:35
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

Creo q ya se donde esta el error pero eso m plantea otra cuestion.

imaginemos la siguiente DLL:



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

begin
end.





Si en una aplicacion cargo la DLL y llamo a "proc1" me guardará en valor 1
en "num" y mostrará una ventana de texto con el numero 1.

si despues de eso llamo a "proc2" debería mostrar una ventana de texto que
también tenga el numero 1. ¿verdad?

Pues NO. Resulta que si la aplicacion no esta en primer plano, el numero que
muestra es 0.

¿¿¿¿¿¿¿PORQUE???????

no lo entiendo


Responder Con Cita
  #5 (permalink)  
Antiguo 17-06-2004, 16:08:35
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

Creo q ya se donde esta el error pero eso m plantea otra cuestion.

imaginemos la siguiente DLL:



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

begin
end.





Si en una aplicacion cargo la DLL y llamo a "proc1" me guardará en valor 1
en "num" y mostrará una ventana de texto con el numero 1.

si despues de eso llamo a "proc2" debería mostrar una ventana de texto que
también tenga el numero 1. ¿verdad?

Pues NO. Resulta que si la aplicacion no esta en primer plano, el numero que
muestra es 0.

¿¿¿¿¿¿¿PORQUE???????

no lo entiendo


Responder Con Cita
  #6 (permalink)  
Antiguo 17-06-2004, 16:08:35
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

Creo q ya se donde esta el error pero eso m plantea otra cuestion.

imaginemos la siguiente DLL:



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

begin
end.





Si en una aplicacion cargo la DLL y llamo a "proc1" me guardará en valor 1
en "num" y mostrará una ventana de texto con el numero 1.

si despues de eso llamo a "proc2" debería mostrar una ventana de texto que
también tenga el numero 1. ¿verdad?

Pues NO. Resulta que si la aplicacion no esta en primer plano, el numero que
muestra es 0.

¿¿¿¿¿¿¿PORQUE???????

no lo entiendo


Responder Con Cita
  #7 (permalink)  
Antiguo 17-06-2004, 16:08:35
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

Creo q ya se donde esta el error pero eso m plantea otra cuestion.

imaginemos la siguiente DLL:



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

begin
end.





Si en una aplicacion cargo la DLL y llamo a "proc1" me guardará en valor 1
en "num" y mostrará una ventana de texto con el numero 1.

si despues de eso llamo a "proc2" debería mostrar una ventana de texto que
también tenga el numero 1. ¿verdad?

Pues NO. Resulta que si la aplicacion no esta en primer plano, el numero que
muestra es 0.

¿¿¿¿¿¿¿PORQUE???????

no lo entiendo


Responder Con Cita
  #8 (permalink)  
Antiguo 17-06-2004, 16:08:35
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

Creo q ya se donde esta el error pero eso m plantea otra cuestion.

imaginemos la siguiente DLL:



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

begin
end.





Si en una aplicacion cargo la DLL y llamo a "proc1" me guardará en valor 1
en "num" y mostrará una ventana de texto con el numero 1.

si despues de eso llamo a "proc2" debería mostrar una ventana de texto que
también tenga el numero 1. ¿verdad?

Pues NO. Resulta que si la aplicacion no esta en primer plano, el numero que
muestra es 0.

¿¿¿¿¿¿¿PORQUE???????

no lo entiendo


Responder Con Cita
  #9 (permalink)  
Antiguo 17-06-2004, 16:11:01
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

CORRECCION DEL CODIGO DEL MENSAJE ANTERIOR :P SORRY
(el problema sigue siendo el mismo)



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

procedure proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc1, proc2;

begin
end.



Responder Con Cita
 
  #10 (permalink)  
Antiguo 17-06-2004, 16:11:01
Sonic
 
Mensajes: n/a
Predeterminado Re: Problema con los mensajes de windows

CORRECCION DEL CODIGO DEL MENSAJE ANTERIOR :P SORRY
(el problema sigue siendo el mismo)



library midll;

uses windows, sysutils;

var num: integer;

procedure proc1;
begin
num:=1;
messagebox(0, pchar(inttostr(num)), '', 0);
end;

procedure proc2;
begin
messagebox(0, pchar(inttostr(num)), '', 0);
end;

exports proc1, proc2;

begin
end.



Responder Con Cita
Respuesta


Herramientas
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
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema al enviar mensajes jose Newsgroup microsoft.public.es.outlookexpress 15 06-03-2008 20:53:04
Problema con los mensajes enviados Diego Navarro Newsgroup microsoft.public.es.outlook 2 12-12-2007 12:44:31
Problema al recibir mensajes. Luis Newsgroup microsoft.public.es.outlookexpress 0 09-04-2007 20:02:03
Problema para ver Mensajes desde OWA Gonzalo Vallejos Newsgroup microsoft.public.es.espanol.soporte.entre.usuarios.exchange 0 08-11-2005 14:12:20
Problema Mensajes zitro Newsgroup microsoft.public.es.office97 0 21-11-2003 08:26:01





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.