ParamStr
26/01/2006
0
Já fiz tudo só a um problema
Quero que quando a pessoa clicar no arquivo exemplo
Musica.avi
E se a pessoa selecionou mais de um arquivo para ouvir exemplo
Musica1.avi
Musica2.avi
Musica3.avi
ele abrir meu programa e rodar as músicas.
Como faço isso??
--------------------------------
Rudá
Posts
27/01/2006
Rodc
Tem dicas na Net falando como fazer isto, dá uma procurada melhor.
27/01/2006
Michael
[url=http://delphi.about.com/cs/adptips2001/a/bltip0801_3.htm]Neste link[/url] vc encontrará uma procedure que registra uma aplicação com uma determinada extensão de arquivo.
Porém, isso apenas não é o suficiente para que seu aplicativo execute os arquivos passados via linha de comando. Como vc mesmo disse no título do post, vc deve usar [b:b137432028]ParamStr [/b:b137432028]para pegar os ´parâmetros´ informados, e tbm [b:b137432028]ParamCount[/b:b137432028], para saber se mais de um arquivo está na linha de comando. Veja um exemplo:
var I: Integer; Arquivos: TStringList; begin Arquivos := TStringList.Create; try for I := 1 to ParamCount - 1 do if FileExists(ParamStr(I)) then Arquivos.Add(ParamStr(I)); // Faz alguma coisa com Arquivos finally Arquivos.Free; end; end;
[]´s
27/01/2006
Rudá
Ai mudei o código para isso para ele mostrar o primeiro parâmentro.
var I: Integer; Arquivos: TStringList; begin Arquivos := TStringList.Create; try for I := 0 to ParamCount - 1 do if FileExists(ParamStr(I)) then Arquivos.Add(ParamStr(I)); // Faz alguma coisa com Arquivos finally Arquivos.Free; end; end;
Ai ele mostrou o caminho do programa.
27/01/2006
Michael
[]´s
27/01/2006
Rudá
Quando vc clica no arquivo musica.asf em uma pasta qualquer ele abre o windows media player ou qualquer outro programa, e ele abre logo a música, eu to querendo fazer isso, quando a pessoa clicar no arquivo musica.asf ele abre meu programa e toca a musica, mas eu fiz o que vc falou, registrei no registro tudo certo mas ele não mostra nada.
Não era para mostrar o arquivo musica.asf nos paramentros para eu poder tocar ele??
27/01/2006
Rodc
Uma outra sugestão é, pelo Windows Explorer, ir em ferramentas/Opções e na guia ´tipos de arquivo´ selecionar a sua extensão e mandar ela abrir com o seu arquivo, daí você pode ver como o windows gravou as informações no registry.
27/01/2006
Michael
[]´s
27/01/2006
Rudá
´C:\player.exe´ ´¬1´
No meu sistema fiz assim no create
ShowMessage(IntToStr(ParamCount)); for i:= 0 to ParamCount - 1 do ShowMessage(ParamStr(i));
Apareceu um parâmetro que é o caminho do meu programa [b:32cca4b24f]C:\player.exe[/b:32cca4b24f]
Não apareceu nenhum outro parâmetro.
27/01/2006
Michael
Faço uma pequena correção tbm: o loop deve ir de 1 a [b:419ee12e72]ParamCount[/b:419ee12e72], e não a [b:419ee12e72]ParamCount - 1[/b:419ee12e72], como eu erroneamente postei acima.
[]´s
27/01/2006
Rudá
Agora só mais uma coisa quando eu cliquei em dois arquivos e clique abrir no media player ele listava os dois arquivos, e no meu caso ele abriu duas vezes meu programa, como faço para ele abrir só uma vez??
27/01/2006
Rjun
27/01/2006
Rodc
Acho que não vai funcionar, mas tenta colocar no registro do windows assim:
´C:\player.exe´ ´¬1´ ´¬2´
e veja se virá dois parâmetros.
27/01/2006
Michael
Pesquisei rapidamente pela Web mas não achei nenhuma informação sobre máscaras que possam ser usadas nesse caso. Penso que haja uma forma, via [b:bb8754beec]DDE[/b:bb8754beec], de se fazer isso, mas este é um segmento de programação que não possuo muito conhecimento a respeito.
De qualquer forma, há uma solução: como o colega [b:bb8754beec]Rjun [/b:bb8754beec]disse, vc pode usar [b:bb8754beec]mutexes [/b:bb8754beec]para garantir que apenas uma única instância da sua aplicação estará rodando. E, nesse momento, vc passa uma mensagem para a outra instância contendo o caminho do arquivo a ser aberto.
Para controlar múltiplas cópias da sua aplicação, use, como já mencionado, mutexes. E para enviar mensagens entre elas, vc pode usar este componente: [url=http://subsimple.com/delphi.asp]InterAppComm[/url].
[]´s
Clique aqui para fazer login e interagir na Comunidade :)