비주얼 베이직으로 활성화 되어있는 창 종료

Posted by 겨울에
2011. 2. 4. 01:56 scrap/ Visual Basic
질문: 비주얼 베이직으로 떠 있는 창 종료
2004-08-05 22:22

비주얼 베이직으로 어떤 프로그램을 짜고 있습니다
거의 다 짜가는데요 현재 떠 있는 익스프롤러 창을 전부 종료 시키는 데에서 막혀버렸습니다 ㅠ.ㅠ
어떻게 하면 창을 종료 시킬수 있는지 올려 주셨으면 합니다 


답변: re: 비주얼 베이직으로 떠 있는 창 종료
2004-08-06 17:10

아래 제가 작성한 코드입니다.
설명은 주석으로 달아 놓았습니다.
즐프하세요.

Option Explicit

Private Const SW_HIDE = 0
Private Const GW_HWNDNEXT = 2

Private Declare Function GetTopWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetClassname Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Sub Command1_Click()
Dim hExpWin As Long

'최상위 윈도우 핸들을 얻는다.
hExpWin = GetTopWindow(0)
Do
'다음 윈도우를 얻는다.
hExpWin = GetNextWindow(hExpWin, GW_HWNDNEXT)

'클래스명이 익스플로러 이면 제거한다.
'(윈도우 기본 클래스로 제거할 수는 없고 감추면 됩니다.)
'참고 인터넷 익스플로러 클래스명은 "IEFrame" 입니다.
If Classname(hExpWin) = "ExploreWClass" Then
Call ShowWindow(hExpWin, SW_HIDE)
End If
Loop While hExpWin
End Sub

Private Function Classname(ByVal hExpWin As Long) As String
Dim lRet As Long
Dim sClass As String
Const lMaxLen As Long = 256

'윈도우 핸들에서 클래스명을 얻는다.
sClass = String(lMaxLen, 0)
lRet = GetClassname(hExpWin, sClass, lMaxLen)
If lRet Then Classname = Left(sClass, lRet)
End Function