Fórum Problemas com a execução de API #300151

20/10/2005

0

Gostaria de saber quem poderia me ajudar com a execução da rotina FindWindow...
Estou tentando executa-la naum naum obtenho sucesso...
Qdo eu executo de uma maneira dá certo... jah de outra... naum consigo...
O problema eh q preciso das duas maneiras.

Eis a maneira q funciona
HwndPDF := FindWindow(´´, PChar(´AdobeReader-[´+ChangeFileExt(ExtractFileName(AArquivo), ´.pdf´) + ´]´));
Uso esta para obter o handle de uma janela com um documento aberto...

Eis a q naum consigo fazer funcionar...
O handle sempre vem como 0
HwndAcrobat := FindWindow(nil, PChar(´Adobe Reader´));

preciso desta rotina para qdo eu naum tiver nenhum documento aberto. Somente a janela do acrobat...
jah tentei de outras maneiras tb...
Eis algumas delas...

HwndAcrobat := FindWindow(PChar(´Adobe Reader´), PChar(´Adobe Reader´));

HwndAcrobat := FindWindow( PChar(´Adobe Reader´), nil);

em nenhuma obtive sucesso...
se alguem puder me ajudar agradeço muito!


Tiago Malveira

Tiago Malveira

Responder

Posts

20/10/2005

Massuda

Experimente pesquisar o fórum por FindWindow.


Responder

Gostei + 0

21/10/2005

Martins

[quote:e57865c597=´Tiago Malveira´]
HwndPDF := FindWindow(´´, PChar(´AdobeReader-[´+ChangeFileExt(ExtractFileName(AArquivo), ´.pdf´) + ´]´));
Uso esta para obter o handle de uma janela com um documento aberto...

[/quote:e57865c597]

Certo, essa funciona com o doc. aberto e o handle é diferente de zero, blz!

já aqui....
[quote:e57865c597=´Tiago Malveira´]
Eis a q naum consigo fazer funcionar...
O handle sempre vem como 0
HwndAcrobat := FindWindow(nil, PChar(´Adobe Reader´));
[/quote:e57865c597]
Se for mesmo só a janela do Adobe Reader aberta, sem documento o handle deveria ser diferente de zero tb.

[quote:e57865c597=´Tiago Malveira´]
preciso desta rotina para qdo eu naum tiver nenhum documento aberto. Somente a janela do acrobat...
jah tentei de outras maneiras tb...
Eis algumas delas...

HwndAcrobat := FindWindow(PChar(´Adobe Reader´), PChar(´Adobe Reader´));

HwndAcrobat := FindWindow( PChar(´Adobe Reader´), nil);

em nenhuma obtive sucesso...
se alguem puder me ajudar agradeço muito![/quote:e57865c597]

Segundo alguns testes q fiz aqui para encontrar a solução desse seu problema, consegui detectar o seguinte, se estiver aberta apenas a janela do Adobe Reader sem nenhum documento (*.PDF), o Handle informado não é igual a zero e a classe da Janela é [b:e57865c597]AdobeAcrobat[/b:e57865c597], quando vc abre um documento (*.PDF) esse documento assume o handle.

Tratando sua linha

    HwndAcrobat := FindWindow(PChar(´Adobe Reader´), PChar(´Adobe Reader´));


Tente assim:
var
HwndAcrobat: THandle;
begin
   HwndAcrobat := FindWindow(PChar(´AdobeAcrobat´), PChar(´Adobe Reader´));
   ListBox1.Items.Add(Format(´Handle: ¬d´,[HwndAcrobat]));
end;

Mas lembre-se q só vai lhe retornar o [b:e57865c597]Handle[/b:e57865c597] diferente de zero se não houver nenhum documento aberto no Adobe Reader, caso haja, ele trará como retorno o zero.

Só lembrando a estrutura do FindWindow
[b:e57865c597]FindWindow(IpClassName, IpWindowName)[/b:e57865c597]

Teste mais ou menos assim:
var
  HwndPDF,
  HwndAcrobat: THandle;
  AArquivo: .....;
begin
    HwndAcrobat := FindWindow(PChar(´AdobeAcrobat´), PChar(´Adobe Reader´));
    HwndPDF := FindWindow(´´, PChar(´AdobeReader-[´+ChangeFileExt(ExtractFileName(AArquivo), ´.pdf´) + ´]´));
  if HwndAcrobat <> 0 then
      ListBox1.Items.Add(Format(´Handle: ¬d´,[HwndAcrobat]))
  else
      ListBox1.Items.Add(Format(´Documento encontrado no Adobe o Hanlde é: ¬d´,[HwndPDF]))
end;


Veja o q acontece, e depois post aqui novamente.

Boa Sorte!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar