FindWindow e Memo
22/02/2006
0
Meu código no server:
if sCommand = ´MSG´ then
begin
Try
wnd := FindWindow(nil, ´QCP Mensageiro 1.0´);
if wnd <> 0 then
begin
wnd := FindWindowEx(wnd, 0, PChar(´NxMemo´), nil);
AuxS := LowerCase(EnviadoPor) + ´ diz:´ + #13 + Mensagem + 13;
For i := 1 to Length(s) do
SendMessage(wnd, WM_CHAR, Word(s[i]), 0);
PostMessage(wnd, WM_KEYDOWN , VK_RETURN, 0);
end;
Finally
AThread.Connection.Disconnect;
End;
End;
O problema é que ele não consegue ´achar´ a bendita classe do memo que estou usando... já testei com edit normal, memo normal e tb não funciona... tem algo errado com esse código ???
Plz help me !
tkz
[quote:51cd8333fe=´Moderação´][color=red:51cd8333fe]Título editado por Massuda
Original: ´Sockets me dando uma coça !!!!´[/color:51cd8333fe][/quote:51cd8333fe]
Paulocesar1301
Posts
22/02/2006
Crash
Entao seria ao Inves de Memo1, seria TMemo.
t+
22/02/2006
Paulocesar1301
Alguém tem alguma idéia ?
22/02/2006
Crash
t+
22/02/2006
Paulocesar1301
O NxMemo está em outra aplicação com o nome de MemoMensagens (bem básico!), mas o mesmo não recebe nem texto nem comando de teclado, na verdade... ele nem é encontrado, pois o handle vem zerado !!
22/02/2006
Rafael Gomes
provavelmente o erro esta nessa linha
[b:614aa54048]wnd := FindWindowEx(wnd, 0, [color=red:614aa54048]PChar(´NxMemo´)[/color:614aa54048], nil); [/b:614aa54048]
procure no google pela palavra [b:614aa54048]WinDowse[/b:614aa54048].
este programa tem varios recursos interessantes e pode te ajudar a resolver seu problema.
[]ss
22/02/2006
Nildo
Assim, você não vai conseguir localizar ele pois ele é um Child. Você tem que localizar Child por Child, por exemplo:
hJanela := FindWindow( ´TSeuFormulario´, nil );
hMemo := FindWindowEx( hJanela, 0, ´TMemo´, nil );
dai sim você usa o handle localizado pelo hMemo.
Eu não lembro exatamente de cór os parâmetros dessas APIs mas to com o Delphi fechado, dai num pude testar..
23/02/2006
Paulocesar1301
vou procurar esse tal de ´WinDowse´ pra ver no que dá... vlw!
Se alguém ainda tiver alguma idéia... ou eu mesmo se achar algo nesse ´WinDowse´ do Rafa... eu posto para loucos como eu não terem o mesmo problema !!!
24/02/2006
Paulocesar1301
24/02/2006
Nildo
Porque não tenta o que eu disse?
24/02/2006
Rafael Gomes
[]ss
24/02/2006
Nildo
[]ss[/quote:7abeff7e7c]
Não está, bom, pelo menos ele nao falou se testou ou não o FindWindowEx.
É que o FindWindow funciona assim: ele localiza uma janela que [b:7abeff7e7c]não tenha parent[/b:7abeff7e7c]. Então, se você tem um Memo dentro de um Form, primeiro você deve achar o handle do Form assim:
hForm := FindWindow( ´TSeuForm´, ´Seu formulário´ ); hMemo := FindWindowEx( hForm, 0, ´TNxMemo´, nil );
O FindWindowEx, como eu exemplifiquei, vai localizar uma janela Child. Seu Memo nada mais é do que um Child da janela Pai: O Formulário.
Agora dá para você ter uma idéia do que deve ser feito. Um programinha que pode te ajudar é o WinSpy, vc faz um Drag&Drop de uma imagem dentro dele para a janela que você quer e ele te informa a classe do child e do parent dele. (download: http://www.codeproject.com/threads/winspy.asp e baixe o Demo, tem apenas 20kb)
Qualquer coisa estamos ai
24/02/2006
Rafael Gomes
wnd := FindWindow(nil, ´QCP Mensageiro 1.0´); if wnd <> 0 then begin wnd := FindWindowEx(wnd, 0, PChar(´NxMemo´), nil);
hForm := FindWindow( ´TSeuForm´, ´Seu formulário´ ); hMemo := FindWindowEx( hForm, 0, ´TNxMemo´, nil );
o que eu vi de diferente foi o nil na chamada de [b:932f7c9256]FindWindow[/b:932f7c9256] e o parametro de [b:932f7c9256]FindWindowEx[/b:932f7c9256] que realmente esta incorreto ...
o certo seria como o proprio nildo disse ´TNxMemo´ e nao ´NxMemo´
... agora aproveitando o topico, há algum tempo eu postei algo similar ao conteudo deste topico, mas ninguem se prontificou a ajudar :cry:
tenho uma aplicação x desenvolvida em delphi que deve enviar textos para uma aplicação y que é um emulador de terminais ...
tentei de todas as formas mas sem sucesso ...
abaixo esta a estrutura do emulador ...
[img:932f7c9256]http://www.ellas.com.br/fcunha/est.jpg[/img:932f7c9256]
a janela para qual necessito enviar o texto é [b:932f7c9256]EmuMdiChild[/b:932f7c9256]
sugestoes sao bem vinda!! :lol:
24/02/2006
Nildo
24/02/2006
Nildo
Não.. Eu não consigo manipular componentes que não usam mensagens do Windows
Clique aqui para fazer login e interagir na Comunidade :)