폼을 활성화시키기 위해 SetActiveWindow() API를 사용했습니다.
DELPHI 1.0에서는 제대로 동작했으나 2.0, 3.0, 4.0 에서는 동작하지
않았습니다.
ZPDSPF2님의 답변대로
SetForegroundWindow(Application.Handle); API를 사용했으나
조금의 차이는 있지만 제가 원하는 기능이 안됩니다.
제가 원하는 기능은
현재 Active 된 Application이 어떤것이든지 특정 반은이 생기면
자신이 Active 되어 Enter 키를 입력 받을 수 있게 하는 것입니다.
아래 테스트 프로그램을 보시면 이해 되실겁니다.
폼에 Button과 Timer를 하나씩 배치합니다.
Timer에서는 매초 자신을 Active 시킵니다.(제가 원하는 부분)
폼이 Active되었을때 Enter 키를 쳐서 Button을 클릭한것과 동일한 기능을 합니다.
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
const
cc :integer = 0; {타이머가 동작하는지 확인하기 위해}
begin
Timer1.Enabled := False;
Label1.Caption := IntToStr(CC);
cc := (cc + 1) mod 100;
SetActiveWindow(Self.Handle); {문제의 API}
{DELPHI 1.0에서 테스트를 하면 기능을 이해 하실 겁니다.}
Timer1.Enabled := True;
end;
어떻게 해야 하는 걸까요?
|