Does anyone have that bit of code that searches for child windows by title?
I want to write a little stub to sit in memory, checking for windows once in a while and closing the certificate form so that I can go to sleep.
I still have over 80,000 files in the transfer queue and am exhausted sitting here:):)
I think the below *should* work..
*Update*. Works a treat
Code: Select all
;
#AtTheEndOfTheList = -1
;
Enumeration 1
#TitleBarClockTimer
EndEnumeration
;
Define.i hW_BTN, WindowHandle
Define EventID, MenuID, GadgetID, WindowID
;
Enumeration 1
#Window_Monitor
EndEnumeration
#WindowIndex = #PB_Compiler_EnumerationValue
Enumeration 1
#Gadget_Monitor_Messages
EndEnumeration
#GadgetIndex = #PB_Compiler_EnumerationValue
;
Declare.i Window_Monitor()
Declare KillCertificate(ObjectHandle.i, Message.i, EventNumber.i, TimePeriod.i)
;
Procedure.i Window_Monitor()
If OpenWindow(#Window_Monitor, 87, 82, 400, 300, "Kill FileZilla certificate!", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
EditorGadget(#Gadget_Monitor_Messages, 5, 5, 390, 290, #PB_Editor_ReadOnly)
SetGadgetColor(#Gadget_Monitor_Messages, #PB_Gadget_FrontColor, $0000FF)
SetGadgetFont(#Gadget_Monitor_Messages, LoadFont(#Gadget_Monitor_Messages, "Segoe Print", 10, 0))
HideWindow(#Window_Monitor, 0)
ProcedureReturn WindowID(#Window_Monitor)
EndIf
EndProcedure
;
Procedure KillCertificate(ObjectHandle.i, Message.i, EventNumber.i, TimePeriod.i)
WindowHandle.i = FindWindow_(0, "Unknown certificate")
If WindowHandle.i
AddGadgetItem(#Gadget_Monitor_Messages, #AtTheEndOfTheList, "Found target window handle: " + Str(WindowHandle.i))
hW_BTN = FindWindowEx_(WindowHandle.i, 0, "Button", "OK") ; Must explicitly search for "OK"!
If hW_BTN
AddGadgetItem(#Gadget_Monitor_Messages, #AtTheEndOfTheList, "Found target ok button handle: " + Str(hW_BTN))
SetForegroundWindow_(WindowHandle.i)
; SetActiveWindow_(WindowHandle)
; SendMessage_(hW_BTN, #BM_CLICK, 0, 0)
; Delay(30)
; SetForegroundWindow_(WindowHandle)
; SetActiveWindow_(WindowHandle)
; SendMessage_(hW_BTN, #BM_CLICK, 0, 0)
SendMessage_(WindowHandle.i, #WM_SYSCOMMAND, #SC_CLOSE, 0)
EndIf
EndIf
EndProcedure
;
If Window_Monitor()
Define quitMonitor = #False
SetTimer_(WindowID(#Window_Monitor), #TitleBarClockTimer, 5000, @KillCertificate()) ; 1000 = 1 second
Repeat
EventID = WaitWindowEvent()
MenuID = EventMenu()
GadgetID = EventGadget()
WindowID = EventWindow()
TimerId = EventTimer()
Select EventID
Case #PB_Event_CloseWindow
Select WindowID
Case #Window_Monitor : quitMonitor = #True
EndSelect
Case #PB_Event_Timer
Select Timerid
Case #TitleBarClockTimer :
EndSelect
Case #PB_Event_Gadget
Select GadgetID
Case #Gadget_Monitor_Messages
EndSelect
EndSelect
Until quitMonitor
KillTimer_(WindowID(#Window_Monitor), #TitleBarClockTimer)
CloseWindow(#Window_Monitor)
EndIf
End
Code: Select all
;
#AtTheEndOfTheList = -1
;
Enumeration 1
#TitleBarClockTimer
EndEnumeration
;
Define EventID, MenuID, GadgetID, WindowID
;
Enumeration 1
#Window_Monitor
EndEnumeration
#WindowIndex = #PB_Compiler_EnumerationValue
Enumeration 1
#Gadget_Monitor_Messages
EndEnumeration
#GadgetIndex = #PB_Compiler_EnumerationValue
;
Global NewList CertificateWindowHandlesToKill.i()
;
Declare.i Window_Monitor()
Declare KillCertificate(ObjectHandle.i, Message.i, EventNumber.i, TimePeriod.i)
;
Procedure.i Window_Monitor()
If OpenWindow(#Window_Monitor, 87, 82, 400, 300, "Kill FileZilla certificate!", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Minimize|#PB_Window_NoActivate|#PB_Window_Invisible)
EditorGadget(#Gadget_Monitor_Messages, 5, 5, 390, 290, #PB_Editor_ReadOnly)
SetGadgetColor(#Gadget_Monitor_Messages, #PB_Gadget_FrontColor, $0000FF)
SetGadgetFont(#Gadget_Monitor_Messages, LoadFont(#Gadget_Monitor_Messages, "Segoe Print", 10, 0))
HideWindow(#Window_Monitor, 0)
ProcedureReturn WindowID(#Window_Monitor)
EndIf
EndProcedure
;
Procedure KillCertificate(ObjectHandle.i, Message.i, EventNumber.i, TimePeriod.i)
ForEach CertificateWindowHandlesToKill.i()
ButtonOnCertificateWindow.i = FindWindowEx_(CertificateWindowHandlesToKill.i(), 0, "Button", "OK") ; Must explicitly search for "OK"!
If ButtonOnCertificateWindow.i
AddGadgetItem(#Gadget_Monitor_Messages, #AtTheEndOfTheList, "Found target ok button handle: " + Str(ButtonOnCertificateWindow.i))
; SetForegroundWindow_(CertificateWindowHandle.i)
SendMessage_(CertificateWindowHandlesToKill.i(), #WM_SYSCOMMAND, #SC_CLOSE, 0)
DeleteElement(CertificateWindowHandlesToKill.i())
EndIf
Next
CertificateWindowHandle.i = FindWindow_(0, "Unknown certificate")
If CertificateWindowHandle.i
AddElement(CertificateWindowHandlesToKill.i())
CertificateWindowHandlesToKill.i() = CertificateWindowHandle.i
AddGadgetItem(#Gadget_Monitor_Messages, #AtTheEndOfTheList, "Found target window handle: " + Str(CertificateWindowHandle.i))
EndIf
EndProcedure
;
If Window_Monitor()
Define quitMonitor = #False
SetTimer_(WindowID(#Window_Monitor), #TitleBarClockTimer, 2000, @KillCertificate()) ; 1000 = 1 second
Repeat
EventID = WaitWindowEvent()
MenuID = EventMenu()
GadgetID = EventGadget()
WindowID = EventWindow()
TimerId = EventTimer()
Select EventID
Case #PB_Event_CloseWindow
Select WindowID
Case #Window_Monitor : quitMonitor = #True
EndSelect
Case #PB_Event_Timer
Select Timerid
Case #TitleBarClockTimer :
EndSelect
Case #PB_Event_Gadget
Select GadgetID
Case #Gadget_Monitor_Messages
EndSelect
EndSelect
Until quitMonitor
KillTimer_(WindowID(#Window_Monitor), #TitleBarClockTimer)
CloseWindow(#Window_Monitor)
EndIf
End