Fórum extrair arquivo EXE direto na pasta temporaia #345699
09/09/2007
0
è o seguinte estou criando player de video com este esquema:
procedure TForm1.FormCreate(Sender: TObject);
begin
with TResourceStream.Create(HInstance, ´videompg´, ´MPGFILE´) do
try
SaveToFile(´\windows\temp\video.mpg´); {extrai o mpg para a pasta temporaria}
finally
Free;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
form1.TransparentColor :=false;
with MediaPlayer1 do
begin
FileName := ´\windows\temp\video.mpg´;
Open;
Display := panel1;
Play;
end;
end;
Initialization
finalization
Begin
if FileExists(´\windows\temp\cr.mpg´) then DeleteFile(´\windows\temp\cr.mpg´);
End;
end.
O ploblema é, qundo executo o executavel depois de pronto
roda beleza do jeito que eu quero MAS. só eu estiver executando oexecutavel na undade C:\, se eu estiver executando na unidade D:\ ou outra qualquer que não seja a unidade onde estar a pasta do windows, ele não funciona da erro diz que não consegui encontra a pasta do Wndidos.
o que eu quero e um um esquema para estrai na pasta temp do windows não importando onde o windows foi instalado.
BAIXEI este esquema na net...
Function ExtractSystemDir : String;
Var Buffer : Array[0..255] of Char;
Begin
GetSystemDirectory(Buffer,144);
Result := StrPas(Buffer);
End;
MAS com usa-lo com o meu projeto.
Se alguem poder mi ajudar des de já agradeço.
Cicero Antonio

Cgm2k7
Curtir tópico
+ 0Posts
09/09/2007
Mayron Cachina
Gostei + 0
10/09/2007
Fabiano Góes
essa function que você baixou da internet devolve o diretório System32 do windows alterei ela pra devolver o Temp,
fiz umas alteraçõe no seu código, teste para var se funciona assim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | Function ExtractSystemDir : String; Var Buffer : Array[0..255] of Char; Begin GetSystemDirectory(Buffer,144); Result := StringReplace(StrPas(Buffer), ´System32´, ´Temp\´, [rfIgnoreCase]); End; procedure TForm1.FormCreate(Sender: TObject); begin with TResourceStream.Create(HInstance, ´videompg´, ´MPGFILE´) do try SaveToFile(ExtractSystemDir + ´video.mpg´); finally Free; end; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin form1.TransparentColor :=false; with MediaPlayer1 do begin FileName := ExtractSystemDir + ´video.mpg´; Open; Display := panel1; Play; end; end; Initialization finalization Begin if FileExists(ExtractSystemDir + ´cr.mpg´) then DeleteFile(ExtractSystemDir + ´cr.mpg´); End; |
Gostei + 0
11/09/2007
Cgm2k7
Mas com sua ideia me ajudou a pençar, não com mesmo esquema com outro mas com a mesma ideia. O CODIGO COMPLETO É ESTE DEPOI DE PRONTO..
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, MPlayer, StdCtrls, Buttons;
type
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
SpeedButton1: TSpeedButton;
panel1: TPanel;
procedure SpeedButton1Click(Sender: TObject);
private
Function GetTemporaryDir: String;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R VIDEO.RES}
function TForm1.GetTemporaryDir: String;
var
pNetPath: ARRAY[ 0..MAX_PATH - 1 ] of Char;
nLength: Cardinal;
begin
nLength := MAX_PATH;
FillChar( pNetPath, SizeOF( pNetPath ), #0 );
GetTempPath( nLength, pNetPath );
Result := StrPas( pNetPath );
end;
Procedure SaveVIDEOMPG;
Var PathToSave:String;
Res : TResourceStream;
Begin
PathToSave := ExtractFilePath(Application.ExeName);
If not FileExists(PathToSave) Then Begin
Res :=TResourceStream.VIDEO(Hinstance, ´VIDEOMPG´, ´MPGFILE´);
Try
Res.SavetoFile(VIDEO.Form1.GetTemporaryDir+´VIDEO.MPG´);
Finally
Res.Free;
End;
End;
End;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
with MediaPlayer1 do
begin
FILENAME :=GETTEMPORARYDIR+´VIDEO.MPG´;
Open;
Display := panel1;
Play;
end;
end;
Initialization
SAVEVIDEOMPG;
finalization
Begin
if FileExists (VIDEO.Form1.GetTemporaryDir+´VIDEO.MPG´) then DeleteFile(VIDEO.Form1.GetTemporaryDir+´VIDEO.MPG´);
End;
===========
DECLAREI Function GetTemporaryDir: String;
E O RESTO USEI APROPRIO ASSISTENTE DO DELPHI7 Ctrl+Spaço
dica para todos sempre procure o que no proprio delphi para depois procura na nete se fazer isto quando for procurar na nete as sua ideis com as ideis dos amigo fluem mais.
Agadeço o amigo que me ajudou e ta ai o resultado testao e aprovado 100¬
Cicero
Gostei + 0
11/09/2007
Fabiano Góes
o importante é você ter encontrado uma solução.
Valeu por ter postado a solução e finalizado o post,
isso ajuda muito em futuras pesquisas.
Abraço !!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)