- SharpShell_Source.zip
- sharpshell
- Dependencies
- Apex
- Apex.WinForms.dll
- SharpShell
- Samples
- ContextMenu
- CountLinesExtension
- DllContextMenuExtension
- DataHandler
- CopyPathDataHandler
- DropHandler
- XsdDropHandler
- IconHandler
- DllIconHandler
- IconOverlayHandler
- LockedFileIconOverlayHandler
- ReadOnlyFileIconOverlayHandler
- InfoTipHandler
- FolderInfoTipHandler
- PreviewHandler
- IconPreviewHandler
- PropertySheet
- DrivePropertySheet
- ResourcesPropertySheet
- TextFilePropertySheet
- SharedAssemblyInfo.cs
- SharpShell.sln
- SharpShell.Tests
- SharpShell
- SharpShellNativeBridge
- Tests
- SharpShell.Tests
- Todo.txt
- Tools
- ServerInspector
- ServerManager
- ShellExtensionManager
- SharpShell_Tools.zip
- SharpShell Tools
- Apex.dll
- Apex.WinForms.dll
- ServerInspector.exe
- ServerManager.exe
- SharpShell.dll
- SharpShell_Core_Library.zip
|
using System;
using System.Reflection;
using System.Windows.Forms;
using SharpShell.Diagnostics;
namespace SharpShell.Extensions
{
/// <summary>
/// Extensions for cotrols.
/// </summary>
public static class ControlExtensions
{
/// <summary>
/// Calls the window proc.
/// </summary>
/// <param name="me">Me.</param>
/// <param name="hWnd">The window handle.</param>
/// <param name="uMessage">The message.</param>
/// <param name="wParam">The w param.</param>
/// <param name="lParam">The l param.</param>
/// <returns>True if the message was handled.</returns>
public static bool WindowProc(this Control me, IntPtr hWnd, uint uMessage, IntPtr wParam, IntPtr lParam)
{
// Get the wndproc function.
try
{
var methodInfo = me.GetType().GetMethod("WndProc", BindingFlags.Instance | BindingFlags.NonPublic);
return (bool)methodInfo.Invoke(me, new object[] { new Message { HWnd = hWnd, WParam = wParam, LParam = lParam, Msg = (int)uMessage } });
}
catch (Exception exception)
{
Logging.Error("Failed to pass to wnproc", exception);
return false;
}
}
public static Control FindFocusedControl(this Control @this)
{
var container = @this as ContainerControl;
while (container != null)
{
@this = container.ActiveControl;
container = @this as ContainerControl;
}
return @this;
}
}
}
|
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.