제가 이번에는 파워포인터랑 연결을 했는데요...
엑셀이나 워드나 뭐 비슷하더라고요(완전히 똑같지는 않고..)
그런데... 다른(엑셀, 워드)프로그램은 정상 종료(오른쪽위 닫기버튼(X<-- 이렇게 생긴거))를 했을때 프로세스까지 죽는데요...
왜 파워 포인트는 정상 종료 했는데 프로세스가 안죽는 건지...
파워포인트를 닫고 버튼을 눌러서 다시 부르고 그러면 프로세스가 죽지 않아서 이상하게 돌아갑니다...
제가 잘 못 불러 왔는지도 몰라서... 소스 올립니다...
답변 부탁 드리겠습니다.
procedure TForm1.Button1Click(Sender: TObject);
var
Unknown: IUnknown;
Result: HResult;
WinHandle : hwnd;
powerpoint : olevariant;
begin
AppWasRunning := False;
Result := GetActiveObject(CLASS_powerpointApplication, nil, Unknown);
if (Result = 0) then begin
WinHandle := findwindow('pp9FrameClass', nil);
if (WinHandle <> 0 ) then begin
BringWindowToTop(WinHandle);
ShowWindow(WinHandle, SW_RESTORE);
end;
end
else begin
PowerPoint := CreateOleobject('powerpoint.Application');
PowerPoint.Presentations.Add;
PowerPoint.visible := true;
end;
end;
> 제가 이번에는 파워포인터랑 연결을 했는데요...
> 엑셀이나 워드나 뭐 비슷하더라고요(완전히 똑같지는 않고..)
> 그런데... 다른(엑셀, 워드)프로그램은 정상 종료(오른쪽위 닫기버튼(X<-- 이렇게 생긴거))를 했을때 프로세스까지 죽는데요...
> 왜 파워 포인트는 정상 종료 했는데 프로세스가 안죽는 건지...
> 파워포인트를 닫고 버튼을 눌러서 다시 부르고 그러면 프로세스가 죽지 않아서 이상하게 돌아갑니다...
> 제가 잘 못 불러 왔는지도 몰라서... 소스 올립니다...
> 답변 부탁 드리겠습니다.
> procedure TForm1.Button1Click(Sender: TObject);
> var
> Unknown: IUnknown;
> Result: HResult;
> WinHandle : hwnd;
> powerpoint : olevariant;
> begin
> AppWasRunning := False;
> Result := GetActiveObject(CLASS_powerpointApplication, nil, Unknown);
> if (Result = 0) then begin
> WinHandle := findwindow('pp9FrameClass', nil);
> if (WinHandle <> 0 ) then begin
> BringWindowToTop(WinHandle);
> ShowWindow(WinHandle, SW_RESTORE);
> end;
> end
> else begin
> PowerPoint := CreateOleobject('powerpoint.Application');
> PowerPoint.Presentations.Add;
> PowerPoint.visible := true;
PowerPoint := UnAssigned; // 할당 해제<---- 추가한 부분
> end;
> end;
음... 한줄 추가하니까 끝나더군요....
어떤 외국사이트 가니까 할당 해제를 해주라고 그래서 했더니 되는데...
할당 해제 했는데도 에러 안나고 잘 돌아가네요.. 희안하다...쩝...
왜 그런지 답변 부탁합니다..