PDA

View Full Version : سوال: برنامه با فکوس دایم



ms.511
دوشنبه 09 بهمن 1391, 10:32 صبح
چیکار کنم برنامم همیشه فعال باشه و تو بک گراند نره؟

SlowCode
دوشنبه 09 بهمن 1391, 10:58 صبح
سلام
عنوانت با سوالت فرق داره.
واسه Always on top شدن فرم یه تایمر بزار روی فرم(با intervral مثلا 10) و اینو بنویس:
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_SHOWWINDOW = &H40
Const HWND_NOTOPMOST = -2
Const HWND_TOPMOST = -1

Sub SetAlwaysOnTopMode(hWndOrForm As Variant, Optional ByVal OnTop As Boolean = True)
Dim hWnd As Long
If VarType(hWndOrForm) = vbLong Then
hWnd = hWndOrForm
Else
hWnd = hWndOrForm.hWnd
End If
SetWindowPos hWnd, IIf(OnTop, HWND_TOPMOST, HWND_NOTOPMOST), 0, 0, 0, 0, _
SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW
End Sub

Private Sub Timer1_Timer()
SetAlwaysOnTopMode Me.hWnd, True
End Sub

اگر منظورت از دایم همون دیم (Dim) یا همون Opacity فرم یا شفافیت باشه اینو بنویس:


Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2&

Private Sub Form_Load()
Dim bytOpacity As Byte
bytOpacity = 128 'Set the transparency level
Call SetWindowLong(Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(Me.hwnd, 0, bytOpacity, LWA_ALPHA)
End Sub


و