Click here to Skip to main content
15,896,207 members
Articles / Programming Languages / C#

Intelligent Screen Saver

Rate me:
Please Sign up or sign in to vote.
3.87/5 (17 votes)
15 Aug 2007CPOL2 min read 184.1K   10.9K   111  
A utility to control screen saver on your computer using computer vision (human face detection), rather than idle timer.
namespace dshow.Core
{
	using System;
	using System.Runtime.InteropServices;

	// IMediaEvent interface
	//
	// The IMediaEvent interface contains methods for retrieving event
	// notifications and for overriding the filter graph's default
	// handling of events.
	//
	[ComImport,
	Guid("56A868B6-0AD4-11CE-B03A-0020AF0BA770"),
	InterfaceType(ComInterfaceType.InterfaceIsDual)]
	internal interface IMediaEvent
	{
		// Retrieves a handle to a manual-reset event that remains
		// signaled while the queue contains event notifications
		[PreserveSig]
		int GetEventHandle(
			out IntPtr hEvent);

		// Retrieves the next event notification from the event queue
		[PreserveSig]
		int GetEvent(
			out int lEventCode,
			out int lParam1,
			out int lParam2,
			int msTimeout);

		// Waits for the filter graph to render all available data
		[PreserveSig]
		int GetEvent(
			int msTimeout,
			out int pEvCode);

		// Cancels the filter graph manager's default handling of
		// a specified event
		[PreserveSig]
		int CancelDefaultHandling(
			int lEvCode);

		// Restores the filter graph manager's default handling of
		// a specified event
		[PreserveSig]
		int RestoreDefaultHandling(
			int lEvCode);

		// Frees resources associated with the parameters of an event
		[PreserveSig]
		int FreeEventParams(
			int lEventCode,
			int lParam1,
			int lParam2);
	}


	// IMediaEventEx interface
	//
	// IMediaEventEx adds methods that enable an application window
	// to receive messages when events occur
	//
	[ComImport,
	Guid("56A868C0-0AD4-11CE-B03A-0020AF0BA770"),
	InterfaceType(ComInterfaceType.InterfaceIsDual)]
	internal interface IMediaEventEx
	{
		// Retrieves a handle to a manual-reset event that remains
		// signaled while the queue contains event notifications
		[PreserveSig]
		int GetEventHandle(
			out IntPtr hEvent);

		// Retrieves the next event notification from the event queue
		[PreserveSig]
		int GetEvent(
			out int lEventCode,
			out int lParam1,
			out int lParam2,
			int msTimeout);

		// Waits for the filter graph to render all available data
		[PreserveSig]
		int WaitForCompletion(
			int msTimeout,
			out int pEvCode);

		// Cancels the filter graph manager's default handling of
		// a specified event
		[PreserveSig]
		int CancelDefaultHandling(
			int lEvCode);

		// Restores the filter graph manager's default handling of
		// a specified event
		[PreserveSig]
		int RestoreDefaultHandling(
			int lEvCode);

		// Frees resources associated with the parameters of an event
		[PreserveSig]
		int FreeEventParams(
			int lEventCode,
			int lParam1,
			int lParam2);

		// Registers a window to process event notifications
		[PreserveSig]
		int SetNotifyWindow(
			IntPtr hwnd,
			int lMsg,
			IntPtr lInstanceData);

		// Enables or disables event notifications
		// 0 - ON, 1 - OFF
		[PreserveSig]
		int SetNotifyWindow(
			int lNoNotifyFlags);

		// Determines whether event notifications are enabled
		[PreserveSig]
		int GetNotifyFlags(
			out int lNoNotifyFlags);
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Pakistan Pakistan
BCSE - Software Engineering (2000 - 2004)
Foundation University Institute of Management and Computer Sciences.
Pakistan.

MS - Computer Sciences (2004 - 2005)
Lahore Univeristy of Management Sciences
Pakistan.

Comments and Discussions