1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[vb6] Como manter um form sempre visível

Discussão em 'Programação' iniciada por WinAce_Boy, 5 de Janeiro de 2007. (Respostas: 16; Visualizações: 3793)

  1. WinAce_Boy

    WinAce_Boy Power Member

    Oi people!
    Boas, estou a construir um programa e gostaria de saber como devo fazer/recorrer a/utilizar/ para manter uma Form sempre mas sempre mesmo por cima de tudo(todas as janelas, programas,etc..).
    Espero anciosamente uma resposta..
    Obrigada pela atenção.. ;)
    Abraços.
     
  2. JomarB

    JomarB Power Member

    No entendo?
    Quieres que lo teu form esteja por cima de tudo? Porque?8|
     
  3. WinAce_Boy

    WinAce_Boy Power Member

    Se essa pergunta for para te ajudar a explicar-me, tudo bem, se estiveres apenas a fazer comentários, dispenso-os.
    Boa tarde.
     
  4. Nazgulled

    Nazgulled Power Member

  5. pipadias

    pipadias Power Member

    Isso chama-se "On Top", e só precisas de saber algumas coisas de API para isso :) é muito simples, e como está no site acima, no programmingtalk, não digo mais na da :)
     
  6. WinAce_Boy

    WinAce_Boy Power Member

    Boas,
    Isso ajudou pessoal mas o Form fica por baixo do Gestor de Tarefas, e eu gostaria também de saber como pôr o meu Form por cima mesmo mesmo de tudo.. até do Gestor de Tarefas.
    Obrigadão pela ajuda.. Aguardo resposta plz.
     
  7. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Tanto o teu form como o Gestor de Tarefas acabam por "lutar" pelo lugar de topo. Portanto, o resultado é eles comportarem-se como forms normais - o que tem o foco é o que fica por cima.
    Para teres sempre o teu form no topo, podes pôr o código OnTop a correr num timer com um intervalo de, por exemplo, 1000. No entanto, não te aconselho a fazer isso porque às vezes gosto de ter o media player classic ou o task manager mesmo por cima de todos os programas, e ter um que se sobrepusesse a ambos seria, no mínimo, irritante ;) pelo menos dá ao utilizador a opção de escolher "SEMPRE no topo/no topo quando possível/normal" ;)

    Cumprimentos [[[[[[[[]]]]]]]]
    angelofwisdom
     
  8. _Neo__

    _Neo__ Power Member

    função para always on top

    COLOCAR EM MODULO

    Option Explicit

    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

    Function AlwaysOnTop(FrmID As Form, ByVal OnTop As Boolean) As Boolean
    Const SWP_NOMOVE = 2
    Const SWP_NOSIZE = 1
    Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
    Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    If OnTop = True Then
    AlwaysOnTop = SetWindowPos(FrmID.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
    Else
    AlwaysOnTop = SetWindowPos(FrmID.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
    End If
    End Function

    Forma de uso:

    AlwaysOnTop me,true ' mete a form actual sempre visivel
    AlwaysOnTop me,true ' mete a form actual no modo normal
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Considerando que o código acima está correcto (não o verifiquei, mas deve estar :P), terias de usar

    AlwaysOnTop Me, True

    num timer ;) será tão simples quanto isso.
    Penso que o _Neo_ queria, na segunda parte, dizer "False" ;)

    Cumps [[[[[[]]]]]]
    angelofwisdom
     
  10. WinAce_Boy

    WinAce_Boy Power Member

    Obrigadíssimo, puz a janela maximizada e sem border... LOL!!!
    Não pude fazer nada para a fechar, tentei de tudo o que sabia.. Era mesmo isto que eu queria.. ;) Mais uma vez.. Obrigadão pessoal ;)
     
  11. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    WinAce_Boy.... tu não fizeste o que eu acho que fizeste pois não? =| meteste a tua janela a ocupar o ecrã todo???????? Sabes o irritante que isso é, ou até que ponto isso é considerado, pelo menos, riskware?
    Qual é o objectivo do programa, sff?
     
  12. WinAce_Boy

    WinAce_Boy Power Member

    Define riskware..
    Irritante em que ponto de vista?
     
  13. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Depende do objectivo do teu programa.
    Geralmente definindo, riskware é qualquer tipo de programa que tem atitudes para com o utilizador ou para com o computador que não são propriamente seguras. Por exemplo, um keylogger é malware porque captura as teclas escritas e grava-as, para depois mostrar a outra pessoa. Já um programa que, quando escreves "/morada" automaticamente apaga o que acabaste de escrever para escrever a tua morada, apesar de ser útil, é considerado riskware, porque captura as teclas. O que faz com elas é indiferente. É riskware e pronto.

    Ao sobrepor-se a tudo o que está no computador, o teu programa é automaticamente catalogado de riskware. Mais uma vez pergunto, qual é o objectivo em fazer isso?
     
  14. WinAce_Boy

    WinAce_Boy Power Member

    Hey, não te preocupes man, não sou dessas mentes preversas dude, só estou a experimentar o seguinte:

    Quando o user abre um ficheiro o meu programa abre-se e fiqua sobreposto a tudo, depois equanto o user não puser a password correcta, ele não o deixa ver nada.
     
  15. _Neo__

    _Neo__ Power Member

    oooppps copy paste editei o comentário mas não editei o codigo :p

    tens razão para tirar o ontop é

    AlwaysOnTop Me, false

    edit: não é preciso por num timer é só preciso chamar uma vez para activar
     
    Última edição: 9 de Janeiro de 2007
  16. WinAce_Boy

    WinAce_Boy Power Member

    Resumindo, riskware quer dizer perigoso?
     
  17. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Resumindo, riskware quer dizer que tem comportamentos de risco ;) como disse, tanto podes capturar teclas para lhes atribuir funções, o que não é nada malware, como podes programar um keylogger - e já é malware. Agora, o acto de capturar teclas é um comportamento "estranho", e por isso o programa já é considerado riskware.
     

Partilhar esta Página