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

Shellexecute


Guest Morcego

Pergunta

Pessoa, estou com uma naba que é a seguinte:

Preciso abrir uma página html que está na hd porém ela tem que abrir em uma posição específica, para tanto usa indicadores Ex. c:\teste.html#id0001.

Abrir a página com o ShellExecute(Handle, 'open', 'c:\teste.html',nil,nil, SW_SHOWNORMAL) ;. funciona sem problemas, porém ShellExecute(Handle, 'open', 'c:\teste.html#id0001',nil,nil, SW_SHOWNORMAL) não abre nem matando.

Alguém tem alguma idéia do que se pode fazer?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
porém ShellExecute(Handle, 'open', 'c:\teste.html#id0001',nil,nil, SW_SHOWNORMAL) não abre nem matando.

ao que parece você alterou a extensão padrão. Antes abria porque a extensão .html está associado ao navegador padrão. Agora, com .html#id0001 não há nada associado.

Acho que há duas alternativas:

1) você coloca o identificador junto ao nome e não à extensão ou;

2) descobre o navegador padrão, e abre o arquivo que você quizer com ele.

para a segunda opção é necessário descobrir qual é o navegador padrão, pois podem haver mais que um instalado e ainda você deverá saber aonde. O cógico eu obtive deste link: http://www.delphi.eti.br/downloads.php?id=251 (não alterei nada)

// Obtém o programa associado com a extensão
function PesquisaPrograma(Ext : string) : string;
var
  Reg: TRegistry;
 begin
  Result := '';
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CLASSES_ROOT;
// chave de sistema
  if Reg.OpenKey('.' + ext, False) then begin
    Result := Reg.ReadString('');
    Reg.CloseKey;
    if Result <> '' then begin
// pesquisa chave de programa associado
      if reg.OpenKey(Result + '\Shell\Open\Command', False) then
        Result := Reg.ReadString('');
      Reg.CloseKey;
    end;
  end;
// tira parâmetros da linha de comando
  if (Result <> '') and (Pos('%', Result) > 0) then
    Delete(Result, Pos('%', Result), Length(Result));
  if (Result <> '') and (Result[1] = '"') then
    Delete(Result, 1, 1);
  if (Result <> '') and (Result[Length(Result)] = '"') then
    Delete(Result, Length(Result), 1);
  while (Length(Result) > 0) and ((Result[Length(Result)] = ' ') or (Result[Length(Result)] = '"')) do
    Delete(Result, Length(Result), 1);
end;
para o seu caso utilizaria ele da seguinte maneira:
var
  ExePath :string;
begin
 // esta enjambração abaixo, é para que o arquivo possa ser aberto com firefox,
 // pois no meu caso é o navegador padrão e o string retornado contém um 
 // parâmetro -url e com isso o seu (nosso) arquivo não é mostrado.
  ExePath := PesquisaPrograma('html');
  Delete(ExePath, Pos('.EXE', UpperCase(ExePath)) +4, Length(ExePath));

  ShellExecute(Handle, 'open', PChar(ExePathe), 'c:\teste.html#id0001', nil, SW_SHOWNORMAL);

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Camarada

Eu achei a mãe da enjambração (Desculpe), mas você nem imagina como lhe fico grato. Eu já tinha tentado um monte de gambiarras muito medonhas, mas nenhuma funcionou bem, e não tinha pensado nisso. Muito obrigado mesmo.

Funcionou 100% e resolveu a naba.

Valeu mesmo a força!!!!

Link para o comentário
Compartilhar em outros sites

  • 0
Eu achei a mãe da enjambração (Desculpe)

Sem problemas. Eu mesmo pensei em iniciar o texto utilizando este termo. Mas como você disse: Funcionou 100% e resolveu a naba; o importante foi solucionar o problema - qualquer hora dessas você acha solução melhor.

[]s

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...