Click here to Skip to main content
15,888,454 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: win32 dialogbox Pin
Jibesh11-Feb-13 6:57
professionalJibesh11-Feb-13 6:57 
QuestionRe: win32 dialogbox Pin
«_Superman_»11-Feb-13 18:03
professional«_Superman_»11-Feb-13 18:03 
AnswerRe: win32 dialogbox Pin
venkatesh5286711-Feb-13 20:37
venkatesh5286711-Feb-13 20:37 
GeneralRe: win32 dialogbox Pin
«_Superman_»11-Feb-13 20:47
professional«_Superman_»11-Feb-13 20:47 
GeneralRe: win32 dialogbox Pin
venkatesh5286711-Feb-13 21:06
venkatesh5286711-Feb-13 21:06 
GeneralRe: win32 dialogbox Pin
venkatesh5286711-Feb-13 21:11
venkatesh5286711-Feb-13 21:11 
GeneralRe: win32 dialogbox Pin
«_Superman_»11-Feb-13 22:13
professional«_Superman_»11-Feb-13 22:13 
GeneralRe: win32 dialogbox Pin
venkatesh5286711-Feb-13 23:56
venkatesh5286711-Feb-13 23:56 
hi ,

please check this code;

Thanks
venkatesh

//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) 2012 Ilantus Technologies Pvt. Ltd.. All rights reserved.
//
//

#ifndef WIN32_NO_STATUS
#include <ntstatus.h>
#define WIN32_NO_STATUS
#endif

#include <tchar.h>
#include "PasswordResetCredential.h"
#include "guid.h"
#include "resource.h"
// Added by Suren & Gopi
#include <windows.h>
#include <winreg.h>
#include <stdio.h>
#include <exdisp.h>
#include "ax.h"

extern HINSTANCE hInstance;
typedef int (WINAPI * PFRUNGATEFRAMEWORKPWDRESET) (HWND, PWSTR, PWSTR, PWSTR);

// PasswordResetCredential ////////////////////////////////////////////////////////
//venkat
//HMODULE hInst;
char IB_res[10];
double defaultValue = 0;
HWND hwebf;
bool loaded, has_clicked, isquit=false;



INT_PTR CALLBACK InputBox_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{



case WM_INITDIALOG:
{
char url[1024] = {0};//venkat come

HKEY keyHandle = 0;
DWORD size = sizeof(url);
DWORD type=0;
/////////
ShowWindow(hwnd,SW_SHOWMAXIMIZED);
HWND hk = GetDlgItem(hwnd,IDC_CUSTOM1);
RECT rc = {0};
GetClientRect(hwnd,&rc);
SetWindowPos(hk,0,0,0,rc.right,rc.bottom,SWP_SHOWWINDOW);
//HINSTANCE hInstance1;
// HICON hIcon;
//hIcon =(HICON)LoadImage( hInstance1,
// MAKEINTRESOURCE(IDI_ICON1),
// IMAGE_ICON,
// GetSystemMetrics(SM_CXSMICON),
// GetSystemMetrics(SM_CYSMICON),
// 0);
// if(hIcon)
// {
// SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
// }
/////////
HWND hX = GetDlgItem(hwnd,IDC_CUSTOM1);
SendMessage(hX,AX_INPLACE,1,0);

LONG ret = RegOpenKey(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Ilantus\\PMP", &keyHandle);
if(ret == ERROR_SUCCESS)
{
RegQueryValueEx( keyHandle, L"url", 0, &type, (BYTE*)url, &size);
}
RegCloseKey(keyHandle);

IWebBrowser2* wb = 0;
SendMessage(hX,AX_QUERYINTERFACE,(WPARAM)&IID_IWebBrowser2,(LPARAM)&wb);
if (wb)
{
wb->Navigate((BSTR)url,0,0,0,0);
wb->Release();
}

return TRUE;
}

//case WM_RBUTTONDBLCLK:
// {
// ShowWindow(hwnd,SW_SHOWMAXIMIZED);
// return TRUE;
// }
case WM_LBUTTONDBLCLK:
{
ShowWindow(hwnd,SW_SHOWMAXIMIZED);
return TRUE;
}

case WM_COMMAND:
switch(LOWORD(wParam))
{

case IDOK:
/* if (!GetDlgItemText(hwnd, IDC_EDIT, IB_res, 10))
*IB_res = 0;*/
case IDCANCEL:
EndDialog(hwnd, wParam);
break;
}
break;


default:
return FALSE;
}
return TRUE;
}

