Ako neko ima elegantnije resenje za ovo ili sl., neka posalje.
Da bi ovo radilo kako treba mora da se pokrene kao .exe ili ce kod biti stopiran dok se ne klikne na neko dugme u msgbox-u.
ovo ide u modul :
Code:
' za ostale window konstante najbolje je koristiti API Viewer
Public Const GW_HWNDNEXT = 2
Public Const GW_CHILD = 5
' ove api fn su opisane u Window Functions sekciji u MSDN-u
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" _
(ByVal hwnd As Long, ByVal wFlag As Long) As Long
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String) As Long
Private Sub Command1_Click()
Timer1.Interval = 50 ' sto pre to bolje
Timer1.Enabled = True ' tajmer koji ce da promeni 'yes' i 'no' u 'da' i 'ne'
' postavljamo msgbox, caption je inace obavezan i trebalo bi da bude jedinstven
MsgBox "Sto mora da pise 'Yes' i 'No' ?", vbYesNo, "'domaci' msgbox"
End Sub
Private Sub Timer1_Timer()
Dim hendl As Long
' timer je odradio svoje
Timer1.Enabled = False
' nalazimo hWnd od msgbox-a preko njegovog caption-a
hendl = FindWindow(vbNullString, "'domaci' msgbox")
' nalazimo hWnd prvog child prozora, u ovom slucaju je to dugme 'Yes'
hendl = GetNextWindow(hendl, GW_CHILD)
' menjamo caption u 'Da'
SetWindowText hendl, "&Da"
' sada ide hWnd za sledece dugme - 'No'
hendl = GetNextWindow(hendl, GW_HWNDNEXT)
' menjamo caption u 'Ne'
SetWindowText hendl, "&Ne"
End Sub
' za ostale window konstante najbolje je koristiti API Viewer
Public Const GW_HWNDNEXT = 2
Public Const GW_CHILD = 5
' ove api fn su opisane u Window Functions sekciji u MSDN-u
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" _
(ByVal hwnd As Long, ByVal wFlag As Long) As Long
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String) As Long
Private Sub Command1_Click()
Timer1.Interval = 50 ' sto pre to bolje
Timer1.Enabled = True ' tajmer koji ce da promeni 'yes' i 'no' u 'da' i 'ne'
' postavljamo msgbox, caption je inace obavezan i trebalo bi da bude jedinstven
MsgBox "Sto mora da pise 'Yes' i 'No' ?", vbYesNo, "'domaci' msgbox"
End Sub
Private Sub Timer1_Timer()
Dim hendl As Long
' timer je odradio svoje
Timer1.Enabled = False
' nalazimo hWnd od msgbox-a preko njegovog caption-a
hendl = FindWindow(vbNullString, "'domaci' msgbox")
' nalazimo hWnd prvog child prozora, u ovom slucaju je to dugme 'Yes'
hendl = GetNextWindow(hendl, GW_CHILD)
' menjamo caption u 'Da'
SetWindowText hendl, "&Da"
' sada ide hWnd za sledece dugme - 'No'
hendl = GetNextWindow(hendl, GW_HWNDNEXT)
' menjamo caption u 'Ne'
SetWindowText hendl, "&Ne"
End Sub
[Ovu poruku je menjao Shadowed dana 18.08.2005. u 17:03 GMT+1]
fire, walk with me