Array
(
)

Desfazer Minimizar Tudo!!!

Paullsoftware
   - 10 mar 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:
#Código

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:


Marco Salles
   - 10 mar 2006

geralmete application.restore Resolve


Paullsoftware
   - 10 mar 2006


Citação:
geralmete application.restore Resolve

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


Marco Salles
   - 10 mar 2006


Citação:
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.

o problema que eu vejo , no seu caso e o seguinte:



Quando voce minimiza as todas as janelas , voce logo abre uma outra janela , contendo a mensagem...Certo

:?: :?: :?: :?:

Citação:
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:
Aonde eu quero chegar com tudo isso :?: :?: :?:


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

Porque eu estou dizendo isso :?: :?:

:idea: :idea: :idea:
Porque muitos sabem que para minimizar voce pode fazer assim :

:arrow:

#Código

keybd_event(VK_LWIN, 0, 0, 0);
keybd_event(Ord(´D´), 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);


repare que uso ´D´ ao inves De ´M´

ou assim :



#Código


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:
So que o que poucos sabem , é que o conjunto de instruçoes para Maximinizar e também o mesmo que para minimizar[/color]

#Código
keybd_event(VK_LWIN, 0, 0, 0);
keybd_event(Ord(´D´), 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);


e alem disso , isto é equivalente a apertar a tecla do Windows + ´D´ , :arrow: e se tiver uma so janela aberta , este comando serve para Minimizar e :arrow: se todas ou alguma janela estiver minimizada , este comando serve para maximizar...

: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

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

boa sorte...


Paullsoftware
   - 11 mar 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:


Marco Salles
   - 11 mar 2006

Correção


Citação:
Uses ComObj; e não uses ShlObj



Para minimizar... Disse para usar ShlObj e ainda disse que ShlObj qu não é correta para esta dica

O Certo e usar ComObj; e deveria ter escrito assim :


Citação:
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;



Paullsoftware
   - 13 mar 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...

#Código

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:


Adriano Santos
   - 13 mar 2006


Citação:


#Código



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;




Caramba Marcos muito bem proposta a solução, achei loko isso. Não sabia que dava pra fazer assim.


Marco Salles
   - 13 mar 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....


Adriano Santos
   - 13 mar 2006

É verdade, bem lembrado ele tá sumido msmo