※ 아래 Daily Tip은
곽승주님이 제공해주신 내용입니다
오늘은 오피스 애플리케이션의 클래스이름을 정리하여 소개하려고
합니다. 더불어 클래스이름은 사용하는 경우도 보도록 하죠.
모든 윈도우에는
핸들이라는 고유의 정수값을 가지고 있습니다. 그리고 핸들을 이용하여 윈도우를 조정할 수 있는 거죠.
그런데 윈도우라고 하면 보통 네모난 창 모양의 대화상자나 화면만 생각하는 분들이 보통입니다. 그러나
여기에서 윈도우라는 것은 그러한 대화상자외에 대화상자내 있는 각종 컨트롤도 윈도우라고 합니다.
오피스는 많은 윈도우를 가지고 있으며 이것들은 제어할 수
있습니다. 핸들만 있다면 말이죠. 핸들을 얻기 위해서는 FindWindow와 같은 API함수를
사용해야 합니다.
다음은 이 함수를 VB/VBA에서 사용하기 위한 함수선언의
예입니다.
Declare Function FindWindow
Lib "user32" Alias "FindWindowA" (ByVal lpClassName
As String, ByVal lpWindowName As String) As Long
함수를 사용하기 위해 필요한 매개변수중에는
lpClassName이라는 것이 있습니다. 매개변수의 이름으로 봐서는 클래스이름을 주어야 할
것 같습니다. 클래스이름이 뭔지 잘 몰라도 말이죠.
다음은 오피스의 각각의 클래스 이름을 애플리케이션별로 정리한
것입니다.
Application
|
Class Name |
Access 97 |
OMain |
Access 2000 |
OMain |
Access XP |
OMain |
Excel 97 |
XLMAIN |
Excel 2000 |
XLMAIN |
Excel XP |
XLMAIN |
FrontPage 2000 |
FrontPageExplorerWindow40 |
FrontPage XP |
FrontPageExplorerWindow40 |
Outlook 97 |
rctrl_renwnd32
|
Outlook 98 |
rctrl_renwnd32
|
Outlook 2000 |
rctrl_renwnd32
|
Outlook XP |
rctrl_renwnd32
|
PowerPoint 95 |
PP7FrameClass
|
PowerPoint 97 |
PP97FrameClass
|
PowerPoint 2000 |
PP9FrameClass
|
PowerPoint XP |
PP10FrameClass
|
Project 98 |
JWinproj-WhimperMainClass |
Project 2000 |
JWinproj-WhimperMainClass |
Visual Basic Editor |
wndclass_desked_gsk |
Word 97 |
OpusApp |
Word 2000 |
OpusApp |
Word XP |
OpusApp |
Userform 97 |
ThunderXFrame
|
Userform 2000+ |
ThunderDFrame |
이것을 사용하는 예를 하나 보도록 하죠. 다음은 사용자 정의
폼의 핸들을 얻으려는 예입니다. 오피스의 버전에 따라 다른 클래스이름을 주어 핸들 값을 얻습니다.
If Val(Application.VERSION) < 9 Then
handloom = FindWindow("ThunderXFrame", Me.Caption) '// 97
Else
hWndForm = FindWindow("ThunderDFrame", Me.Caption) '// 2000
End If |
|