Página 1 de 1
Cómo recuperar el foco después de execute ()
Publicado: Mié Mar 31, 2010 3:52 pm
por emeasoft
Por favor:
Cuando uso Execute ( "C: TEF TEF.EXE"), la TEF.EXE se minimiza
en la bandeja del sistema, pero mi aplicación pierde el foco.
¿Cómo devolver el foco a mi aplicación después de Execute()?
Esto no funciona:
Execute ( "C: TEF TEF.EXE")
::oForm:SetFocus()
o:
LOCAL cState:=::oForm:SaveState()
Execute ( "C: TEF TEF.EXE")
::oForm:RestoreState(cState)
o:
Execute ( "C: TEF TEF.EXE")
SetActiveWindow( ::Handle )
Gracias por su ayuda.
Saludos!
Mário Angelini
www.eMeAsOfT.com
http://emeasoft.blogspot.com/
http://twitter.com/emeasoft
Cómo recuperar el foco después de execute ()
Publicado: Mié Mar 31, 2010 9:16 pm
por NoAccount
Mario,
Seguramente sea un problema de 'timing'. Intente realizar un post message
del tipo WM_SETFOCUS sobre el form principal. Si ello no funciona deberá
utilizar posiblemente un timer que lo único que haga sea reestablecer el
foco y luego destruirse.
Un saludo
--
Ignacio Ortiz de Zúñiga
Xailer team
http://www.xailer.com
http://www.xailer.info
"Mário Angelini" <
mario@emeasoft.com.br> escribió en el mensaje
news:4bb353ae$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Por favor:
>
> Cuando uso Execute ( "C: TEF TEF.EXE"), la TEF.EXE se minimiza
> en la bandeja del sistema, pero mi aplicación pierde el foco.
> ¿Cómo devolver el foco a mi aplicación después de Execute()?
>
> Esto no funciona:
>
> Execute ( "C: TEF TEF.EXE")
> ::oForm:SetFocus()
>
> o:
>
> LOCAL cState:=::oForm:SaveState()
> Execute ( "C: TEF TEF.EXE")
> ::oForm:RestoreState(cState)
>
>
> o:
> Execute ( "C: TEF TEF.EXE")
> SetActiveWindow( ::Handle )
>
> Gracias por su ayuda.
>
> Saludos!
> Mário Angelini
>
www.eMeAsOfT.com
>
http://emeasoft.blogspot.com/
>
http://twitter.com/emeasoft
>
>
Cómo recuperar el foco después de execute ()
Publicado: Jue Abr 01, 2010 3:44 pm
por emeasoft
Ignacio:
Yo no entendí como hacer esto.
¿Podria explicarme mejor?
Hice la prueba:
MsgInfo(1)
Execute ( "C: TEF TEF.EXE")
MsgInfo(2) <-pierde el foco
Mário
Cómo recuperar el foco después de execute ()
Publicado: Jue Abr 01, 2010 5:24 pm
por NoAccount
Mario,
oMyForm:PostMsg( WM_SETFOCUS )
O
WITH OBJECT TTimer():New( oMyForm )
:nInterval := 1000
:OnTimer := {|oSender| oMyForm:SetFocus(), oSender:End() }
:lEnabled := .T.
:Create()
:Enabled()
END WITH
Regards,
--
Ignacio Ortiz de Zúñiga
Xailer team
http://www.xailer.com
http://www.xailer.info
"Mário Angelini" <
mario@emeasoft.com.br> escribió en el mensaje
news:4bb4a34f$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ignacio:
> Yo no entendí como hacer esto.
> ¿Podria explicarme mejor?
>
> Hice la prueba:
>
> MsgInfo(1)
> Execute ( "C: TEF TEF.EXE")
> MsgInfo(2) <-pierde el foco
>
> Mário
Cómo recuperar el foco después de execute ()
Publicado: Jue Abr 01, 2010 5:25 pm
por NoAccount
Sobra el último Enabled()
Saludos
--
Ignacio Ortiz de Zúñiga
Xailer team
http://www.xailer.com
http://www.xailer.info
"Ignacio Ortiz de Zúñiga" <
NoAccount@xailer.com> escribió en el mensaje
news:[email=4bb4baac@svctag-j7w3v3j....]4bb4baac@svctag-j7w3v3j....[/email]
> Mario,
>
> oMyForm:PostMsg( WM_SETFOCUS )
>
> O
>
> WITH OBJECT TTimer():New( oMyForm )
> :nInterval := 1000
> :OnTimer := {|oSender| oMyForm:SetFocus(), oSender:End() }
> :lEnabled := .T.
> :Create()
> :Enabled()
> END WITH
>
> Regards,
>
> --
> Ignacio Ortiz de Zúñiga
> Xailer team
>
http://www.xailer.com
>
http://www.xailer.info
>
> "Mário Angelini" <
mario@emeasoft.com.br> escribió en el mensaje
> news:4bb4a34f$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ignacio:
>> Yo no entendí como hacer esto.
>> ¿Podria explicarme mejor?
>>
>> Hice la prueba:
>>
>> MsgInfo(1)
>> Execute ( "C: TEF TEF.EXE")
>> MsgInfo(2) <-pierde el foco
>>
>> Mário
>
>
Cómo recuperar el foco después de execute ()
Publicado: Jue Abr 08, 2010 5:13 pm
por emeasoft
Ignacio:
Nada de lo que usted sugirió trabajado.
He encontrado la siguiente solución:
Application:lBusy:=.T.
Execute ( "C: TEF TEF.EXE")
Application:lBusy:=.F.
::oForm:SetFocus()
Descubrí después de numerosos intentos de otros por casualidad.
No puedo explicar por qué funciona así.
Mário
Cómo recuperar el foco después de execute ()
Publicado: Vie Abr 09, 2010 9:37 am
por ignacio
Mario,
el Timer debería haber funcionado en cualquier caso. Pero bueno, si ya lo
tiene andando, me alegro.
Un saludo
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer/Xailer team]
http://www.xailer.com
http://www.xailer.info
"Mário Angelini" <
mario@emeasoft.com.br> escribió en el mensaje de
noticias:4bbdf2c1$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ignacio:
> Nada de lo que usted sugirió trabajado.
> He encontrado la siguiente solución:
>
> Application:lBusy:=.T.
> Execute ( "C: TEF TEF.EXE")
> Application:lBusy:=.F.
> ::oForm:SetFocus()
>
>
> Descubrí después de numerosos intentos de otros por casualidad.
> No puedo explicar por qué funciona así.
>
>
> Mário
Cómo recuperar el foco después de execute ()
Publicado: Vie Jul 23, 2010 8:18 pm
por emeasoft
Boa tarde
A título de colaboração, descobrimos, depois de muitas pesquisas e tentativas,
como fazer para recuperar o foco
da aplicação, no caso de usar chamadas para aplicaçíµes externas, muito
usado no Brasil, para aplicaçíµes com TEF discado (pagamento de cartão de
crédito/débito ou consulta de cheque pela internet).
Se o foco não voltar para a aplicação -- faz parte do roteiro pelas bandeiras (Redecard, Visanet, Amex....) -- não é possível homologar o aplicativo.
LOCAL nHandle:=GetForegroundWindow() //
http://http://bit.ly/1fnbZJ
... ROTINAS EXTERNAS
SetForegroundWindow(nHandle) //
http://bit.ly/1fnbZJ
ou apenas
... ROTINAS EXTERNAS
SetForegroundWindow(::Handle) //
http://bit.ly/1fnbZJ