Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) [Dúvida] Simples (eu acho o.o)


Ritmi

Pergunta

Olá.

Eu preciso de uma solução pra pegar o nome da janela ativa no momento e escrever em um determinado arquivo .txt.

Pesquisei e o jeito aconselhável de se fazer isso e parece que é usando um comando de uma "API do Windows": GetWindowText.

Tudo bem até aí?... Pra mim não.

Não fazia idéia do que era API, então pesquisei. Entendi mais ou menos que existem xxxxxxx API's do Windows que fazem praticamente qualquer coisa, que essas API's se encontram em dll's tipo kernel32 ou user32, que elas são um conjunto de comandos... Coisas assim... Mas como sempre, as informações sobre programação são vagas e em uma linguagem que somente quem já programa vai entender.

int GetWindowText(

HWND hWnd, //handle da janela ou do controle com texto.

LPTSTR lpString, //endereço do buffer de leitura.

int nMaxCount //número máximo de caracteres que devem ser copiados

);

Peguei esse código e dei uma olhadinha. No começo achei meio estranho. Depois achei mais estranho ainda.

Eu não faço a mínima idéia de como traduzir isso, como é que esse comando vai saber qual é o arquivo em que ele vai salvar o nome da janela? Será que ele faz isso mesmo? Eu substituo aquelas "palavras" na frente das maiúsculas? Se sim, pelo quê?

Muitas questões surgiram... Como traduzir um comandinho desses...?

Deve ser tão simples... 4 linhas apenas, mas parecem letras aleatórias pra mim. A única coisa que eu entendi ali foi o MaxCount :P

Gostaria que alguém me ajudasse, ou pelo menos que tentasse. E caso seja algo muito idiota a ponto de ignorar, me diga onde tá o erro :(

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Cara como imagino que você deva ser novo em programação para resolver seu caso de forma rápida.

crie uma variável global e coloque nela e toda vez que um forme for a cessado ele grave o nome nela., ai quando você abrir o form você só lê o conteúdo da variável;

Mas eu aconselho da uma aprofundada em api do windows, por que é uma coisa chata mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0
Eu preciso de uma solução pra pegar o nome da janela ativa no momento e escrever em um determinado arquivo .txt.

Fica dessa maneira

procedure TForm1.Button1Click(Sender: TObject);
var titulo: string; s : TLabel;
    Arquivo : TextFile;
begin
   setlength( titulo, 255 );
   GetWindowText( GetforegroundWindow, PChar(titulo), 255);
   s.Caption := titulo;
   AssignFile(Arquivo, 'C:\Janelas.Txt');
   Rewrite(Arquivo);
   Writeln(Arquivo, trim(s));
   CloseFile(Arquivo);
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
int GetWindowText(

HWND hWnd, //handle da janela ou do controle com texto.

LPTSTR lpString, //endereço do buffer de leitura.

int nMaxCount //número máximo de caracteres que devem ser copiados

);

Peguei esse código e dei uma olhadinha. No começo achei meio estranho. Depois achei mais estranho ainda.

Eu não faço a mínima idéia de como traduzir isso, como é que esse comando vai saber qual é o arquivo em que ele vai salvar o nome da janela? Será que ele faz isso mesmo? Eu substituo aquelas "palavras" na frente das maiúsculas? Se sim, pelo quê?

Ritmi, se você vai programar em Delphi não vai precisar fazer nenhuma tradução - as principais API's do Windows já estão disponíveis. Já olhou a cláusula uses de qualquer projeto Dephi? Lá sempre aparece Windows e Messages.

Isto que você encontrou é a definição da função (header) e que está escrita em C++ linguagem utilizada pela Microsoft para a codificação. Quando quiser fazer qualquer busca com funções de API do Windows no Google, inclua sempre a palavra Delphi na busca - certamente haverão páginas com exemplos em delphi do uso da tal função.

Se você programa em Delphi 7, poderá achar facilmente toda a referência às API's do Windows através da 3ª opção do menu Help, chama-se Windos SDK. Em outras versões você também deve achar, mas talvez não esteja tão explícita quanto nesta.

Ficam algumas dicas:

- o tipo de dados HWND é uma abreviatura de Handle Window e você irá encontrar outros tipos que começam com o H (o delphi tem um equivalente - THande, que é um Integer)

- LPTSTR é um ponteiro para string terminada em zero. Aquele LP refere-se a Long Pointer.

Veja com está a declaração da função em Delphi na unit Windows:

function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; stdcall;

Outros tipos de dados que você pode encontrar nas definições das API's do Windows podem ser encontrados aqui (ref. msdn)

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...