Dos Penceresi Kapansın
WINDOWS 95 altında bir DOS uygulaması çalıştırdığınızda eğer o programa ait bir PIF dosyası ya da kısayol yoksa, program penceresi çalıştırıldıktan sonra kapatılmaz ve ekranda kalır.
Bu durumu önlemek için Windows'un bir API'sini kullanabilir, program sonlandıktan sonra DOS penceresini ortadan yok edebilirsiniz. Windows 95 ile birlikte gelen USER32.DLL ve KERNEL32.DLL adlı iki dosyayı kullanarak tanımladığımız üç fonksiyon sadece iki adet parametre ile işi bitiriyor.
Declare Function FindWindow& Lib ' user32' Alias ' FindWindowA' _
(ByVal lpClassName As String, ByVal lpWindowName As String)
Declare Function SendMessage Lib ' user32' Alias ' SendMessageA' (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Sub Sleep Lib ' kernel32' (ByVal dwMilliseconds As Long)
Public Const WM_CLOSE = &H10
Private m_sEXEName As String
Private m_sDosCaption As String
Public Sub RunDosApp()
Dim vReturnValue As Variant
Dim lRet As Long
Dim i As Integer
vReturnValue = Shell(m_sEXEName, 1) ' Dosyayı çalıştır
AppActivate vReturnValue ' EXE penceresini aktif hale getir.
Do
Sleep (10000)
lRet = FindWindow(vbNullString, m_sDosCaption)
If (lRet <> 0) Then
vReturnValue = SendMessage(lRet, WM_CLOSE, &O0, &O0)
Exit Do
End If
Loop
End Sub
WINDOWS 95 altında bir DOS uygulaması çalıştırdığınızda eğer o programa ait bir PIF dosyası ya da kısayol yoksa, program penceresi çalıştırıldıktan sonra kapatılmaz ve ekranda kalır.
Bu durumu önlemek için Windows'un bir API'sini kullanabilir, program sonlandıktan sonra DOS penceresini ortadan yok edebilirsiniz. Windows 95 ile birlikte gelen USER32.DLL ve KERNEL32.DLL adlı iki dosyayı kullanarak tanımladığımız üç fonksiyon sadece iki adet parametre ile işi bitiriyor.
Declare Function FindWindow& Lib ' user32' Alias ' FindWindowA' _
(ByVal lpClassName As String, ByVal lpWindowName As String)
Declare Function SendMessage Lib ' user32' Alias ' SendMessageA' (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Sub Sleep Lib ' kernel32' (ByVal dwMilliseconds As Long)
Public Const WM_CLOSE = &H10
Private m_sEXEName As String
Private m_sDosCaption As String
Public Sub RunDosApp()
Dim vReturnValue As Variant
Dim lRet As Long
Dim i As Integer
vReturnValue = Shell(m_sEXEName, 1) ' Dosyayı çalıştır
AppActivate vReturnValue ' EXE penceresini aktif hale getir.
Do
Sleep (10000)
lRet = FindWindow(vbNullString, m_sDosCaption)
If (lRet <> 0) Then
vReturnValue = SendMessage(lRet, WM_CLOSE, &O0, &O0)
Exit Do
End If
Loop
End Sub