Desfazer Minimizar Tudo!!!

10/03/2006

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:
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

Respostas

10/03/2006

Marco Salles

[b:8cd1ec76ba]geralmete application.restore Resolve[/b:8cd1ec76ba]


Responder Citar

10/03/2006

Paullsoftware

geralmete application.restore Resolve

certo, mais isso não seria apenas para minha aplicação, e as outras janelas? :roll:


Responder Citar

10/03/2006

Marco Salles

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...


Responder Citar

11/03/2006

Paullsoftware

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:


Responder Citar

11/03/2006

Marco Salles

[b:5f8c2b2862]Correção[/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;



Responder Citar

13/03/2006

Paullsoftware

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...

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:


Responder Citar

13/03/2006

Adriano Santos

[quote:0ee5e3dfed=´Marco Salles´]


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.


Responder Citar

13/03/2006

Marco Salles

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....


Responder Citar

13/03/2006

Adriano Santos

É verdade, bem lembrado ele tá sumido msmo


Responder Citar