using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Foo.ClientServices.ButtonWPForm
{
    /// <summary>
    /// Button Hook uses the IClientEvents Interface to let us know of certain events
    /// which may require us to re-resolve the Window.
    /// ~This is an important feature we need to do be accurate with all our artifacts.
    ///  We are piggy-backing on ButtonWPForm in order to have less components
    /// </summary>
    [Guid("F1AF5CAD-B9AB-4a20-80F1-EB68C577ABC4")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [ComVisible(true)]
    public interface IClientEvents
    {
        // An Event occured that could potentially have made artifact changes
        void ReResolve(int pid, IntPtr hWnd);

        // First and Last Activation Events
        void hWndInitialActivate(int pid, IntPtr hWnd, string ProcessStartUpPrms);
        void hWndLastDeactivate(int pid, IntPtr hWnd);

        // User File Events
        void DragNDropOccured(int pid, IntPtr hWnd, int nFiles, string SemiColonSepFileNames);
        void OpenOrSaveFileDialogOccured(int pid, IntPtr hWnd, string possibleLocAndFileName, string FileTypes);
    }
}