//HINSTANCE hInstance;
HWND hwndParent;
/////////venkat

PasswordResetCredential::PasswordResetCredential():
_cRef(1),
_pCredProvCredentialEvents(NULL)
{
DllAddRef();

ZeroMemory(_rgCredProvFieldDescriptors, sizeof(_rgCredProvFieldDescriptors));
ZeroMemory(_rgFieldStatePairs, sizeof(_rgFieldStatePairs));
ZeroMemory(_rgFieldStrings, sizeof(_rgFieldStrings));

}


PasswordResetCredential::~PasswordResetCredential()
{
for (int i = 0; i < ARRAYSIZE(_rgFieldStrings); i++)
{
CoTaskMemFree(_rgFieldStrings[i]);
CoTaskMemFree(_rgCredProvFieldDescriptors[i].pszLabel);
}

DllRelease();
}

// Initializes one credential with the field information passed in.
// Set the value of the SFI_FIMTITLE field to pwzUsername.
// Optionally takes a password for the SetSerialization case.
HRESULT PasswordResetCredential::Initialize(
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* rgcpfd,
const FIELD_STATE_PAIR* rgfsp,
PCWSTR pwzUsername,
PCWSTR pwzPassword
)
{
UNREFERENCED_PARAMETER(pwzPassword);

HRESULT hr = S_OK;

// Copy the field descriptors for each field. This is useful if you want to vary the
// field descriptors based on what Usage scenario the credential was created for.
for (DWORD i = 0; SUCCEEDED(hr) && i < ARRAYSIZE(_rgCredProvFieldDescriptors); i++)
{
_rgFieldStatePairs[i] = rgfsp[i];
hr = FieldDescriptorCopy(rgcpfd[i], &_rgCredProvFieldDescriptors[i]);
}

// Initialize the String values of all the fields.
if (SUCCEEDED(hr))
{
hr = SHStrDupW(L"Forgot Password", &_rgFieldStrings[SFI_FIMTITLE]);
}
if (SUCCEEDED(hr))
{
hr = SHStrDupW(pwzUsername ? pwzUsername : L"", &_rgFieldStrings[SFI_USERNAME]);
}
if (SUCCEEDED(hr))
{
hr = SHStrDupW(L"Submit", &_rgFieldStrings[SFI_SUBMIT_BUTTON]);
}
if (SUCCEEDED(hr))
{
hr = SHStrDupW(L"e.g. ilantususer", &_rgFieldStrings[SFI_SAMPLE]);
}

return S_OK;
}

// LogonUI calls this in order to give us a callback in case we need to notify it of anything.
HRESULT PasswordResetCredential::Advise(
ICredentialProviderCredentialEvents* pcpce
)
{
if (_pCredProvCredentialEvents != NULL)
{
_pCredProvCredentialEvents->Release();
}
_pCredProvCredentialEvents = pcpce;
_pCredProvCredentialEvents->AddRef();

return S_OK;
}

// LogonUI calls this to tell us to release the callback.
HRESULT PasswordResetCredential::UnAdvise()
{
if (_pCredProvCredentialEvents)
{
_pCredProvCredentialEvents->Release();
}
_pCredProvCredentialEvents = NULL;

return S_OK;
}

void fetchPortalURL(WCHAR username) {
//char url[1024] = {0};//venkat come
// HKEY keyHandle = 0;
//DWORD size = sizeof(url);
//DWORD type=0;
//
//LONG ret = RegOpenKey(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Ilantus\\PMP", &keyHandle);
//if(ret == ERROR_SUCCESS)
//{
// RegQueryValueEx( keyHandle, L"url", 0, &type, (BYTE*)url, &size);
//}
//RegCloseKey(keyHandle);
////venkat
//MessageBox(NULL,NULL,L"hi23",MB_SYSTEMMODAL|MB_ICONINFORMATION);
OleInitialize(0);
if (!AXRegister())


DialogBox((HINSTANCE)g_hinst, MAKEINTRESOURCE(IDD_DIALOG1),NULL, InputBox_WndProc);

////venkat
//MessageBox(NULL, (LPCWSTR)url, L"Ilantus PMP URL", MB_SYSTEMMODAL|MB_ICONINFORMATION);
//system(( " c:\\progra~1\\intern~1\\iexplore.exe www.google.co.in"));
//HINSTANCE hInstance = ShellExecute(NULL, L"open", (LPCWSTR)url, NULL, NULL, SW_MAXIMIZE);
}


