Desfazer Minimizar Tudo!!!
Tenho uma aplicação para lan-house, onde, o proprietário informa um parametro chamado ´Aviso_Antes´ que quando ativado o meu sistema marca o tempo que ele indicou para avisar o cliente que seus créditos estão acabando...
só que, quando chega nesse tempo em minizo tudo usando o código abaixo:
e depois mostro a tela de aviso, o problema que eu gostaria de quando o cliente clicasse no botão fechar que tenho na minha tela de aviso, ele voltasse tudo novamente, semelhante ao recurso do windows ´Mostrar Área de trabalho´ quando vc clica nele uma vez ele minimiza tudo, quando clica novamente ele volta. Como faço para testar isso? :roll:
só que, quando chega nesse tempo em minizo tudo usando o código abaixo:
procedure MinimizaTudo; begin keybd_event(VK_LWIN, 0, 0, 0); keybd_event(Ord(´M´), 0, 0, 0); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0); end;
e depois mostro a tela de aviso, o problema que eu gostaria de quando o cliente clicasse no botão fechar que tenho na minha tela de aviso, ele voltasse tudo novamente, semelhante ao recurso do windows ´Mostrar Área de trabalho´ quando vc clica nele uma vez ele minimiza tudo, quando clica novamente ele volta. Como faço para testar isso? :roll:
Paullsoftware
Curtidas 0
Respostas
Marco Salles
10/03/2006
[b:8cd1ec76ba]geralmete application.restore Resolve[/b:8cd1ec76ba]
GOSTEI 0
Paullsoftware
10/03/2006
geralmete application.restore Resolve
certo, mais isso não seria apenas para minha aplicação, e as outras janelas? :roll:
GOSTEI 0
Marco Salles
10/03/2006
Citação:
geralmete application.restore Resolve
certo, mais isso não seria apenas para minha aplicação, e as outras janelas?
Ha entendi... então amigo PaullSoftware , a resposta esta mais perto do que voce imagina.
[b:bf65ff8410]o problema que eu vejo , no seu caso e o seguinte:[/b:bf65ff8410]
:cry: :cry: :cry:
[b:bf65ff8410]Quando voce minimiza as todas as janelas , voce logo abre uma outra janela , contendo a mensagem...Certo[/b:bf65ff8410]
:?: :?: :?: :?:
e esta etapa , para mim , não ficou clara.. Não da para saber como voce exibe esta mensagem , se é atraves de um formuário , se é atraves de um showmessage etcc..
:lol: :lol:
[b:bf65ff8410]Aonde eu quero chegar com tudo isso[/b:bf65ff8410] :?: :?: :?:
Quero , dizer que o seu problema , esta mais perto da solução do que se imagina , mas por outro lado tem que se conhecer o mecanismo que voce faz , nesse processo de fechar janela e abrir janela de mensagem
[b:bf65ff8410]Porque eu estou dizendo isso[/b:bf65ff8410] :?: :?:
:idea: :idea: :idea:
Porque muitos sabem que para minimizar voce pode fazer assim :
:arrow:
keybd_event(VK_LWIN, 0, 0, 0); keybd_event(Ord(´D´), 0, 0, 0); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
[b:bf65ff8410]repare que uso [color=blue:bf65ff8410]´D´ [/color:bf65ff8410]ao inves De [color=darkblue:bf65ff8410]´M´[/color:bf65ff8410][/b:bf65ff8410]
ou assim :
uses ShlObj; / /No site se encontra esta dica mas se refere a uses ShlObj //que para esse caso não é a correta procedure Shell_MinimizeAll; var Shell : OleVariant; begin Shell := CreateOleObject(´Shell.Application´) ; Shell.MinimizeAll; end;
:idea: :idea: :idea:
[b:bf65ff8410][color=darkred:bf65ff8410]So que o que poucos sabem , é que o conjunto de instruçoes para Maximinizar e também o [color=darkblue]mesmo[/color:bf65ff8410] que para minimizar[/color][/b:bf65ff8410]
keybd_event(VK_LWIN, 0, 0, 0); keybd_event(Ord(´D´), 0, 0, 0); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
[b:bf65ff8410]e alem disso , isto é equivalente a apertar a tecla do [color=darkblue:bf65ff8410][b]Windows + ´D´ [/b:bf65ff8410][/color:bf65ff8410][/b], :arrow: e se tiver uma so janela aberta , este comando serve para [b:bf65ff8410]Minimizar[/b:bf65ff8410] e :arrow: se todas ou alguma janela estiver minimizada , este comando serve para[b:bf65ff8410] maximizar[/b:bf65ff8410]...
:wink: :wink:
Hora . de posse destas informaçoes valiosas e acredito que seu problema esta 99¬ resolvido.. So não da para eu resolve-lo , porque não tenho todo o processo de minimização e aparecemento da janela mensagem, como e quando isto ocorre etccc..
Agora se pudesse enviar uma mensagem sem que esta fosse uma janela , ai estaria tudo resolvido...
Não sei se esta ultima idéia tem procedencia , acredito que deva ter , mas eu não me lembro de nada parecido
[b:bf65ff8410][color=darkred:bf65ff8410]e não esqueça caso tentar resolver com esta linha de raciocineo de usar o ´D´ ao Inves do ´M´, tanto para minimizar , como para Maximizar[/color:bf65ff8410][/b:bf65ff8410]
boa sorte...
GOSTEI 0
Paullsoftware
10/03/2006
Valeu Marcos, foi mau não ter sido claro o bastante na primeira vez, mis valeu pelo toque... eu esqueci do Win+D....
só lembrava do win+m :wink:
só lembrava do win+m :wink:
GOSTEI 0
Marco Salles
10/03/2006
[b:5f8c2b2862]Correção[/b:5f8c2b2862]
:cry: :cry: :cry:
Para minimizar... Disse para usar ShlObj e ainda disse que ShlObj qu não é correta para esta dica
[b:5f8c2b2862]O Certo e usar ComObj; e deveria ter escrito assim :[/b:5f8c2b2862]
Uses ComObj; e não uses ShlObj
:cry: :cry: :cry:
Para minimizar... Disse para usar ShlObj e ainda disse que ShlObj qu não é correta para esta dica
[b:5f8c2b2862]O Certo e usar ComObj; e deveria ter escrito assim :[/b:5f8c2b2862]
uses [b:5f8c2b2862]ComObj;[/b:5f8c2b2862] /
/No site se encontra esta dica mas se refere a [b:5f8c2b2862]uses ShlObj [/b:5f8c2b2862]
//que para esse caso não é a correta
procedure Shell_MinimizeAll;
var
Shell : OleVariant;
begin
Shell := CreateOleObject(´Shell.Application´) ;
Shell.MinimizeAll;
end;
GOSTEI 0
Paullsoftware
10/03/2006
aproveitando as soluções impostas por vc Marcos, tem com saber se as janelas estão minimizadas?
tipo, antes da minha tela de login ser aberta faço...
MinimizaTudo;//daí vai minimizar todas as janelas, mais, tem como saber se elas já estão minimizadas? :lol:
tipo, antes da minha tela de login ser aberta faço...
procedure MinimizaTudo; begin keybd_event(VK_LWIN, 0, 0, 0); keybd_event(Ord(´D´), 0, 0, 0); keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0); end;
MinimizaTudo;//daí vai minimizar todas as janelas, mais, tem como saber se elas já estão minimizadas? :lol:
GOSTEI 0
Adriano Santos
10/03/2006
[quote:0ee5e3dfed=´Marco Salles´]
[/quote:0ee5e3dfed]
Caramba [b:0ee5e3dfed]Marcos[/b:0ee5e3dfed] muito bem proposta a solução, achei loko isso. Não sabia que dava pra fazer assim.
uses ComObj; / /No site se encontra esta dica mas se refere a uses ShlObj //que para esse caso não é a correta procedure Shell_MinimizeAll; var Shell : OleVariant; begin Shell := CreateOleObject(´Shell.Application´) ; Shell.MinimizeAll; end;
[/quote:0ee5e3dfed]
Caramba [b:0ee5e3dfed]Marcos[/b:0ee5e3dfed] muito bem proposta a solução, achei loko isso. Não sabia que dava pra fazer assim.
GOSTEI 0
Marco Salles
10/03/2006
eu não posso levar o merito desta apresentação....Afinal este método de minimizar foi levantado brilhantemente pelo genial cebikyn no tópico.. Por falar nele , ele esta sumido e sempre nos faz muita falta
http://forum.devmedia.com.br/viewtopic.php?t=47113&highlight=shell+createoleobject+shell+application&sid=79448e4a7699888db918a5837e37f46e
infelismente acho que ele descuidou e colocou uses ShlObj ao inves da uses ComObj....
http://forum.devmedia.com.br/viewtopic.php?t=47113&highlight=shell+createoleobject+shell+application&sid=79448e4a7699888db918a5837e37f46e
infelismente acho que ele descuidou e colocou uses ShlObj ao inves da uses ComObj....
GOSTEI 0
Adriano Santos
10/03/2006
É verdade, bem lembrado ele tá sumido msmo
GOSTEI 0