program main;
uses
Forms,
Windows,
Main in 'Main.pas' {frmMain};
// dfm이 frmMain이 화면.
{$R *.RES}
var hwndPrev:HWND;
begin
hwndPrev:=FindWindow('TfrmMain','Main');
// Findwindow함수 - TfrmMain에서 Main을 찾는다.
// 여기서 기본 화면이 Main인데, Main을 찾을수 없습니다. Main화면을 찾지 못하니까요.(만들어 지지 못했음)
// 밑을 보시면 Application.CreateForm이 있죠? 이때 만들어 집니다.
// 확인을 하고 싶으시면 ShowMessage(IntToStr(hwndPrev))하세요.. 0 이 나옵니다. Handle을 찾지 못함.
// 참고로 Project - Options 에 가시면 Title이 있죠? 그것을 Main으로 꼭 잡아 주세요. Class가 Main이 됩니다.
if hwndPrev <> 0 then begin
if IsIconic(hwndPrev) then ShowWindow(hwndPrev,SW_RESTORE)
else SetForegroundWindow(hwndPrev);
Halt;
end else begin
Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end;
end.
저는 이렇게 했거든요..
program Project1;
uses
Forms,
Windows,
Dialogs,
sysUtils,
Unit1 in 'Unit1.pas' {frmMain};
{$R *.RES}
Var
hwndPrev : HWND;
Begin
hwndPrev := FindWindow(Nil,'Main');
//Main이라는 다른 어플 만듬..FindWindow에서 찾을수 있겠죠? (단일 어플이 아닌가?)
// 어쨌든 IsIconic가 동작 된다는 것을 설명할수 있어요..Show가 되니..
ShowMessage(IntToStr(hwndPrev));
// 확인.. 0 이외의 값이 나온다.
if hwndPrev <> 0 then
begin
if IsIconic(hwndPrev) then ShowWindow(hwndPrev,SW_RESTORE)
else SetForegroundWindow(hwndPrev);
Halt;
end
else
begin
Application.Initialize;
Application.Title := 'Project';
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end;
end.
위의 형식으로 하면 잘되는데..
그리고 Minimize버튼도 잘 동작 합니다.
저의 경우는 Handle을 잘 찾아 동작을 합니다. (FindWindow를 잘 살펴 보세요..)
그리고 답변이 맘에 안드셨으면...이게 저의 한계니..이해를..
이만.
|