Fórum SendMessage com problema no Windows 9x (nos demais está OK) #301472
01/11/2005
0
Tenho o seguinte código:
[b:acf4d1e33d]procedure Envia;
var
CDS: TCopyDataStruct;
DebugWin: hWnd;
begin
DebugWin := FindWindow(´TForm1´, nil); //TFmDebug : Classe do Form ( T + Nome do form)
CDS.cbData := Length(´1´) + 4;
CDS.dwData := 0;
CDS.lpData := PChar(´1´+#0); //0 é necessário para indicar fim da mensagem pra quem recebe a mensagem;
[color=blue:acf4d1e33d]SendMessage(DebugWin, WM_COPYDATA, WPARAM(Application.Handle), LPARAM(@CDS));[/color:acf4d1e33d]
end;[/b:acf4d1e33d]
Meu problema é que o código acima FUNCIONA PERFEITAMENTE no Windows XP e no Windows 2000 mas, na última linha (a em azul no código acima) dá pau no Windows 98. O interessante é que o aplicativo que recebe a mensagem a recebe normalmente pois ele exibe a mensagem mas sempre que executo no Windows 98 dá pau. Alguma sugestão? Detalhe: essa procedure é chamada de dentro de uma DLL. A DLL foi compilada no Windows XP e depois no Windows 98 e problema continua.
Willian
Curtir tópico
+ 0Posts
01/11/2005
Nildo
Coloca aqui o código do momento em que a aplicação recebe o wm_copydata!
Um abraço
Gostei + 0
03/11/2005
Willian
procedure TForm1.WMCopyData(var Message: TWMCopyData); var Dados : TCopyDataStruct; ConteudoMensagem : PChar; Contador : Integer; Mensagem : String; begin Dados := Message.CopyDataStruct^; ConteudoMensagem := Dados.lpData; Mensagem := ´´; Contador := 1; While ConteudoMensagem[Contador] <> 0 do Begin Mensagem := Mensagem + ConteudoMensagem[Contador]; Contador := Contador + 1; End; ShowMessage(Mensagem); end;
Sendo que a declaração ficou:
type TForm1 = class(TForm) procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
Se puder me ajudar, agradeço desde já.
Valeu.
Gostei + 0
03/11/2005
Nildo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)