initial oogynize check in _ this actually used to work!

This commit is contained in:
2016-02-14 21:16:31 -08:00
parent b183af5d55
commit 532ea133bc
337 changed files with 30692 additions and 0 deletions

View File

@@ -0,0 +1,249 @@
// For GUIDebugStepExe Debugging Only - Uncomment this #define
#define GUIDEBUGSTEPEXE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Drawing;
using System.Threading;
using System.Windows.Interop;
using System.EnterpriseServices;
using System.Windows;
using System.IO;
using System.Windows.Threading;
using System.Collections;
using System.Reflection;
// Ooganizer Namespaces
using Foo.GUILib;
using Foo.Platform;
using Foo.Platform.Win32;
using Foo.Platform.Interacters;
using Foo.Platform.ErrorReporting;
namespace Foo.ClientServices.ButtonWPForm
{
/// <summary>
/// ButtonWPFormCCW - Com Callable Wrapper Class exposed to ButtonHook.
/// This class is responsible for creating the ButtonWPForm (a form created in response to a ButtonHook W32 Click)
/// </summary>
[Guid("6F108F0B-9CEB-4d3d-B1D9-7685F9F39E50")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("Foo.ClientServices.ButtonWPFormCCW")]
[ComVisible(true)]
[ObjectPooling(Enabled = true, MinPoolSize = 1, MaxPoolSize = 2500, CreationTimeout = 5000)]
#if GUIDEBUGSTEPEXE
public class ButtonWPFormCCW : IButtonForm, IClientEvents
#else
public class ButtonWPFormCCW : ServicedComponent, IButtonForm, IClientEvents, IProcessInitializer
#endif
{
////
// Member Variables
////
private IntPtr m_hWnd = IntPtr.Zero;
private IntPtr m_hWndParent = IntPtr.Zero;
private IntPtr m_hWndButton = IntPtr.Zero;
BHInteracter.BUTTON_HOOK_STATE m_ButtonState = BHInteracter.BUTTON_HOOK_STATE.BUTTON_NONE;
// Declare the Log4net Variable
private static log4net.ILog Log = Logger.GetLog4NetInterface(MethodBase.GetCurrentMethod().DeclaringType);
#region Construction / Destruction
public ButtonWPFormCCW() {}
~ButtonWPFormCCW() {}
#endregion
#if GUIDEBUGSTEPEXE
#region GuiDebugStepCustomStarterStopers
public void Start()
{
Log.Info(string.Format("{0}() - ComponentState Application Is being started", MethodBase.GetCurrentMethod().Name));
ComponentState.ApplicationIsRunning = true;
}
public void Stop()
{
Log.Info(string.Format("{0}() - ComponentState Application Is being stopped", MethodBase.GetCurrentMethod().Name));
ComponentState.ApplicationIsRunning = false;
}
#endregion
#else
#region IProcessInitializer Members
public void Startup(object punkProcessControl)
{
Log.Info(string.Format("{0}() - ComponentState Application Is being started", MethodBase.GetCurrentMethod().Name));
ComponentState.ApplicationIsRunning = true;
}
public void Shutdown()
{
Log.Info(string.Format("{0}() - ComponentState Application Is being stopped", MethodBase.GetCurrentMethod().Name));
ComponentState.ApplicationIsRunning = false;
}
#endregion
#endif
#region ButtonHook Activation/Deactivation
/// <summary>
/// This is called first time when the buttonhook is attaching into a Window. It passes us
/// important handle information that we need or may need to communicate back state information.
/// </summary>
/// <param name="hParentWND">the handle to the window the buttonhook is hooked into</param>
/// <param name="hButtonWND">the handle to the button Window (we need it if we want to communicat with it)</param>
public void WPFThreadProc_ButtonWPForm_Activated(int hParentWND, int hButtonWND)
{
// Store the handle information for later use
m_hWndParent = (IntPtr)hParentWND;
m_hWndButton = (IntPtr)hButtonWND;
}
/// <summary>
/// Called when the buttonhook is unattaching itself from a Window.
/// Here, we can do any cleanup that we may have to do.
/// </summary>
public void WPFThreadProc_ButtonWPForm_Deactivated()
{
try
{
if ((m_hWndParent != IntPtr.Zero) && (ComponentState.ButtonFormMgr != null))
ComponentState.ButtonFormMgr.Delete_ButtonFormDISP((int)m_hWndParent);
}
catch (Exception e)
{
Log.Error(string.Format("{0}() - error thrown", MethodBase.GetCurrentMethod().Name), e);
}
}
#endregion
#region Custom Events
/// <summary>
/// This function is called when the Win32 button is clicked. This function should
/// handle the creation of the wpfform and display it over the window
/// </summary>
/// <returns>the window handle to the newly created wpfform to be stored by the caller</returns>
public int W32BUTTONCLICKED()
{
try
{
// Let's Position the Window and snapshot it...
Image snapshot = null;
try
{
BHInteracter.SetW32ButtonToNewState(m_hWndParent, BHInteracter.BUTTON_HOOK_STATE.BUTTON_NONE);
System.Threading.Thread.Sleep(100);
snapshot = GUICommon.PositionWindowToGoldenPosAndTakeSnapshot(m_hWndParent, true);
}
catch (Exception e)
{
UserError.Show("Snapshot Failed", "Obtaining a Snaphot for the Window Failed.");
Log.Error(string.Format("{0}() - error thrown", MethodBase.GetCurrentMethod().Name), e);
return 0;
}
if (snapshot != null)
{
// Create the WpfForm object and then create the wpfform window and show it.
ComponentState.ButtonFormMgr.Create_ButtonFormDISP((int)m_hWndParent, snapshot);
m_hWnd = (IntPtr) ComponentState.ButtonFormMgr.Create_ButtonFormWindowDISP((int)m_hWndParent);
return (int)m_hWnd;
}
else
{
UserError.Show("Snapshot Failed", "Obtaining a Snaphot for the Window Failed.");
Log.Error(string.Format("{0}() - UserError.Show() - Obtaining a Snapshot Failed", MethodBase.GetCurrentMethod().Name));
return 0;
}
}
catch (Exception e)
{
UserError.Show("Snapshot Failed", "Obtaining a Snaphot for the Window Failed.");
Log.Error(string.Format("{0}() - error thrown", MethodBase.GetCurrentMethod().Name), e);
return 0;
}
}
#endregion
#region Window Events we can extend on
public void WindowEvent_MaximizeOccured(int nHeight, int nWidth)
{
}
public void WindowEvent_MinimizeOccured()
{
}
public void WindowEvent_WindowActivated()
{
}
public void WindowEvent_WindowDeactivated()
{
}
#endregion
#region Resolver Client Events
public void ReResolve(int pid, IntPtr hWnd)
{
Log.Debug(string.Format("{0}() - Debug - ReResolve is called for {0} and {1}", pid, hWnd));
}
public void hWndInitialActivate(int pid, IntPtr hWnd, string ProcessStartUpPrms)
{
try
{
m_ButtonState = BHInteracter.SetW32ButtonToNewState(m_hWndParent, BHInteracter.BUTTON_HOOK_STATE.BUTTON_ADD);
Log.Debug(string.Format("{0}() - --- TEST --- ProcessStartUpPrms", ProcessStartUpPrms));
//// We need to resolve the window here
//ResolverDispatch resolver = new Resolver.ResolverDispatch();
//ArtifactGroup artifacts = resolver.GetArtifacts((IntPtr)hWnd);
//// If we can resolve this window then we want to be checking
//if (artifacts.Length >= 1)
//{
// Artifact curArtifact = artifacts.GetPrimary;
// bool bFound = SrvrCommon.IsArtifactInCurrentWorkspace(curArtifact);
// if (bFound)
// m_ButtonState = BHInteracter.SetW32ButtonToNewState(m_hWndParent, BHInteracter.BUTTON_HOOK_STATE.BUTTON_DELETE);
// else
// m_ButtonState = BHInteracter.SetW32ButtonToNewState(m_hWndParent, BHInteracter.BUTTON_HOOK_STATE.BUTTON_ADD);
//}
//else
//{
// Log.Error(string.Format("{0}() - WPForm could not resolve this Window - disabling the Caption Button", MethodBase.GetCurrentMethod().Name));
// m_ButtonState = BHInteracter.SetW32ButtonToNewState(m_hWndParent, BHInteracter.BUTTON_HOOK_STATE.BUTTON_NONE);
//}
}
catch (Exception e)
{
Log.Error(string.Format("{0}() - WPForm could not resolve this Window - disabling the Caption Button", MethodBase.GetCurrentMethod().Name), e);
}
}
public void hWndLastDeactivate(int pid, IntPtr hWnd)
{
Log.Debug(string.Format("{0}() - Debug - hWndLastDeactivate is called for {0} and {1}", pid, hWnd));
}
public void DragNDropOccured(int pid, IntPtr hWnd, int nFiles, string SemiColonSepFileNames)
{
Log.Debug(string.Format("{0}() - Debug - DragNDropOccured is called with {0} and {1} and {2}", pid, hWnd, nFiles, SemiColonSepFileNames));
}
public void OpenOrSaveFileDialogOccured(int pid, IntPtr hWnd, string possibleLocAndFileName, string FileTypes)
{
Log.Debug(string.Format("{0}() - Debug - DragNDropOccured is called with {0} and {1} and {2}", pid, hWnd, possibleLocAndFileName, FileTypes));
}
#endregion
}
}