Array
(
)

abir janela DOS maximizada fechar janela DOS automaticamente

Joao_schroeder
   - 25 set 2004

Olá
Tudo bem?
Com os comandos abaixo eu abro uma janela DOS em janela modo normal e em tela cheia. O que eu gostaria é que abrisse em janela modo maximizado e que ao sair do programa DOS a janela se fechasse automaticamente.
Será que alguém poderia me ajudar.
Desde já agradeço.
João Schroeder

WinExec(´programa.exe´,Sw_ShowNormal);
WinExec(´programa.exe´,Sw_Maximize);
[size=24:04b6a90eee][/size:04b6a90eee]


Dopi
   - 26 set 2004

Crie um Atalho para o seu programa (arquivo PIF) com as configuraçoes que voce quer para a Janela DOS (tela cheia, fechar ao sair, etc...)

Agora use o winexec com o arquivo PIF criado e nao com o EXE...


Joao_schroeder
   - 26 set 2004

Funcionou, mas são vários programas que tenho de chamar e vou ter de criar vários atalhos.

Se tiver outro jeito dentro de uma linha de comando seria melhor, mas mesmo assim valeu.

Vou fazer assim da maneira que explicaste, até descobrir se existe outra maneira.

Muito obrigado


Tiba
   - 27 set 2004


Citação:
... Com os comandos abaixo eu abro uma janela DOS em janela modo normal e em tela cheia. ...

WinExec(´programa.exe´,Sw_ShowNormal);
WinExec(´programa.exe´,Sw_Maximize);


com o SW_MAXIMIZE vc está abrindo o programa em TELA CHEIA (INTEIRA) ?? ou em Janela Maximizada ?

também estou tentando abrir um programa em Tela Inteira e este comando aqui para mim abre apenas em Janela Maximizada.


Dopi
   - 27 set 2004

Será que existe algum componente ou chamada a API do Windows para criar atalhos (PIF) ? Se houver, você pode criar os atalhos dinamicamente durante a execução do programa.....

Outra alternativa é abrir o arquivo PIF, substituir a linha de Comando (onde consta o nome do EXE), para cada programa, antes de executar o PIF. Segue abaixo um código que faz + ou - isso.... Usei-o para criar um instalador Windows para meu programa DOS....

#Código


program PifPath;

{$APPTYPE CONSOLE}

uses
SysUtils, Classes;

Var FS : TFileStream ;
Arq : String;
Buffer : Pchar ;
Copia, TextIn, TextOut, String1, String2 : String ;
Erro : boolean ;
dif, i, nRead : integer ;


begin

Erro := (ParamCount < 3) ;
Arq := ParamStr(1) ;

if (not Erro) and (not FileExists(Arq)) then begin
Writeln(´File: ´+Arq+´ not found...´) ;
Erro := true ;
end ;

if Erro then
begin
writeln ;
writeln(´This simple programa, just change the Path in a Windows PIF file´) ;
writeln(´That can be util if you want make a instalattion procedure for DOS programas´) ;
writeln ;
writeln(´Usage: PifPath FILE.PIF OldPath NewPath´) ;
writeln ;
writeln(´Will replace all ocurences of OldPath by NewPath´) ;
writeln(´It is Case-Insensitive.´) ;
writeln ;
writeln(´Ex: PifPath C:\DJLOJA D:\DJLOJA´) ;
writeln ;
end
else
begin

String1 := ParamStr(2) ;
String2 := ParamStr(3) ;
dif := length(String2) - length(String1) ;

try
FS := TFileStream.Create(Arq,fmOpenReadWrite);
FS.Seek(0,soFromBeginning) ;

GetMem(Buffer, FS.Size + 1) ;
nRead := FS.Read(Buffer^,FS.Size) ;

TextIn := ´´ ;
SetString(TextIn,Buffer,nRead) ;
Copia := TextIn ;

TextOut := ´´ ;
while length(TextIn) > 0 do begin
i := pos(UpperCase(string1),Uppercase(TextIn)) ;

if i = 0 then
begin
TextOut := TextOut + TextIn ;
TextIn := ´´ ;
end
else begin
TextOut := TextOut + copy(TextIn,0,i - 1) + String2 ;
TextIn := copy(TextIn,i + length(string1),length(TextIn)) ;

if dif <> 0 then begin
i := pos(#0,TextIn) ;
TextOut := TextOut + copy(TextIn,0,i - 1) ;

if dif < 0 then
TextOut := TextOut + StringOfChar(0,abs(dif))
else
i := i + dif ;

TextIn := copy(TextIn,i,length(TextIn)) ;
end ;
end ;
end ;

FS.Size := length(TextOut) ;
FS.Seek(0,soFromBeginning) ;
FS.Write(pchar(TextOut)^,length(TextOut)) ;
finally
FreeMem(Buffer) ;
FS.Free ;
end ;
end ;

end.



Joao_schroeder
   - 27 set 2004

Olá Tiba
Eu mexi tanto que nem sei o que fiz, mas acho que mostrava tela cheia, porque eu até achava estranho isso. Mas o modo como o Dopi ensinou no início é só colocar nas propriedades do atalho como tela cheia que funciona. Agora eu vou tentar esse último modo.


Joao_schroeder
   - 28 set 2004

Olá Daniel
Obrigado pelo código. Parece que vai servir, mas eu não entendi como vai ser a sintaxe para
poder ler o arquivo .pif que desejo e colocar a linha de comando que eu desejo que execute.
Eu tentei assim. Foi o que me pareceu na mensagem de erro deste programa.
WinExec(´c:\projetos\PifPath c:\windows\desktop\programa.pif c:\projetos\men000.exe c:\projetos\sc0006.exe´,sw_minimize);
WinExec(´c:\windows\desktop\programa.pif´,Sw_ShowNormal);

Fiquei na dúvida se eu deveria fazer isso. Trocar abaixo o valor de arq.
begin
Erro := (ParamCount < 3) ;
//Arq := ParamStr(1) ;
Arq := ´c:\windows\desktop\programa.pif´ ;

O início do teu código é assim e...

program PifPath;

{$APPTYPE CONSOLE}

uses
SysUtils, Classes;

Var FS : TFileStream ;
Arq : String;
Buffer : Pchar ;
Copia, TextIn, TextOut, String1, String2 : String ;
Erro : boolean ;
dif, i, nRead : integer ;


begin
---------------------------------

o início do meu é assim. Eu não sei criar program, então criei unit. Será que tem algum problema.
E aí tem que colocar interface e implementation.
unit PifPath;

{$APPTYPE CONSOLE}

interface

uses
SysUtils, Classes;

Var FS : TFileStream ;
Arq : String;
Buffer : Pchar ;
Copia, TextIn, TextOut, String1, String2 : String ;
Erro : boolean ;
dif, i, nRead : integer ;

implementation

begin