Jump to content
Fórum Script Brasil
  • 0

Função Findwindow


Paulo Nobre
 Share

Question

....
S:THandle
.....
S := FindWindow(nil, 'Semelhança de triângulos');
...... 
If S>0 Then SendMessage(S,WM_CLOSE,0,0);

Uso a idéia do código acima para fechar uma janela.

Gostaria de saber o seguinte:

1) O significado da variável nil do findexist, naquela posição.

2) Quais seriam outros parâmetros que teria para o lugar ocupado por nil, com algum exemplo se possível?

3) Quando se usa a função FindWindowsEx, e qual diferença para a anterior ,FindWindow?

4) Na função SendMessage, o que significam os parâmetros (dois últimos)0,0?

5) Quais outros valores poderiam ocupar o lugar deles, se possível com algum exemplo?

Abusei? :P

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0
1) O significado da variável nil do findexist, naquela posição.

FindWindow('Nome da Classe', 'Nome da Janela');

Então como você está pegando o handle da janela pela classe, você não precisa estipular o nome da janela, e se coloca nil porque o tipo é PChar, se fosse String seria ''

2) Quais seriam outros parâmetros que teria para o lugar ocupado por nil, com algum exemplo se possível?

O nome da janela, exemplo

FindWindow('SciCalc', 'Calculadora');

Não se faz diferenciação de maiúscula pra minúscula então FindWindow('sciCAlC', 'calculaDoRA') da na mesma.

Normalmente não se coloca o nome da Janela, porque só se colocaria no caso de mais janelas ter a mesma classe, o que é

pouco provável, exemplo:

Você tem um form que se chama Form1 e a classe seria TForm1, e o nome da Janela seria "Cadastro" e também você tem

em outra aplicação onde a mesma pode ser aberta junto com o programa, um outro form com a classe TForm1 mas o nome

da janela é Backup, ai sim teria que especificar o nome da janela...

3) Quando se usa a função FindWindowsEx, e qual diferença para a anterior ,FindWindow?

FindWindowEx se usa pra pegar janelas dentro de janelas (Child).

exemplo pra pegar o handle do relógio do Windows...

var

TrayWnd, TrayNWnd, ClockWnd: HWND;

begin

TrayWnd := FindWindow('Shell_TrayWnd', nil); -> Barra do menu Iniciar

TrayNWnd := FindWindowEx(TrayWnd, 0, 'TrayNotifyWnd', nil); -> Janela onde está o relógio e os ícones do lado dele

ClockWnd := FindWindowEx(TrayNWnd, 0, 'TrayClockWClass', nil); -> Relógio

4) Na função SendMessage, o que significam os parâmetros (dois últimos)0,0?

Os dois últimos parâmetros são usados pra passar informações adicionais...

5) Quais outros valores poderiam ocupar o lugar deles, se possível com algum exemplo?

exemplo, você vai mandar uma mensagem ao seu aplicativo

const

WM_MYMSG = WM_APP + 0588; -> Sua mensagem

MINIMIZE = 10; -> Adicional

CLOSE = 11; -> Adicional

SendMessage(FindWindow('Seila', nil), WM_MYMSG, MINIMIZE, 0);

ai quando você recebe no aplicativo, você pode fazer várias ações, conforme o valor de WParam e LParam exemplo

if Message.Msg = WM_MYMSG then

case Message.WParam of

MINIMIZE: Application.Minimize;

CLOSE: Application.Close;

end;

rsr talvez não seja o melhor exemplo mais espero que de pra você entender

abraços

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...