M * M * A
یک شنبه 19 شهریور 1385, 09:58 صبح
چگونه میشه فلشی که در برنامه کارشده را راست کلیک شو قفل کرد که منویی باز نکنه؟:متعجب:
oVERfLOW
یک شنبه 19 شهریور 1385, 15:38 عصر
تنها راه ممکن استفاده از تکنیک SubClssing هست
یعنی باید پیامهای ارسالی به پنجرهی Flash رو بگیرید و اضافی ها رو تعطیل کنید!
1. frmMain.frm
Private Sub Form_Load()
    Dim FlashHwnd As Long
    Dim strAppPath As String
    'Find the Fash ActiveX window handle
    FlashHwnd = FindWindowEx(hwnd, 0&, "MacromediaFlashPlayerActiveX" & vbNullChar, vbNullString)
    'Find old callback address to send messages to
    OldWindowProc = GetWindowLong(FlashHwnd, -4&)
    'Assign new callback address to Flash window
    SetWindowLong FlashHwnd, -4&, AddressOf myCallBack
   
    'Load Flash movie
    strAppPath = App.Path
    If Len(strAppPath) = 3 Then strAppPath = Left(strAppPath, 2)
    With ShockwaveFlash1
        .Left = 0
        .Top = 0
        .Width = 640
        .Height = 480
        .Movie = strAppPath & "\oVERfLOW.swf"
        .Play
    End With
End Sub
2. modMain.bas
Option Explicit
Public OldWindowProc As Long
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_KEYUP = &H101
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Public 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
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Function myCallBack(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Long
    
    'Detect if message is Right-Click
    If Msg = WM_RBUTTONUP Or Msg = WM_RBUTTONDOWN Then
        myCallBack = 1 'Return that message was processed
        Exit Function
    ElseIf Msg = WM_KEYUP And wp = 27 Then 'If Esc key pressed
        myCallBack = 1
        Unload frmMain
        Exit Function
    End If
    'Send other messages to original WindowProc
    myCallBack = CallWindowProc(OldWindowProc, hwnd, Msg, wp, lp)
    
End Function
M * M * A
یک شنبه 19 شهریور 1385, 20:23 عصر
با تشکر از راهنمایی شما دوست گرامی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.