// LogonUI calls this function when our tile is selected (zoomed).
// If you simply want fields to show/hide based on the selected state,
// there's no need to do anything here - you can set that up in the
// field definitions. But if you want to do something
// more complicated, like change the contents of a field when the tile is
// selected, you would do it here.
HRESULT PasswordResetCredential::SetSelected(BOOL* pbAutoLogon)
{
*pbAutoLogon = FALSE;
//Ilantus
fetchPortalURL((WCHAR)"");

return S_FALSE;
}


// Similarly to SetSelected, LogonUI calls this when your tile was selected
// and now no longer is. The most common thing to do here (which we do below)
// is to clear out the password field.
HRESULT PasswordResetCredential::SetDeselected()
{
HRESULT hr = S_OK;

if (_rgFieldStrings[SFI_USERNAME])
{
//CoTaskMemFree(_rgFieldStrings[SFI_USERNAME]);
hr = wcscpy_s(_rgFieldStrings[SFI_USERNAME], wcslen(L"") + 1, L"");

if (SUCCEEDED(hr) && _pCredProvCredentialEvents)
{
_pCredProvCredentialEvents->SetFieldString(this, SFI_USERNAME, _rgFieldStrings[SFI_USERNAME]);
}
}

return hr;
}

// Gets info for a particular field of a tile. Called by logonUI to get information to
// display the tile.
HRESULT PasswordResetCredential::GetFieldState(
DWORD dwFieldID,
CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs,
CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis
)
{
HRESULT hr;

// Validate paramters.
if ((dwFieldID < ARRAYSIZE(_rgFieldStatePairs)) && pcpfs && pcpfis)
{
*pcpfs = _rgFieldStatePairs[dwFieldID].cpfs;
*pcpfis = _rgFieldStatePairs[dwFieldID].cpfis;

hr = S_OK;
}
else
{
hr = E_INVALIDARG;
}

return hr;
}

// Sets ppwsz to the string value of the field at the index dwFieldID.
HRESULT PasswordResetCredential::GetStringValue(
DWORD dwFieldID,
PWSTR* ppwsz
)
{
HRESULT hr;

// Check to make sure dwFieldID is a legitimate index.
if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) && ppwsz)
{
// Make a copy of the string and return that. The caller
// is responsible for freeing it.
hr = SHStrDupW(_rgFieldStrings[dwFieldID], ppwsz);
}
else
{
hr = E_INVALIDARG;
}

return hr;
}

// Gets the image to show in the user tile.
HRESULT PasswordResetCredential::GetBitmapValue(
DWORD dwFieldID,
HBITMAP* phbmp
)
{
HRESULT hr;

// Validate paramters.
if ((SFI_TILEIMAGE == dwFieldID) && phbmp)
{
HBITMAP hbmp = LoadBitmap(HINST_THISDLL, MAKEINTRESOURCE(IDB_TILE_IMAGE));
if (hbmp != NULL)
{
hr = S_OK;
*phbmp = hbmp;
}
else
{
hr = HRESULT_FROM_WIN32(GetLastError());
}
}
else
{
hr = E_INVALIDARG;
}

return hr;
}

// Sets pdwAdjacentTo to the index of the field the submit button should be
// adjacent to. We recommend that the submit button is placed next to the last
// field which the user is required to enter information in. Optional fields
// should be below the submit button.
HRESULT PasswordResetCredential::GetSubmitButtonValue(
DWORD dwFieldID,
DWORD* pdwAdjacentTo
)
{
HRESULT hr;

// Validate parameters.
if ((SFI_SUBMIT_BUTTON == dwFieldID) && pdwAdjacentTo)
{
// pdwAdjacentTo is a pointer to the fieldID you want the submit
// button to appear next to.
*pdwAdjacentTo = SFI_USERNAME;


hr = S_OK;
}
else
{
hr = E_INVALIDARG;
}

return hr;
}

// Sets the value of a field which can accept a string as a value.
// This is called on each keystroke when a user types into an edit field.
HRESULT PasswordResetCredential::SetStringValue(
DWORD dwFieldID,
PCWSTR pwz
)
{
HRESULT hr;

// Validate parameters.
if (dwFieldID < ARRAYSIZE(_rgCredProvFieldDescriptors) &&
(CPFT_EDIT_TEXT == _rgCredProvFieldDescriptors[dwFieldID].cpft ||
CPFT_PASSWORD_TEXT == _rgCredProvFieldDescriptors[dwFieldID].cpft))
{
PWSTR* ppwszStored = &_rgFieldStrings[dwFieldID];
CoTaskMemFree(*ppwszStored);
hr = SHStrDupW(pwz, ppwszStored);
}
else
{
hr = E_INVALIDARG;
}

return hr;
}

