Fórum Urgente - Simular clique do mouse #168963
11/07/2003
0
Estou com o sequinte problema:
Estou desenvolvento para meus sistemas a integração com a solução TEF
quando ativo o utilitário através do ´winexec´ o meu formulário perde o foco já tentei utilizar PostMessage com TWinControl(Ctrl) mas não funciona, mas quando clico no forme com o mouse o foco retorna. alguem sabe como fazer.
Desde já agradeco.
Marco
Estou desenvolvento para meus sistemas a integração com a solução TEF
quando ativo o utilitário através do ´winexec´ o meu formulário perde o foco já tentei utilizar PostMessage com TWinControl(Ctrl) mas não funciona, mas quando clico no forme com o mouse o foco retorna. alguem sabe como fazer.
Desde já agradeco.
Marco
Marcotema
Curtir tópico
+ 0
Responder
Posts
11/07/2003
Carnette
Nunca testei...
{ *** Mouse *** }
procedure MouseClick(const Duration: Word);
var
Win: HWnd;
Pt: TPoint;
Msg: TMsg;
FlagMouseDown, FlagMouseUp: DWord;
begin
{ Se os botões estiverem invertidos... }
if MouseSwappedButtons then begin
FlagMouseDown := MOUSEEVENTF_RIGHTDOWN;
FlagMouseUp := MOUSEEVENTF_RIGHTUP;
end else begin; { Se os botões estiverem normais... }
FlagMouseDown := MOUSEEVENTF_LEFTDOWN;
FlagMouseUp := MOUSEEVENTF_LEFTUP;
end;
{ Obtém o handle da janela que está sob o cursor }
Windows.GetCursorPos(Pt);
Win := Windows.WindowFromPoint(Pt);
{ Inicia o click }
mouse_event(FlagMouseDown, 0, 0, 0, 0);
{ Processa as mensagens do mouse pertencentes à janela sob o cursor }
while PeekMessage(Msg, Win, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE) do
DispatchMessage(Msg);
Sleep(Duration);
{ Conclui o click }
mouse_event(FlagMouseUp, 0, 0, 0, 0);
end;
{ *** Mouse *** }
procedure MouseClick(const Duration: Word);
var
Win: HWnd;
Pt: TPoint;
Msg: TMsg;
FlagMouseDown, FlagMouseUp: DWord;
begin
{ Se os botões estiverem invertidos... }
if MouseSwappedButtons then begin
FlagMouseDown := MOUSEEVENTF_RIGHTDOWN;
FlagMouseUp := MOUSEEVENTF_RIGHTUP;
end else begin; { Se os botões estiverem normais... }
FlagMouseDown := MOUSEEVENTF_LEFTDOWN;
FlagMouseUp := MOUSEEVENTF_LEFTUP;
end;
{ Obtém o handle da janela que está sob o cursor }
Windows.GetCursorPos(Pt);
Win := Windows.WindowFromPoint(Pt);
{ Inicia o click }
mouse_event(FlagMouseDown, 0, 0, 0, 0);
{ Processa as mensagens do mouse pertencentes à janela sob o cursor }
while PeekMessage(Msg, Win, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE) do
DispatchMessage(Msg);
Sleep(Duration);
{ Conclui o click }
mouse_event(FlagMouseUp, 0, 0, 0, 0);
end;
Responder
Gostei + 0
11/07/2003
Marcotema
Obrigado pela dica, vou testar, mas resolvi de outra maneira
mandando a aplicação para primeiro plano(frente)
mandando a aplicação para primeiro plano(frente)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)