PDA

View Full Version : یه تابع API برای در اختیار گرفتن فوکوس؟



VB6.0
یک شنبه 09 آذر 1382, 11:16 صبح
با سلام
آیا تابعی هست که بشود فوکوس رو به یه برنامه خاص (که شماره ID اون رو داریم, همون خاصیت hwnd) داد؟
در واقع مشکل من اینه که میخوام کاربر فوکوس رو از برنامم نتونه خارج کنه تا وقتیکه از برنامه خارج بشه؟
متشکرم

S.Azish
سه شنبه 11 آذر 1382, 01:24 صبح
بله تابع SetFocus از توابع API

VB6.0
سه شنبه 18 آذر 1382, 13:25 عصر
با سلام
آقای آذیش این تابعی که گفته بودین فقط وقتیکه برنامه رو با وی بی اجرا میکردم اونم وقتیکه فوکوس رو به خود وی بی برمیگردوندم جواب میداد!
(یعنی تنها در این حالت فوکوس رو دوباره به برنامه تحت اجرا برمیگردوند؟؟؟)
اما وقتیکه با برنامه های دیگه کار بکنم و فوکوس و به اونا بدم و یا برنامه رو وقتیکه EXE شده اجرا کنم دیگه این تابع SetFocus عمل نمیکنه؟
آیا کار خاص دیگه ای رو هم باید انجام بدم؟
اینم کدی که من استفاده کردم:


Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare Function SF Lib "user32.dll" Alias "SetFocus" (...) As Long
Private Sub Timer1_Timer()
If Me.hWnd <> GetForegroundWindow() Then SF(Me.hWnd)
End Sub

این تایمر, هر یک دهم ثانیه چک میکنه که آیا فوکوس در اختیار برنامه هست یا نه که در صورت نداشتن فوکوس با تابع SetFocus, فوکوس رو به برنامه میده!!!!
اما همونطور که گفتم عملا درست جواب نداد؟