//-------------
// The following methods are for logonUI to get the values of various UI elements and then communicate
// to the credential about what the user did in that field. However, these methods are not implemented
// because our tile doesn't contain these types of UI elements
HRESULT PasswordResetCredential::GetCheckboxValue(
DWORD dwFieldID,
BOOL* pbChecked,
PWSTR* ppwszLabel
)
{
UNREFERENCED_PARAMETER(dwFieldID);
UNREFERENCED_PARAMETER(pbChecked);
UNREFERENCED_PARAMETER(ppwszLabel);

return E_NOTIMPL;
}

HRESULT PasswordResetCredential::GetComboBoxValueCount(
DWORD dwFieldID,
DWORD* pcItems,
DWORD* pdwSelectedItem
)
{
UNREFERENCED_PARAMETER(dwFieldID);
UNREFERENCED_PARAMETER(pcItems);
UNREFERENCED_PARAMETER(pdwSelectedItem);

return E_NOTIMPL;
}

HRESULT PasswordResetCredential::GetComboBoxValueAt(
DWORD dwFieldID,
DWORD dwItem,
PWSTR* ppwszItem
)
{
UNREFERENCED_PARAMETER(dwFieldID);
UNREFERENCED_PARAMETER(dwItem);
UNREFERENCED_PARAMETER(ppwszItem);

return E_NOTIMPL;
}

HRESULT PasswordResetCredential::SetCheckboxValue(
DWORD dwFieldID,
BOOL bChecked
)
{
UNREFERENCED_PARAMETER(dwFieldID);
UNREFERENCED_PARAMETER(bChecked);

return E_NOTIMPL;
}

HRESULT PasswordResetCredential::SetComboBoxSelectedValue(
DWORD dwFieldId,
DWORD dwSelectedItem
)
{
UNREFERENCED_PARAMETER(dwFieldId);
UNREFERENCED_PARAMETER(dwSelectedItem);

return E_NOTIMPL;
}

HRESULT PasswordResetCredential::CommandLinkClicked(DWORD dwFieldID)
{
UNREFERENCED_PARAMETER(dwFieldID);
return E_NOTIMPL;
}
//------ end of methods for controls we don't have in our tile ----//


// Collect the username and password into a serialized credential for the correct usage scenario
// (logon/unlock is what's demonstrated in this sample). LogonUI then passes these credentials
// back to the system to log on.
HRESULT PasswordResetCredential::GetSerialization(
CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
PWSTR* ppwszOptionalStatusText,
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
)
{
UNREFERENCED_PARAMETER(pcpgsr);
UNREFERENCED_PARAMETER(pcpcs);
UNREFERENCED_PARAMETER(ppwszOptionalStatusText);
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);

HWND phwndOwner = NULL;
HMODULE hGateFrameworkDll = NULL;
PFRUNGATEFRAMEWORKPWDRESET pfRunGateFrameworkPwdReset = NULL;

PWSTR domain = NULL;
PWSTR username = NULL;
PWSTR separator = NULL;
PWSTR input_username;

// Get the HWnd of the parent
if (FAILED(_pCredProvCredentialEvents->OnCreatingWindow(&phwndOwner)))
{
phwndOwner = NULL;
}

if (FAILED(SHStrDupW(_rgFieldStrings[SFI_USERNAME], &input_username)))
{
MessageBox(
phwndOwner,
_T("Fail: SHStrDupW(_rgFieldStrings[SFI_USERNAME], &input_username)"),
_T("Error"),
MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL
);
goto FAIL;
}

if (!input_username || *input_username == '\0')
{
MessageBox(
phwndOwner,
_T("Please input Username"),
_T("Error"),
MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL
);
goto FAIL;




/////////////////////////////////////////////////////////////////
//DialogBox();
////////////////////////////////////////////////////////////////
}

//if ((separator = wcschr(input_username, '\\')) != NULL)
//{
// // assume input is in the form of domain\username
// *separator = '\0';
// domain = input_username;
// username = separator + 1;
//}
//else if ((separator = wcschr(input_username, '@')) != NULL)
//{
// // assume input is in the form of UPN
// domain = NULL;
// username = input_username;
//}
//else
//{
// MessageBox(
// phwndOwner,
// _T("Please input Domain\\Username or UPN"),
// _T("Error"),
// MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
// );
// goto FAIL;
//}


//Ilantus
//fetchPortalURL((WCHAR)username);


