Fórum Abrindo arquivo pelo Windows Explorer #166835
28/06/2003
0
O problema é o seguinte: Fiz um programa e associei a ele arquivos com a extensão .txt, assim quando dou 2 cliques pelo Windows Explorer ele abre meu programa já mostrando o conteúdo do arquivo. Usei a rotina abaixo, só que há um problema, quando o programa já está aberto e dou um duplo clique em um arquivo .txt o programa da erro.
OBS: Somente uma instância do programa poderá ser aberta.
Até agora cheguei a seguinte conclusão, porém ainda não encontrei a solução:
Quando tento abrir um arquivo e o programa já está aberto, ele não executará uma nova instância do programa, que não poderá existir porque já existe outra instância, então o erro ocorre porque não existe onde jogar o conteúdo.
Alguém tem a solução?
program Project1;
.
.
.
var
Hwnd: Thandle;
begin
Hwnd := FindWindow (´TForm1´, ´Teste´);
if Hwnd=0 then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
if paramStr(1)<>´´ then
begin
tempLista:=ParamStr(1);
if (FileExists(tempLista)) and (tempLista<>´´) then
begin
{ Carrega o conteúdo do arquivo no memo }
form1.ListBox1.clear;
form1.listbox1.Items.LoadFromFile(tempLista);
end;
end;
Application.Run;
end
else
begin
if not IsWindowVisible(Hwnd) then
begin
messagedlg(´Teste já está sendo executado.´,mtinformation,[mbok],0);
end;
tempLista:=ParamStr(1);
if (FileExists(tempLista) then
begin
form1.listbox1.clear;
form1.ListBox1.clear;
form1.listbox1.Items.LoadFromFile(tempLista);
end;
end;
SetForegroundWindow(Hwnd); // visivel
end.
OBS: Somente uma instância do programa poderá ser aberta.
Até agora cheguei a seguinte conclusão, porém ainda não encontrei a solução:
Quando tento abrir um arquivo e o programa já está aberto, ele não executará uma nova instância do programa, que não poderá existir porque já existe outra instância, então o erro ocorre porque não existe onde jogar o conteúdo.
Alguém tem a solução?
program Project1;
.
.
.
var
Hwnd: Thandle;
begin
Hwnd := FindWindow (´TForm1´, ´Teste´);
if Hwnd=0 then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
if paramStr(1)<>´´ then
begin
tempLista:=ParamStr(1);
if (FileExists(tempLista)) and (tempLista<>´´) then
begin
{ Carrega o conteúdo do arquivo no memo }
form1.ListBox1.clear;
form1.listbox1.Items.LoadFromFile(tempLista);
end;
end;
Application.Run;
end
else
begin
if not IsWindowVisible(Hwnd) then
begin
messagedlg(´Teste já está sendo executado.´,mtinformation,[mbok],0);
end;
tempLista:=ParamStr(1);
if (FileExists(tempLista) then
begin
form1.listbox1.clear;
form1.ListBox1.clear;
form1.listbox1.Items.LoadFromFile(tempLista);
end;
end;
SetForegroundWindow(Hwnd); // visivel
end.
Fabio Gimenez
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)