using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace FlashPlayer
public partialclass
Form1 : Form
{
#region Disable Flash's Context Menu
private
const
int GWL_WNDPROC=
-4;
public
delegate IntPtr FlaWndProc(IntPtr hWnd,int msg, IntPtr wParam, IntPtr lParam);

private IntPtr OldWndProc=
IntPtr.Zero;
private FlaWndProc Wpr=
null;

[DllImport("user32.dll",
CharSet = CharSet.Auto)]
public
static
extern IntPtr SetWindowLong(IntPtr hWnd,int nIndex, FlaWndProc wndProc);
[DllImport("user32.dll",
CharSet = CharSet.Auto)]
public
static
extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd,int msg, IntPtr wParam, IntPtr lParam);

private IntPtr FlashWndProc(IntPtr hWnd,int
msg, IntPtr wParam, IntPtr lParam)
{
if(msg
== 516)
return (IntPtr)0;
return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam);
}
#endregion

public Form1()
{
InitializeComponent();
}

private
void Form1_Load(object sender, EventArgs e) {
this.Wpr
= new FlaWndProc(this.FlashWndProc);
this.OldWndProc= SetWindowLong(axShockwaveFlash1.Handle,
GWL_WNDPROC, Wpr);
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace FlashPlayer
public partialclass
Form1 : Form{
#region Disable Flash's Context Menu
private
const
int GWL_WNDPROC=
-4;
public
delegate IntPtr FlaWndProc(IntPtr hWnd,int msg, IntPtr wParam, IntPtr lParam);
private IntPtr OldWndProc=
IntPtr.Zero;
private FlaWndProc Wpr=
null;
[DllImport("user32.dll",
CharSet = CharSet.Auto)]
public
static
extern IntPtr SetWindowLong(IntPtr hWnd,int nIndex, FlaWndProc wndProc);
[DllImport("user32.dll",
CharSet = CharSet.Auto)]
public
static
extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd,int msg, IntPtr wParam, IntPtr lParam);
private IntPtr FlashWndProc(IntPtr hWnd,int
msg, IntPtr wParam, IntPtr lParam)
{
if(msg
== 516)
return (IntPtr)0;
return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam);
}
#endregion
public Form1()
{
InitializeComponent();
}
private
void Form1_Load(object sender, EventArgs e) {
this.Wpr
= new FlaWndProc(this.FlashWndProc);
this.OldWndProc= SetWindowLong(axShockwaveFlash1.Handle,
GWL_WNDPROC, Wpr);
}
}
}
本文介绍了一种在Windows应用程序中禁用Flash播放器右键菜单的方法,通过使用P/Invoke调用Windows API来拦截并处理Flash播放器的消息,从而实现了自定义窗口过程来阻止显示Flash的上下文菜单。
664

被折叠的 条评论
为什么被折叠?



