Du brauchst dazu doch keine zwei Formen. Wozu der Timer war verstehe ich auch nicht so recht (nur um die 2. Form darzustellen ?).
Da du mit D7 arbeitest kannst du auch auf:
Delphi-Quellcode:
// Transparenz
setWindowLong(
Handle, GWL_EXSTYLE,
getWindowLong(
Handle, GWL_EXSTYLE)
or WS_EX_LAYERED
{or WS_EX_TRANSPARENT});
verzichten, das geht dann so:
Delphi-Quellcode:
...
uses code;
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
begin
// Transparenz
{Form1.} AlphaBlend := True;
{Form1.} AlphaBlendValue := 200;
{Form1.} Align := alClient;
// Console
...
end;
...
procedure TMainForm.ConsoleKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
var
iLine: integer;
begin
iLine := Console.Perform(EM_LINEFROMCHAR, -1, 0);
if Key = VK_RETURN
then
begin
// Memo Line(s) Auswerten ( Cascadierte If-Abfragen )
if LowerCase(Console.Lines[iLine]) = '
#exit'
then
begin
Close;
end else
if LowerCase(Console.Lines[iLine]) = '
#help'
then
begin
with Console.Lines
do
begin
Add('
');
Add('
');
Add('
#help = ruft die Hilfe auf');
Add('
#exit = beendet das Programm');
Add('
#opencd = öffnet das CD-Laufwerk');
Add('
#closecd = schließt das CD-Laufwerk');
Add('
cls = Console leeren (clear)');
Add('
');
end;
end else
if LowerCase(Console.Lines[iLine]) = '
#opencd'
then
begin
Console.Lines.Add('
Ok.');
mciSendString('
Set cdaudio door open wait',
nil, 0,
Handle);
end else
if LowerCase(Console.Lines[iLine]) = '
#closecd'
then
begin
Console.Lines.Add('
Ok.');
mciSendString('
Set cdaudio door closed wait',
nil, 0,
Handle);
end else
if LowerCase(Console.Lines[iLine]) = '
cls'
then
begin
Console.Clear;
end else
if Console.Lines[iLine] <> '
'
then // Letzte If Abfrage
begin
Console.Lines.Add('
Unbekannter Befehl');
Windows.Beep(880,25);
end;
end;
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
// Panicbkutton ;)
Close;
end;
...