//// Load the GateFramework dll
//hGateFrameworkDll = LoadLibrary(GATE_FRAMEWORK_MODULE);
//if (!hGateFrameworkDll)
//{
// MessageBox(
// phwndOwner,
// _T("Fail: LoadLibrary(GATE_FRAMEWORK_MODULE)"),
// _T("Error"),
// MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
// );
// goto FAIL;
//}

//pfRunGateFrameworkPwdReset = (PFRUNGATEFRAMEWORKPWDRESET)GetProcAddress(hGateFrameworkDll, "RunPwdReset");
//if (!pfRunGateFrameworkPwdReset)
//{
// MessageBox(
// phwndOwner,
// _T("Fail: GetProcAddress(hGateFrameworkDll, \"RunPwdReset\")"),
// _T("Error"),
// MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
// );
// goto FAIL;
//}

//pfRunGateFrameworkPwdReset(phwndOwner, domain, username, L"en-US");

FAIL:
if (input_username)
{
CoTaskMemFree(input_username);
}
if (hGateFrameworkDll)
{
FreeLibrary(hGateFrameworkDll);
}
return E_FAIL;
}

// ReportResult is completely optional. Its purpose is to allow a credential to customize the string
// and the icon displayed in the case of a logon failure. For example, we have chosen to
// customize the error shown in the case of bad username/password and in the case of the account
// being disabled.
HRESULT PasswordResetCredential::ReportResult(
NTSTATUS ntsStatus,
NTSTATUS ntsSubstatus,
PWSTR* ppwszOptionalStatusText,
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
)
{
UNREFERENCED_PARAMETER(ntsStatus);
UNREFERENCED_PARAMETER(ntsSubstatus);
UNREFERENCED_PARAMETER(ppwszOptionalStatusText);
UNREFERENCED_PARAMETER(pcpsiOptionalStatusIcon);

return E_NOTIMPL;
}
GeneralRe: win32 dialogbox Pin
«_Superman_»12-Feb-13 0:02
professional«_Superman_»12-Feb-13 0:02 
QuestionCan i get text color of title bar? Pin
VCProgrammer10-Feb-13 21:28
VCProgrammer10-Feb-13 21:28 
AnswerRe: Can i get text color of title bar? Pin
Richard MacCutchan10-Feb-13 21:59
mveRichard MacCutchan10-Feb-13 21:59 
GeneralRe: Can i get text color of title bar? Pin
VCProgrammer10-Feb-13 22:42
VCProgrammer10-Feb-13 22:42 
GeneralRe: Can i get text color of title bar? Pin
Richard MacCutchan10-Feb-13 23:01
mveRichard MacCutchan10-Feb-13 23:01 
GeneralRe: Can i get text color of title bar? Pin
VCProgrammer10-Feb-13 23:07
VCProgrammer10-Feb-13 23:07 
QuestionVisual Studio 2010 optimized code bug Pin
ForNow10-Feb-13 14:55
ForNow10-Feb-13 14:55 
AnswerRe: Visual Studio 2010 optimized code bug Pin
«_Superman_»10-Feb-13 18:02
professional«_Superman_»10-Feb-13 18:02 
GeneralRe: Visual Studio 2010 optimized code bug Pin
ForNow10-Feb-13 19:03
ForNow10-Feb-13 19:03 
QuestionRe: Visual Studio 2010 optimized code bug Pin
bob1697210-Feb-13 19:32
bob1697210-Feb-13 19:32 
AnswerRe: Visual Studio 2010 optimized code bug Pin
ForNow10-Feb-13 19:49
ForNow10-Feb-13 19:49 
AnswerRe: Visual Studio 2010 optimized code bug Pin
Richard MacCutchan10-Feb-13 21:49
mveRichard MacCutchan10-Feb-13 21:49 
GeneralRe: Visual Studio 2010 optimized code bug Pin
ForNow11-Feb-13 17:17
ForNow11-Feb-13 17:17 
GeneralRe: Visual Studio 2010 optimized code bug Pin
Richard MacCutchan11-Feb-13 22:10
mveRichard MacCutchan11-Feb-13 22:10 
GeneralRe: Visual Studio 2010 optimized code bug Pin
ForNow12-Feb-13 2:25
ForNow12-Feb-13 2:25 
Question__interface implies the novtable __declspec modifier Pin
bob169729-Feb-13 11:30
bob169729-Feb-13 11:30 
AnswerRe: __interface implies the novtable __declspec modifier Pin
H.Brydon9-Feb-13 18:35
professionalH.Brydon9-Feb-13 18:35 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.