Delphi에서 다른 애플리케이션 창을 제어하는 방법
Delphi에서 다른 애플리케이션 창을 제어하는 방법
Chen Jianbing, 광동 농업 경영 간부 대학
Delphi 애플리케이션 작성에는 종종 다른 Windows 애플리케이션에서의 작업이 포함됩니다. 예를 들어, 데이터베이스 관리 시스템에서 재무 담당자가 계산기를 사용해야 하는 경우 Windows에 포함된 계산기 기능을 사용할 때마다 "시작/프로그램/보조프로그램/계산기"를 통해 계산기를 열어야 합니다. 물론 매우 번거로운 일입니다. 물론, 바탕 화면에 "계산기"에 대한 바로 가기를 만들고 계산기를 사용해야 할 때 이 단축키를 눌러 "계산기"를 여는 것을 고려할 수 있습니다. 하지만 "계산기"는 "비모달" 창 프로그램이기 때문에, 즉 계산기를 실행할 때마다 "계산기" 창이 열리게 되는데, 결과적으로 바탕화면에는 수십 개의 "계산기"가 나타나는 것이 아닙니다. 많은 수만 시스템 메모리 오버헤드를 증가시키고 사용자의 조작이 불편합니다. 델파이에서는 쉽게 제어할 수 있고 효과도 완벽합니다. 두 가지 주요 문제에 대해 구현 방법을 아래에 제안합니다.
1. 디자인을 어떻게 제어하나요?
새 양식을 만들고 양식에 두 개의 버튼을 추가합니다. 해당 캡션은 "열기"(즉, "계산기" 시작) 및 "닫기"(종료 및 종료)이며 각각에 대한 Click 이벤트 처리를 추가합니다. 자세한 내용은 양식 Form1 및 단위 파일 Unit1을 참조하세요.
그 중 가장 중요한 진술은 다음과 같습니다.
fwnd:=FindWindow('SciCalc','계산기');
함수 프로토타입은 다음과 같습니다(자세한 내용은 Delphi 도움말 참조).
HWND 찾기창(
LPCTSTR lpClassName, // 클래스 이름에 대한 포인터
LPCTSTR lpWindowName // 창 이름에 대한 포인터
);
여기서 'SciCalc'는 계산기의 클래스 이름이고, 'Calculator'는 계산기의 창 제목입니다.}
setWindowPos(fwnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW 또는 SWP_NOSIZE 또는 SWP_NOMOVE);
함수 프로토타입은 다음과 같습니다.
BOOL SetWindowPos(
HWND hWnd, // 윈도우 핸들
HWND hWndInsertAfter, // 배치 순서 핸들
int X, // 가로 위치
int Y, // 수직 위치
int cx, // 너비
int cy, // 높이
UINT uFlags // 창 위치 지정 플래그
);
ShowWindow(fwnd,SW_RESTORE); //열린 "계산기" 표시
함수 프로토타입은 다음과 같습니다.
BOOL 표시 창(
HWND hWnd, // 윈도우 핸들
int nCmdShow // 창 상태 표시
);
Ret:=WinExec('c:windowscalc.exe',SW_SHOWNORMAL) //계산기 시작
함수 프로토타입은 다음과 같습니다.
UINT WinExec(
LPCSTR lpCmdLine, // 명령줄 주소
UINT uCmdShow // 새 애플리케이션의 창 스타일
);
계산기 프로그램을 실행하고 반환 값을 확인합니다. 따라서 반환 값을 사용하여 가능한 오류를 확인합니다.
2. 애플리케이션의 "클래스 이름"을 명확히 하는 방법은 무엇입니까?
애플리케이션을 제어하려면 먼저 애플리케이션의 "클래스 이름"을 명확히 해야 합니다. "클래스"의 개념은 Delphi 프로그램에서 이미 매우 명확합니다. 예를 들어, 새로운 폼 Form1을 생성하고 폼의 "클래스 이름"은 TForm1입니다. 그렇다면 다른 Windows 프로그램의 "클래스 이름"을 확인하는 방법은 무엇입니까?
다행스럽게도 델파이는 몬스터가 어디에 있든 그 "클래스 이름"을 보여주는 거울과 같은 실용적인 도구인 Winsight를 제공합니다.
Winsight를 사용하는 방법은 다음과 같습니다.
⑴ Winsight를 실행합니다(프로그램 이름은 ws32.exe, 기본 파일 delphi32.exe와 동일한 디렉터리에 있음). 그림 ①을 참조하세요.
⑵ 그림 ②와 같이 Winsight 메뉴의 "Spy"에서 "Follow Focus"를 선택합니다.
⑶ "계산기" 프로그램을 실행합니다.
⑷대상은 그림 ③과 같이 Winsight에 표시됩니다.
소프트웨어 환경: 중국어 Win98/중국어 Delphi5.0.