abir janela DOS maximizada fechar janela DOS automaticamente
25/09/2004
0
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]
Joao_schroeder
Posts
26/09/2004
Dopi
Agora use o winexec com o arquivo PIF criado e nao com o EXE...
26/09/2004
Joao_schroeder
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
27/09/2004
Tiba
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.
27/09/2004
Dopi
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....
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.
27/09/2004
Joao_schroeder
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.
28/09/2004
Joao_schroeder
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
Clique aqui para fazer login e interagir na Comunidade :)