نمایش نتایج 1 تا 7 از 7

نام تاپیک: نرم افزار به شکل Active Window یا به شکل Inactive Window

  1. #1

    نرم افزار به شکل Active Window یا به شکل Inactive Window

    سلام دوستان من باز با یک مشکل دیگه مواجه شدم :oops: من میخوام برنامه ای رو که مینویسم بتون تشخیص بده در پنجره Active (کاربر در حال دیدن و کار کردن هست) یا در پنجره Inactive( کاربر با برنامه کار نمیکنه ) قرار داره .
    پیشاپیش ممنون :)

  2. #2
    دوست عزیز, با Subclassing میشه اینکارو انجام داد


    ' in a form
    Option Explicit

    Public Sub Activate()
    Print "Activated"
    End Sub

    Public Sub DeActivate()
    Print "Deactivated"
    End Sub

    Private Sub Form_Load()
    gHW = Me.hWnd
    Hook
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    UnHook
    End Sub



    ' in a module
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
    (ByVal lpPrevWndFunc As Long, _
    ByVal hWnd As Long, _
    ByVal Msg As Long, _
    ByVal wParam As Long, _
    ByVal lParam 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 Const GWL_WNDPROC = -4
    Private Const WM_ACTIVATEAPP = &H8
    Private Const WM_DEACTIVATEAPP = &H105A

    Private lpPrevWndProc As Long
    Global gHW As Long

    Public Sub Hook()
    lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, _
    AddressOf WindowProc)
    End Sub

    Public Sub UnHook()
    Dim lngReturnValue As Long
    lngReturnValue = SetWindowLong(gHW, GWL_WNDPROC, lpPrevWndProc)
    End Sub

    Function WindowProc(ByVal hw As Long, _
    ByVal uMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long

    Select Case uMsg
    Case WM_ACTIVATEAPP
    Call Form1.DeActivate
    Case WM_DEACTIVATEAPP
    Call Form1.Activate
    Case Else
    WindowProc = CallWindowProc(lpPrevWndProc, hw, _
    uMsg, wParam, lParam)
    End Select

    End Function

  3. #3
    آقا ممنون خیلی خیلی ممنون از راهنماییتون واقعا ممنون هستم :) :) :) :idea:

  4. #4
    سلام آقا یک مشکل دیگه :( وقتی داخل فرم برنامه از PictureBox استفاده میکنم چرا DeActivate کار نمیکنه؟ :?:
    :( :( :( :(

  5. #5
    :?: :?: :?:
    :( :( :(

  6. #6
    ببخشید دوست عزیز, یک bug کوچیک بود.



    ' in module
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
    (ByVal lpPrevWndFunc As Long, _
    ByVal hWnd As Long, _
    ByVal Msg As Long, _
    ByVal wParam As Long, _
    ByVal lParam 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 Const GWL_WNDPROC = -4
    Private Const WM_ACTIVATEAPP = &H105A
    Private Const WM_DEACTIVATEAPP = &H86

    Private lpPrevWndProc As Long
    Global gHW As Long

    Public Sub Hook()
    lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, _
    AddressOf WindowProc)
    End Sub

    Public Sub UnHook()
    Dim lngReturnValue As Long
    lngReturnValue = SetWindowLong(gHW, GWL_WNDPROC, lpPrevWndProc)
    End Sub

    Function WindowProc(ByVal hw As Long, _
    ByVal uMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long

    Select Case uMsg
    Case WM_ACTIVATEAPP
    Call Form1.Activate
    Case 134
    If wParam = 0 Then
    Call Form1.DeActivate
    End If
    Case Else
    End Select
    WindowProc = CallWindowProc(lpPrevWndProc, hw, _
    uMsg, wParam, lParam)

    End Function

  7. #7
    ممنون مشکل حل شد :)

تاپیک های مشابه

  1. تبدیل arabic window یا همون window-1256 به utf-8
    نوشته شده توسط alirezador در بخش PHP
    پاسخ: 5
    آخرین پست: چهارشنبه 22 خرداد 1387, 22:39 عصر
  2. بسته شدن window بدون کلیک
    نوشته شده توسط shaparak در بخش طراحی وب (Web Design)
    پاسخ: 3
    آخرین پست: چهارشنبه 01 فروردین 1386, 12:19 عصر
  3. مشکل در مورد ()window.open() , window.close
    نوشته شده توسط nokhod در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 08 مهر 1385, 11:15 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •