/// <summary> /// Add property page for this object /// </summary> /// <param name="lpfnAddPage"></param> /// <param name="lParam"></param> /// <returns></returns> int IShellPropSheetExt.AddPages(LPFNSVADDPROPSHEETPAGE pfnAddPage, IntPtr lParam) { try { // ADD PAGES HERE PropertySheetControl samplePage; PROPSHEETPAGE psp; IntPtr hPage; // In ActiveDirectory extensions, Get type of object, and show page according to class // GetADPath(); // if(sClass.ToLower() == "organizationalunit") {...} // create new inherited property page(s) and pass dobj to it samplePage = new DescriptionControl(); psp = samplePage.GetPSP(250, 230); hPage = Comctl32.CreatePropertySheetPage(ref psp); bool result = pfnAddPage(hPage, lParam); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } return(0); }
/// <summary> /// Creates the property page handle. /// </summary> public void CreatePropertyPageHandle(NativeBridge.NativeBridge nativeBridge) { Logging.Log("Creating property page handle via bridge."); // Create a prop sheet page structure. var psp = new PROPSHEETPAGE(); // Set the key properties. psp.dwSize = (uint)Marshal.SizeOf(psp); //psp.dwFlags = PSP.USETITLE | PSP.USECALLBACK/* | PSP.DEFAULT |*/| PSP.DLGINDIRECT; //psp.dwFlags = PSP.DEFAULT | PSP.USETITLE | PSP.DLGINDIRECT; //psp.hInstance = nativeBridge.GetInstanceHandle(); psp.hInstance = nativeBridge.GetInstanceHandle(); psp.dwFlags = PSP.PSP_DEFAULT | PSP.PSP_USETITLE | PSP.PSP_USECALLBACK; Logging.Log("Getting proxy host..."); psp.pTemplate = nativeBridge.GetProxyHostTemplate(); psp.pfnDlgProc = dialogProc; psp.pcRefParent = 0; psp.pfnCallback = callbackProc; psp.lParam = IntPtr.Zero; // If we have a title, set it. if (!string.IsNullOrEmpty(Target.PageTitle)) { psp.dwFlags |= PSP.PSP_USETITLE; psp.pszTitle = Target.PageTitle; } // If we have an icon, set it. if (Target.PageIcon != null && Target.PageIcon.Handle != IntPtr.Zero) { psp.dwFlags |= PSP.PSP_USEHICON; psp.hIcon = Target.PageIcon.Handle; } // Create a the property sheet page. HostWindowHandle = Comctl32.CreatePropertySheetPage(ref psp); // Log the host window handle. Logging.Log("Created Proxy Host: " + HostWindowHandle.ToString("X8")); }