- Import credui from wine

svn path=/trunk/; revision=36674
This commit is contained in:
Dmitry Chapyshev 2008-10-07 10:51:36 +00:00
parent 5951657051
commit 77e8f8ad3f
23 changed files with 1607 additions and 0 deletions

View file

@ -153,6 +153,7 @@
<property name="BASEADDRESS_GDIPLUS" value="0x76a00000" />
<property name="BASEADDRESS_ATL" value="0x76a80000" />
<property name="BASEADDRESS_SFC" value="0x76b50000" />
<property name="BASEADDRESS_CREDUI" value="0x76bf0000" />
<property name="BASEADDRESS_SFC_OS" value="0x76c10000" />
<property name="BASEADDRESS_WINTRUST" value="0x76c30000" />
<property name="BASEADDRESS_IMAGEHLP" value="0x76c90000" />

View file

@ -241,6 +241,7 @@ dll\win32\comcat\comcat.dll 1
dll\win32\comctl32\comctl32.dll 1
dll\win32\comdlg32\comdlg32.dll 1
dll\win32\compstui\compstui.dll 1
dll\win32\credui\credui.dll 1
dll\win32\crtdll\crtdll.dll 1
dll\win32\crypt32\crypt32.dll 1
dll\win32\cryptdll\cryptdll.dll 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View file

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
<group>
<module name="credui" type="win32dll" baseaddress="${BASEADDRESS_CREDUI}" installbase="system32" installname="credui.dll" allowwarnings="true">
<importlibrary definition="credui.spec.def" />
<include base="credui">.</include>
<include base="ReactOS">include/reactos/wine</include>
<define name="__WINESRC__" />
<define name="WINVER">0x600</define>
<define name="_WIN32_WINNT">0x600</define>
<file>credui_main.c</file>
<file>credui.rc</file>
<file>credui.spec</file>
<library>wine</library>
<library>advapi32</library>
<library>user32</library>
<library>comctl32</library>
<library>kernel32</library>
<library>ntdll</library>
</module>
</group>

View file

@ -0,0 +1,42 @@
/*
* Top level resource file for Credentials UI
*
* Copyright 2007 Robert Shearman (for CodeWeavers)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "winnls.h"
#include "credui_resources.h"
/* @makedep: banner.bmp */
IDB_BANNER BITMAP LOADONCALL DISCARDABLE banner.bmp
#include "credui_Da.rc"
#include "credui_De.rc"
#include "credui_En.rc"
#include "credui_Es.rc"
#include "credui_Fr.rc"
#include "credui_Ko.rc"
#include "credui_Nl.rc"
#include "credui_No.rc"
#include "credui_Pl.rc"
#include "credui_Ru.rc"
#include "credui_Si.rc"
#include "credui_Sv.rc"
#include "credui_Zh.rc"

View file

@ -0,0 +1,17 @@
@ stub CredUICmdLinePromptForCredentialsA
@ stub CredUICmdLinePromptForCredentialsW
@ stub CredUIConfirmCredentialsA
@ stdcall CredUIConfirmCredentialsW(wstr long)
@ stub CredUIInitControls
@ stub CredUIParseUserNameA
@ stdcall CredUIParseUserNameW(wstr ptr long ptr long)
@ stub CredUIPromptForCredentialsA
@ stdcall CredUIPromptForCredentialsW(ptr wstr ptr long ptr long ptr long ptr long)
@ stdcall CredUIReadSSOCredA(str ptr)
@ stdcall CredUIReadSSOCredW(wstr ptr)
@ stdcall CredUIStoreSSOCredA(str str str long)
@ stdcall CredUIStoreSSOCredW(wstr wstr wstr long)
@ stub DllCanUnloadNow
@ stub DllGetClassObject
@ stub DllRegisterServer
@ stub DllUnregisterServer

View file

@ -0,0 +1,50 @@
/*
* Danish language resource file for Credentials UI
*
* Copyright 2008 Jens Albretsen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&Brugernavn:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Kodeord:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Husk mit kodeord",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "OK",IDOK,97,128,50,14
PUSHBUTTON "Annuller",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Tilslut til %s"
IDS_MESSAGEFORMAT "Tilslutter til %s"
IDS_INCORRECTPASSWORDTITLE "Tilslutning fejlede"
IDS_INCORRECTPASSWORD "Vær sikker på at dit brugernavn\nog kodeord er korrekt."
IDS_CAPSLOCKONTITLE "Caps Lock er på"
IDS_CAPSLOCKON "Caps Lock kan være skyld i at taster dit kodeord forkert.\n\nTryk på Caps Lock tasten for at slå det fra\nfør du indtaster dit kodeord."
}

View file

@ -0,0 +1,50 @@
/*
* German language resource file for Credentials UI
*
* Copyright 2007 Frank Richter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&Benutzername:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Kennwort:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "Kennwort &merken",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "OK",IDOK,97,128,50,14
PUSHBUTTON "Abbrechen",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Mit %s verbinden"
IDS_MESSAGEFORMAT "Verbindung mit %s wird hergestellt"
IDS_INCORRECTPASSWORDTITLE "Anmeldung fehlgeschlagen"
IDS_INCORRECTPASSWORD "Bitte überprüfen Sie Ihren Benutzernamen\nund geben Sie das Kennwort neu ein."
IDS_CAPSLOCKONTITLE "Die Feststelltaste ist aktiviert"
IDS_CAPSLOCKON "Mit aktivierter Feststelltaste könnte das Kennwort falsch eingeben werden.\n\nVor der Eingabe des Kennworts sollten Sie die Feststelltaste deaktivieren."
}

View file

@ -0,0 +1,50 @@
/*
* English language resource file for Credentials UI
*
* Copyright 2007 Robert Shearman (for CodeWeavers)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&User name:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Password:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Remember my password",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "OK",IDOK,97,128,50,14
PUSHBUTTON "Cancel",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Connect to %s"
IDS_MESSAGEFORMAT "Connecting to %s"
IDS_INCORRECTPASSWORDTITLE "Logon unsuccessful"
IDS_INCORRECTPASSWORD "Make sure that your user name\nand password are correct."
IDS_CAPSLOCKONTITLE "Caps Lock is On"
IDS_CAPSLOCKON "Having Caps Lock on may cause you to enter your password incorrectly.\n\nPress the Caps Lock key on your keyboard to turn off Caps Lock before\nentering your password."
}

View file

@ -0,0 +1,54 @@
/*
* Spanish language resource file for Credentials UI
*
* Copyright 2007 Luis Carlos Busquets Pérez
* Copyright 2008 José Manuel Ferrer Ortiz
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma code_page(65001)
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&Usuario:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Contraseña:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Recordar mi contraseña",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "Aceptar",IDOK,97,128,50,14
PUSHBUTTON "Cancelar",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Conectar a %s"
IDS_MESSAGEFORMAT "Conectando to %s"
IDS_INCORRECTPASSWORDTITLE "Identificación incorrecta"
IDS_INCORRECTPASSWORD "Asegúrese que su nombre de usuario\ny contraseña son correctos."
IDS_CAPSLOCKONTITLE "Bloq Mayus está activado"
IDS_CAPSLOCKON "El Bloq Mayus activado puede hacer que entre su contraseña incorrectamente.\n\nPulse la tecla Bloq Mayus de su teclado para desactivar Bloq Mayus antes\n de introducir su contraseña."
}
#pragma code_page(default)

View file

@ -0,0 +1,53 @@
/*
* French language resource file for Credentials UI
*
* Copyright 2007 Jonathan Ernst
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma code_page(65001)
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&Nom d'utilisateur :",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,12
LTEXT "&Mot de passe :",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Se souvenir de mon mot de passe",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "OK",IDOK,97,128,50,14
PUSHBUTTON "Annuler",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Se connecter à %s"
IDS_MESSAGEFORMAT "Connexion à %s"
IDS_INCORRECTPASSWORDTITLE "Échec lors de la connexion"
IDS_INCORRECTPASSWORD "Assurez-vous que votre nom d'utilisateur\net votre mot de passe sont corrects."
IDS_CAPSLOCKONTITLE "VERR.MAJ est activé"
IDS_CAPSLOCKON "Le verrouillage majuscule étant activé, cela pourrait provoquer une erreur lors de la saisie de votre mot de passe.\n\nAppuyez sur la touche VERR.MAJ de votre clavier afin de désactiver le verrouilage majuscule avant\nde saisir votre mot de passe."
}
#pragma code_page(default)

View file

@ -0,0 +1,52 @@
/*
* Korean language resource file for Credentials UI
*
* Copyright 2007 Robert Shearman (for CodeWeavers)
* Copyright 2007 YunSong Hwang-황윤성(hys545@dreamwiz.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "사용자 이름(&U):",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "암호(&P):",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "내 암호 기억(&R)",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "확인",IDOK,97,128,50,14
PUSHBUTTON "취소",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT " %s 연결"
IDS_MESSAGEFORMAT " %s 연결중"
IDS_INCORRECTPASSWORDTITLE "로그온 실패"
IDS_INCORRECTPASSWORD "당신의 사용자 이름과 암호가\n올바른지 확인하십시오"
IDS_CAPSLOCKONTITLE "Caps Lock 커짐"
IDS_CAPSLOCKON "Caps Lock 이 커져 있으면 암호가 잘못입력될 수 있습니다.\n\n 암호를 입력하기 전에\n키보드의 Caps Lock 키를 끄시기 바랍니다."
}

View file

@ -0,0 +1,50 @@
/*
* Dutch language resource file for Credentials UI
*
* Copyright 2008 Frans Kool
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&Gebruikers naam:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Wachtwoord:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Onthoudt mijn wachtwoord",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "OK",IDOK,97,128,50,14
PUSHBUTTON "Annuleren",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Verbind met %s"
IDS_MESSAGEFORMAT "Verbinden met %s"
IDS_INCORRECTPASSWORDTITLE "Aanloggen mislukt"
IDS_INCORRECTPASSWORD "Controleer of uw gebruikersnaam\nen wachtwoord correct zijn."
IDS_CAPSLOCKONTITLE "Caps Lock staat Aan"
IDS_CAPSLOCKON "Met Caps Lock aan kan uw wachtwoord verkeerd worden ingevoerd.\n\nDruk op de Caps Lock toets op uw toetsenbord om Caps Lock uit\nte zetten voor invoer van uw wachtwoord."
}

View file

@ -0,0 +1,50 @@
/*
* Norwegian Bokmål language resource file for Credentials UI
*
* Copyright 2007 Alexander N. Sørnes <alex@thehandofagony.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "Br&ukernavn:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Passord:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Remember my password",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "OK",IDOK,97,128,50,14
PUSHBUTTON "Avbryt",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Koble til %s"
IDS_MESSAGEFORMAT "Kobler til %s"
IDS_INCORRECTPASSWORDTITLE "Klarte ikke logge på"
IDS_INCORRECTPASSWORD "Sørg for at du oppga riktig\nbrukernavn og passord."
IDS_CAPSLOCKONTITLE "Caps Lock er på"
IDS_CAPSLOCKON "Å ha Caps Lock på kan føre til at du skriver inn passordet på feil måte.\n\nTrykk på Caps Lock-knappen på tastaturet for å slå av Caps Lock før du\nskriver inn passordet på nytt."
}

View file

@ -0,0 +1,51 @@
/*
* Polish language resource file for Credentials UI
*
* Copyright 2007 Robert Shearman (for CodeWeavers)
* Copyright 2007 Mikolaj Zalewski
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&U¿ytkownik:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Has³o:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Zapamiêtaj has³o",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "&OK",IDOK,97,128,50,14
PUSHBUTTON "&Anuluj",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Po³¹cz z %s"
IDS_MESSAGEFORMAT "£¹czenie z %s"
IDS_INCORRECTPASSWORDTITLE "Logowanie nie powiod³o siê"
IDS_INCORRECTPASSWORD "Upewnij siê, ¿e nazwa u¿ytkownika\ni has³o s¹ poprawne."
IDS_CAPSLOCKONTITLE "Caps Lock jest w³¹czony"
IDS_CAPSLOCKON "W³¹czony tryb Caps Lock mo¿e spowodowaæ, ¿e wpiszesz has³o niepoprawnie.\n\nNaciœnik klawisz Caps Lock key na klawiaturze, aby go wy³¹czyæ\nprzed wprowadzeniem has³a."
}

View file

@ -0,0 +1,50 @@
/*
* Russian language resource file for Credentials UI
*
* Copyright 2008 Andrey Esin <andrey@esin.name>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "Ïî&ëüçîâàòåëü:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Ïàðîëü:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "Ñî&õðàíèòü ïàðîëü",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "ÎÊ",IDOK,97,128,50,14
PUSHBUTTON "Îòìåíà",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Ïîäêëþ÷åíèå ê %s"
IDS_MESSAGEFORMAT "Ïîäêëþ÷åíèå ê %s"
IDS_INCORRECTPASSWORDTITLE "Âõîä íå áûë ïðîèçâåä¸í"
IDS_INCORRECTPASSWORD "Óáåäèòåñü, ÷òî èìÿ ïîëüçîâàòåëÿ\nè ïàðîëü âåðíû."
IDS_CAPSLOCKONTITLE "Caps Lock âêëþ÷åí"
IDS_CAPSLOCKON "Ïàðîëü ìîæåò áûòü ââåä¸í íåïðàâèëüíî èç-çà íàæàòîé êëàâèøè Caps Lock.\n\nÎòêëþ÷èòå Caps Lock ïåðåä òåì, êàê ââîäèòü ïàðîëü."
}

View file

@ -0,0 +1,54 @@
/*
* Slovenian language resource file for Credentials UI
*
* Copyright 2008 Rok Mandeljc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma code_page(65001)
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "&Uporabniško ime:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Geslo:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Zapomni si geslo",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "V redu",IDOK,97,128,50,14
PUSHBUTTON "Prekliči",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "Poveži se na %s"
IDS_MESSAGEFORMAT "Povezovanje na %s"
IDS_INCORRECTPASSWORDTITLE "Prijava ni uspela"
IDS_INCORRECTPASSWORD "Preverite, ali ste vnesli pravilno uporabniško ime in/ali geslo."
IDS_CAPSLOCKONTITLE "Caps Lock je vključen"
IDS_CAPSLOCKON "Vključen Caps Lock je lahko vzrok nepravilnega vnosa gesla.\n\nPritisnite tipko Caps Lock, s čimer ga izklopite\nin ponovno vnesite geslo."
}
#pragma code_page(default)

View file

@ -0,0 +1,40 @@
/*
* Swedish language resource file for Credentials UI
*
* Copyright 2007 Daniel Nylander
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "A&nvändarnamn:",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "&Lösenord:",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "&Remember my password",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "OK",IDOK,97,128,50,14
PUSHBUTTON "Avbryt",IDCANCEL,156,128,50,14
END

View file

@ -0,0 +1,86 @@
/*
* Credentials UI (Simplified and Traditional Chinese Resource)
*
* Copyright 2008 Hongbo Ni <hongbo.at.njstar.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* Chinese text is encoded in UTF-8 */
#pragma code_page(65001)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 9, "MS Song"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "用户名(&U):",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "密码(&P):",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "记住我的密码(&R)",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "确定",IDOK,97,128,50,14
PUSHBUTTON "取消",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "连接到 %s"
IDS_MESSAGEFORMAT "正在连接到 %s"
IDS_INCORRECTPASSWORDTITLE "登录失败"
IDS_INCORRECTPASSWORD "请确认你输入的用户名和密码\n是否正确."
IDS_CAPSLOCKONTITLE "大写锁定开着"
IDS_CAPSLOCKON "开着大写锁定可能导致你输入错误的密码."
}
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
IDD_CREDDIALOG DIALOG DISCARDABLE 0, 0, 213, 149
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "IDS_TITLEFORMAT"
FONT 8, "PMingLiu"
BEGIN
CONTROL IDB_BANNER,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,0,
0,213,37
LTEXT "IDS_MESSAGEFORMAT",IDC_MESSAGE,8,48,199,8,NOT WS_GROUP
LTEXT "用戶名(&U):",IDC_STATIC,8,62,72,12,SS_CENTERIMAGE
CONTROL "",IDC_USERNAME,"ComboBoxEx32",CBS_DROPDOWN |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP,80,62,126,87
LTEXT "密碼(&P):",IDC_STATIC,8,80,72,12,SS_CENTERIMAGE
EDITTEXT IDC_PASSWORD,80,80,126,12,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "記住我的密碼(&R)",IDC_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,80,98,126,12
DEFPUSHBUTTON "確定",IDOK,97,128,50,14
PUSHBUTTON "取消",IDCANCEL,156,128,50,14
END
STRINGTABLE DISCARDABLE
{
IDS_TITLEFORMAT "連接到 %s"
IDS_MESSAGEFORMAT "正在連接到 %s"
IDS_INCORRECTPASSWORDTITLE "登錄失敗"
IDS_INCORRECTPASSWORD "請確認你輸入的用戶名和密碼\n是否正確."
IDS_CAPSLOCKONTITLE "大寫鎖定開著"
IDS_CAPSLOCKON "開著大寫鎖定可能導致你輸入錯誤的密碼."
}
#pragma code_page(default)

View file

@ -0,0 +1,798 @@
/*
* Credentials User Interface
*
* Copyright 2006 Robert Shearman (for CodeWeavers)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winnt.h"
#include "winuser.h"
#include "wincred.h"
#include "commctrl.h"
#include "credui_resources.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "wine/list.h"
WINE_DEFAULT_DEBUG_CHANNEL(credui);
#define TOOLID_INCORRECTPASSWORD 1
#define TOOLID_CAPSLOCKON 2
#define ID_CAPSLOCKPOP 1
struct pending_credentials
{
struct list entry;
PWSTR pszTargetName;
PWSTR pszUsername;
PWSTR pszPassword;
BOOL generic;
};
static HINSTANCE hinstCredUI;
static struct list pending_credentials_list = LIST_INIT(pending_credentials_list);
static CRITICAL_SECTION csPendingCredentials;
static CRITICAL_SECTION_DEBUG critsect_debug =
{
0, 0, &csPendingCredentials,
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
0, 0, { (DWORD_PTR)(__FILE__ ": csPendingCredentials") }
};
static CRITICAL_SECTION csPendingCredentials = { &critsect_debug, -1, 0, 0, 0, 0 };
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
TRACE("(0x%p, %d, %p)\n",hinstDLL,fdwReason,lpvReserved);
if (fdwReason == DLL_WINE_PREATTACH) return FALSE; /* prefer native version */
if (fdwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hinstDLL);
hinstCredUI = hinstDLL;
InitCommonControls();
}
else if (fdwReason == DLL_PROCESS_DETACH)
{
struct pending_credentials *entry, *cursor2;
LIST_FOR_EACH_ENTRY_SAFE(entry, cursor2, &pending_credentials_list, struct pending_credentials, entry)
{
list_remove(&entry->entry);
HeapFree(GetProcessHeap(), 0, entry->pszTargetName);
HeapFree(GetProcessHeap(), 0, entry->pszUsername);
ZeroMemory(entry->pszPassword, (strlenW(entry->pszPassword) + 1) * sizeof(WCHAR));
HeapFree(GetProcessHeap(), 0, entry->pszPassword);
HeapFree(GetProcessHeap(), 0, entry);
}
}
return TRUE;
}
static DWORD save_credentials(PCWSTR pszTargetName, PCWSTR pszUsername,
PCWSTR pszPassword, BOOL generic)
{
CREDENTIALW cred;
TRACE("saving servername %s with username %s\n", debugstr_w(pszTargetName), debugstr_w(pszUsername));
cred.Flags = 0;
cred.Type = generic ? CRED_TYPE_GENERIC : CRED_TYPE_DOMAIN_PASSWORD;
cred.TargetName = (LPWSTR)pszTargetName;
cred.Comment = NULL;
cred.CredentialBlobSize = strlenW(pszPassword) * sizeof(WCHAR);
cred.CredentialBlob = (LPBYTE)pszPassword;
cred.Persist = CRED_PERSIST_ENTERPRISE;
cred.AttributeCount = 0;
cred.Attributes = NULL;
cred.TargetAlias = NULL;
cred.UserName = (LPWSTR)pszUsername;
if (CredWriteW(&cred, 0))
return ERROR_SUCCESS;
else
{
DWORD ret = GetLastError();
ERR("CredWriteW failed with error %d\n", ret);
return ret;
}
}
struct cred_dialog_params
{
PCWSTR pszTargetName;
PCWSTR pszMessageText;
PCWSTR pszCaptionText;
HBITMAP hbmBanner;
PWSTR pszUsername;
ULONG ulUsernameMaxChars;
PWSTR pszPassword;
ULONG ulPasswordMaxChars;
BOOL fSave;
DWORD dwFlags;
HWND hwndBalloonTip;
BOOL fBalloonTipActive;
};
static void CredDialogFillUsernameCombo(HWND hwndUsername, struct cred_dialog_params *params)
{
DWORD count;
DWORD i;
PCREDENTIALW *credentials;
if (!CredEnumerateW(NULL, 0, &count, &credentials))
return;
for (i = 0; i < count; i++)
{
COMBOBOXEXITEMW comboitem;
DWORD j;
BOOL duplicate = FALSE;
if (params->dwFlags & CREDUI_FLAGS_GENERIC_CREDENTIALS)
{
if ((credentials[i]->Type != CRED_TYPE_GENERIC) || !credentials[i]->UserName)
continue;
}
else
{
if (credentials[i]->Type == CRED_TYPE_GENERIC)
continue;
}
/* don't add another item with the same name if we've already added it */
for (j = 0; j < i; j++)
if (!strcmpW(credentials[i]->UserName, credentials[j]->UserName))
{
duplicate = TRUE;
break;
}
if (duplicate)
continue;
comboitem.mask = CBEIF_TEXT;
comboitem.iItem = -1;
comboitem.pszText = credentials[i]->UserName;
SendMessageW(hwndUsername, CBEM_INSERTITEMW, 0, (LPARAM)&comboitem);
}
CredFree(credentials);
}
static void CredDialogCreateBalloonTip(HWND hwndDlg, struct cred_dialog_params *params)
{
TTTOOLINFOW toolinfo;
WCHAR wszText[256];
if (params->hwndBalloonTip)
return;
params->hwndBalloonTip = CreateWindowExW(WS_EX_TOOLWINDOW, TOOLTIPS_CLASSW,
NULL, WS_POPUP | TTS_NOPREFIX | TTS_BALLOON, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwndDlg, NULL,
hinstCredUI, NULL);
SetWindowPos(params->hwndBalloonTip, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
if (!LoadStringW(hinstCredUI, IDS_INCORRECTPASSWORD, wszText, sizeof(wszText)/sizeof(wszText[0])))
{
ERR("failed to load IDS_INCORRECTPASSWORD\n");
return;
}
toolinfo.cbSize = sizeof(toolinfo);
toolinfo.uFlags = TTF_TRACK;
toolinfo.hwnd = hwndDlg;
toolinfo.uId = TOOLID_INCORRECTPASSWORD;
memset(&toolinfo.rect, 0, sizeof(toolinfo.rect));
toolinfo.hinst = NULL;
toolinfo.lpszText = wszText;
toolinfo.lParam = 0;
toolinfo.lpReserved = NULL;
SendMessageW(params->hwndBalloonTip, TTM_ADDTOOLW, 0, (LPARAM)&toolinfo);
if (!LoadStringW(hinstCredUI, IDS_CAPSLOCKON, wszText, sizeof(wszText)/sizeof(wszText[0])))
{
ERR("failed to load IDS_CAPSLOCKON\n");
return;
}
toolinfo.uId = TOOLID_CAPSLOCKON;
SendMessageW(params->hwndBalloonTip, TTM_ADDTOOLW, 0, (LPARAM)&toolinfo);
}
static void CredDialogShowIncorrectPasswordBalloon(HWND hwndDlg, struct cred_dialog_params *params)
{
TTTOOLINFOW toolinfo;
RECT rcPassword;
INT x;
INT y;
WCHAR wszTitle[256];
/* user name likely wrong so balloon would be confusing. focus is also
* not set to the password edit box, so more notification would need to be
* handled */
if (!params->pszUsername[0])
return;
/* don't show two balloon tips at once */
if (params->fBalloonTipActive)
return;
if (!LoadStringW(hinstCredUI, IDS_INCORRECTPASSWORDTITLE, wszTitle, sizeof(wszTitle)/sizeof(wszTitle[0])))
{
ERR("failed to load IDS_INCORRECTPASSWORDTITLE\n");
return;
}
CredDialogCreateBalloonTip(hwndDlg, params);
memset(&toolinfo, 0, sizeof(toolinfo));
toolinfo.cbSize = sizeof(toolinfo);
toolinfo.hwnd = hwndDlg;
toolinfo.uId = TOOLID_INCORRECTPASSWORD;
SendMessageW(params->hwndBalloonTip, TTM_SETTITLEW, TTI_ERROR, (LPARAM)wszTitle);
GetWindowRect(GetDlgItem(hwndDlg, IDC_PASSWORD), &rcPassword);
/* centred vertically and in the right side of the password edit control */
x = rcPassword.right - 12;
y = (rcPassword.top + rcPassword.bottom) / 2;
SendMessageW(params->hwndBalloonTip, TTM_TRACKPOSITION, 0, MAKELONG(x, y));
SendMessageW(params->hwndBalloonTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&toolinfo);
params->fBalloonTipActive = TRUE;
}
static void CredDialogShowCapsLockBalloon(HWND hwndDlg, struct cred_dialog_params *params)
{
TTTOOLINFOW toolinfo;
RECT rcPassword;
INT x;
INT y;
WCHAR wszTitle[256];
/* don't show two balloon tips at once */
if (params->fBalloonTipActive)
return;
if (!LoadStringW(hinstCredUI, IDS_CAPSLOCKONTITLE, wszTitle, sizeof(wszTitle)/sizeof(wszTitle[0])))
{
ERR("failed to load IDS_IDSCAPSLOCKONTITLE\n");
return;
}
CredDialogCreateBalloonTip(hwndDlg, params);
memset(&toolinfo, 0, sizeof(toolinfo));
toolinfo.cbSize = sizeof(toolinfo);
toolinfo.hwnd = hwndDlg;
toolinfo.uId = TOOLID_CAPSLOCKON;
SendMessageW(params->hwndBalloonTip, TTM_SETTITLEW, TTI_WARNING, (LPARAM)wszTitle);
GetWindowRect(GetDlgItem(hwndDlg, IDC_PASSWORD), &rcPassword);
/* just inside the left side of the password edit control */
x = rcPassword.left + 12;
y = rcPassword.bottom - 3;
SendMessageW(params->hwndBalloonTip, TTM_TRACKPOSITION, 0, MAKELONG(x, y));
SendMessageW(params->hwndBalloonTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&toolinfo);
SetTimer(hwndDlg, ID_CAPSLOCKPOP,
SendMessageW(params->hwndBalloonTip, TTM_GETDELAYTIME, TTDT_AUTOPOP, 0),
NULL);
params->fBalloonTipActive = TRUE;
}
static void CredDialogHideBalloonTip(HWND hwndDlg, struct cred_dialog_params *params)
{
TTTOOLINFOW toolinfo;
if (!params->hwndBalloonTip)
return;
memset(&toolinfo, 0, sizeof(toolinfo));
toolinfo.cbSize = sizeof(toolinfo);
toolinfo.hwnd = hwndDlg;
toolinfo.uId = 0;
SendMessageW(params->hwndBalloonTip, TTM_TRACKACTIVATE, FALSE, (LPARAM)&toolinfo);
toolinfo.uId = 1;
SendMessageW(params->hwndBalloonTip, TTM_TRACKACTIVATE, FALSE, (LPARAM)&toolinfo);
params->fBalloonTipActive = FALSE;
}
static inline BOOL CredDialogCapsLockOn(void)
{
return GetKeyState(VK_CAPITAL) & 0x1 ? TRUE : FALSE;
}
static LRESULT CALLBACK CredDialogPasswordSubclassProc(HWND hwnd, UINT uMsg,
WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
struct cred_dialog_params *params = (struct cred_dialog_params *)dwRefData;
switch (uMsg)
{
case WM_KEYDOWN:
if (wParam == VK_CAPITAL)
{
HWND hwndDlg = GetParent(hwnd);
if (CredDialogCapsLockOn())
CredDialogShowCapsLockBalloon(hwndDlg, params);
else
CredDialogHideBalloonTip(hwndDlg, params);
}
break;
case WM_DESTROY:
RemoveWindowSubclass(hwnd, CredDialogPasswordSubclassProc, uIdSubclass);
break;
}
return DefSubclassProc(hwnd, uMsg, wParam, lParam);
}
static BOOL CredDialogInit(HWND hwndDlg, struct cred_dialog_params *params)
{
HWND hwndUsername = GetDlgItem(hwndDlg, IDC_USERNAME);
HWND hwndPassword = GetDlgItem(hwndDlg, IDC_PASSWORD);
SetWindowLongPtrW(hwndDlg, DWLP_USER, (LONG_PTR)params);
if (params->hbmBanner)
SendMessageW(GetDlgItem(hwndDlg, IDB_BANNER), STM_SETIMAGE,
IMAGE_BITMAP, (LPARAM)params->hbmBanner);
if (params->pszMessageText)
SetDlgItemTextW(hwndDlg, IDC_MESSAGE, params->pszMessageText);
else
{
WCHAR format[256];
WCHAR message[256];
LoadStringW(hinstCredUI, IDS_MESSAGEFORMAT, format, sizeof(format)/sizeof(format[0]));
snprintfW(message, sizeof(message)/sizeof(message[0]), format, params->pszTargetName);
SetDlgItemTextW(hwndDlg, IDC_MESSAGE, message);
}
SetWindowTextW(hwndUsername, params->pszUsername);
SetWindowTextW(hwndPassword, params->pszPassword);
CredDialogFillUsernameCombo(hwndUsername, params);
if (params->pszUsername[0])
{
/* prevent showing a balloon tip here */
params->fBalloonTipActive = TRUE;
SetFocus(hwndPassword);
params->fBalloonTipActive = FALSE;
}
else
SetFocus(hwndUsername);
if (params->pszCaptionText)
SetWindowTextW(hwndDlg, params->pszCaptionText);
else
{
WCHAR format[256];
WCHAR title[256];
LoadStringW(hinstCredUI, IDS_TITLEFORMAT, format, sizeof(format)/sizeof(format[0]));
snprintfW(title, sizeof(title)/sizeof(title[0]), format, params->pszTargetName);
SetWindowTextW(hwndDlg, title);
}
if (params->dwFlags & (CREDUI_FLAGS_DO_NOT_PERSIST|CREDUI_FLAGS_PERSIST))
ShowWindow(GetDlgItem(hwndDlg, IDC_SAVE), SW_HIDE);
else if (params->fSave)
CheckDlgButton(hwndDlg, IDC_SAVE, BST_CHECKED);
/* setup subclassing for Caps Lock detection */
SetWindowSubclass(hwndPassword, CredDialogPasswordSubclassProc, 1, (DWORD_PTR)params);
if (params->dwFlags & CREDUI_FLAGS_INCORRECT_PASSWORD)
CredDialogShowIncorrectPasswordBalloon(hwndDlg, params);
else if ((GetFocus() == hwndPassword) && CredDialogCapsLockOn())
CredDialogShowCapsLockBalloon(hwndDlg, params);
return FALSE;
}
static void CredDialogCommandOk(HWND hwndDlg, struct cred_dialog_params *params)
{
HWND hwndUsername = GetDlgItem(hwndDlg, IDC_USERNAME);
LPWSTR user;
INT len;
INT len2;
len = GetWindowTextLengthW(hwndUsername);
user = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR));
GetWindowTextW(hwndUsername, user, len + 1);
if (!user[0])
{
HeapFree(GetProcessHeap(), 0, user);
return;
}
if (!strchrW(user, '\\') && !strchrW(user, '@'))
{
ULONG len_target = strlenW(params->pszTargetName);
memcpy(params->pszUsername, params->pszTargetName,
min(len_target, params->ulUsernameMaxChars) * sizeof(WCHAR));
if (len_target + 1 < params->ulUsernameMaxChars)
params->pszUsername[len_target] = '\\';
if (len_target + 2 < params->ulUsernameMaxChars)
params->pszUsername[len_target + 1] = '\0';
}
else if (params->ulUsernameMaxChars > 0)
params->pszUsername[0] = '\0';
len2 = strlenW(params->pszUsername);
memcpy(params->pszUsername + len2, user, min(len, params->ulUsernameMaxChars - len2) * sizeof(WCHAR));
if (params->ulUsernameMaxChars)
params->pszUsername[len2 + min(len, params->ulUsernameMaxChars - len2 - 1)] = '\0';
HeapFree(GetProcessHeap(), 0, user);
GetDlgItemTextW(hwndDlg, IDC_PASSWORD, params->pszPassword,
params->ulPasswordMaxChars);
params->fSave = IsDlgButtonChecked(hwndDlg, IDC_SAVE) == BST_CHECKED;
EndDialog(hwndDlg, IDOK);
}
static INT_PTR CALLBACK CredDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
{
struct cred_dialog_params *params = (struct cred_dialog_params *)lParam;
return CredDialogInit(hwndDlg, params);
}
case WM_COMMAND:
switch (wParam)
{
case MAKELONG(IDOK, BN_CLICKED):
{
struct cred_dialog_params *params =
(struct cred_dialog_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
CredDialogCommandOk(hwndDlg, params);
return TRUE;
}
case MAKELONG(IDCANCEL, BN_CLICKED):
EndDialog(hwndDlg, IDCANCEL);
return TRUE;
case MAKELONG(IDC_PASSWORD, EN_SETFOCUS):
if (CredDialogCapsLockOn())
{
struct cred_dialog_params *params =
(struct cred_dialog_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
CredDialogShowCapsLockBalloon(hwndDlg, params);
}
/* don't allow another window to steal focus while the
* user is typing their password */
LockSetForegroundWindow(LSFW_LOCK);
return TRUE;
case MAKELONG(IDC_PASSWORD, EN_KILLFOCUS):
{
struct cred_dialog_params *params =
(struct cred_dialog_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
/* the user is no longer typing their password, so allow
* other windows to become foreground ones */
LockSetForegroundWindow(LSFW_UNLOCK);
CredDialogHideBalloonTip(hwndDlg, params);
return TRUE;
}
case MAKELONG(IDC_PASSWORD, EN_CHANGE):
{
struct cred_dialog_params *params =
(struct cred_dialog_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
CredDialogHideBalloonTip(hwndDlg, params);
return TRUE;
}
}
return FALSE;
case WM_TIMER:
if (wParam == ID_CAPSLOCKPOP)
{
struct cred_dialog_params *params =
(struct cred_dialog_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
CredDialogHideBalloonTip(hwndDlg, params);
return TRUE;
}
return FALSE;
case WM_DESTROY:
{
struct cred_dialog_params *params =
(struct cred_dialog_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
if (params->hwndBalloonTip) DestroyWindow(params->hwndBalloonTip);
return TRUE;
}
default:
return FALSE;
}
}
/******************************************************************************
* CredUIPromptForCredentialsW [CREDUI.@]
*/
DWORD WINAPI CredUIPromptForCredentialsW(PCREDUI_INFOW pUIInfo,
PCWSTR pszTargetName,
PCtxtHandle Reserved,
DWORD dwAuthError,
PWSTR pszUsername,
ULONG ulUsernameMaxChars,
PWSTR pszPassword,
ULONG ulPasswordMaxChars, PBOOL pfSave,
DWORD dwFlags)
{
INT_PTR ret;
struct cred_dialog_params params;
DWORD result = ERROR_SUCCESS;
TRACE("(%p, %s, %p, %d, %s, %d, %p, %d, %p, 0x%08x)\n", pUIInfo,
debugstr_w(pszTargetName), Reserved, dwAuthError, debugstr_w(pszUsername),
ulUsernameMaxChars, pszPassword, ulPasswordMaxChars, pfSave, dwFlags);
if ((dwFlags & (CREDUI_FLAGS_ALWAYS_SHOW_UI|CREDUI_FLAGS_GENERIC_CREDENTIALS)) == CREDUI_FLAGS_ALWAYS_SHOW_UI)
return ERROR_INVALID_FLAGS;
if (!pszTargetName)
return ERROR_INVALID_PARAMETER;
if ((dwFlags & CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX) && !pfSave)
return ERROR_INVALID_PARAMETER;
params.pszTargetName = pszTargetName;
if (pUIInfo)
{
params.pszMessageText = pUIInfo->pszMessageText;
params.pszCaptionText = pUIInfo->pszCaptionText;
params.hbmBanner = pUIInfo->hbmBanner;
}
else
{
params.pszMessageText = NULL;
params.pszCaptionText = NULL;
params.hbmBanner = NULL;
}
params.pszUsername = pszUsername;
params.ulUsernameMaxChars = ulUsernameMaxChars;
params.pszPassword = pszPassword;
params.ulPasswordMaxChars = ulPasswordMaxChars;
params.fSave = pfSave ? *pfSave : FALSE;
params.dwFlags = dwFlags;
params.hwndBalloonTip = NULL;
params.fBalloonTipActive = FALSE;
ret = DialogBoxParamW(hinstCredUI, MAKEINTRESOURCEW(IDD_CREDDIALOG),
pUIInfo ? pUIInfo->hwndParent : NULL,
CredDialogProc, (LPARAM)&params);
if (ret <= 0)
return GetLastError();
if (ret == IDCANCEL)
{
TRACE("dialog cancelled\n");
return ERROR_CANCELLED;
}
if (pfSave)
*pfSave = params.fSave;
if (params.fSave)
{
if (dwFlags & CREDUI_FLAGS_EXPECT_CONFIRMATION)
{
BOOL found = FALSE;
struct pending_credentials *entry;
int len;
EnterCriticalSection(&csPendingCredentials);
/* find existing pending credentials for the same target and overwrite */
/* FIXME: is this correct? */
LIST_FOR_EACH_ENTRY(entry, &pending_credentials_list, struct pending_credentials, entry)
if (!strcmpW(pszTargetName, entry->pszTargetName))
{
found = TRUE;
HeapFree(GetProcessHeap(), 0, entry->pszUsername);
ZeroMemory(entry->pszPassword, (strlenW(entry->pszPassword) + 1) * sizeof(WCHAR));
HeapFree(GetProcessHeap(), 0, entry->pszPassword);
}
if (!found)
{
entry = HeapAlloc(GetProcessHeap(), 0, sizeof(*entry));
len = strlenW(pszTargetName);
entry->pszTargetName = HeapAlloc(GetProcessHeap(), 0, (len + 1)*sizeof(WCHAR));
memcpy(entry->pszTargetName, pszTargetName, (len + 1)*sizeof(WCHAR));
list_add_tail(&pending_credentials_list, &entry->entry);
}
len = strlenW(params.pszUsername);
entry->pszUsername = HeapAlloc(GetProcessHeap(), 0, (len + 1)*sizeof(WCHAR));
memcpy(entry->pszUsername, params.pszUsername, (len + 1)*sizeof(WCHAR));
len = strlenW(params.pszPassword);
entry->pszPassword = HeapAlloc(GetProcessHeap(), 0, (len + 1)*sizeof(WCHAR));
memcpy(entry->pszPassword, params.pszPassword, (len + 1)*sizeof(WCHAR));
entry->generic = dwFlags & CREDUI_FLAGS_GENERIC_CREDENTIALS ? TRUE : FALSE;
LeaveCriticalSection(&csPendingCredentials);
}
else
result = save_credentials(pszTargetName, pszUsername, pszPassword,
dwFlags & CREDUI_FLAGS_GENERIC_CREDENTIALS ? TRUE : FALSE);
}
return result;
}
/******************************************************************************
* CredUIConfirmCredentialsW [CREDUI.@]
*/
DWORD WINAPI CredUIConfirmCredentialsW(PCWSTR pszTargetName, BOOL bConfirm)
{
struct pending_credentials *entry;
DWORD result = ERROR_NOT_FOUND;
TRACE("(%s, %s)\n", debugstr_w(pszTargetName), bConfirm ? "TRUE" : "FALSE");
if (!pszTargetName)
return ERROR_INVALID_PARAMETER;
EnterCriticalSection(&csPendingCredentials);
LIST_FOR_EACH_ENTRY(entry, &pending_credentials_list, struct pending_credentials, entry)
{
if (!strcmpW(pszTargetName, entry->pszTargetName))
{
if (bConfirm)
result = save_credentials(entry->pszTargetName, entry->pszUsername,
entry->pszPassword, entry->generic);
else
result = ERROR_SUCCESS;
list_remove(&entry->entry);
HeapFree(GetProcessHeap(), 0, entry->pszTargetName);
HeapFree(GetProcessHeap(), 0, entry->pszUsername);
ZeroMemory(entry->pszPassword, (strlenW(entry->pszPassword) + 1) * sizeof(WCHAR));
HeapFree(GetProcessHeap(), 0, entry->pszPassword);
HeapFree(GetProcessHeap(), 0, entry);
break;
}
}
LeaveCriticalSection(&csPendingCredentials);
return result;
}
/******************************************************************************
* CredUIParseUserNameW [CREDUI.@]
*/
DWORD WINAPI CredUIParseUserNameW(PCWSTR pszUserName, PWSTR pszUser,
ULONG ulMaxUserChars, PWSTR pszDomain,
ULONG ulMaxDomainChars)
{
PWSTR p;
TRACE("(%s, %p, %d, %p, %d)\n", debugstr_w(pszUserName), pszUser,
ulMaxUserChars, pszDomain, ulMaxDomainChars);
if (!pszUserName || !pszUser || !ulMaxUserChars || !pszDomain ||
!ulMaxDomainChars)
return ERROR_INVALID_PARAMETER;
/* FIXME: handle marshaled credentials */
p = strchrW(pszUserName, '\\');
if (p)
{
if (p - pszUserName > ulMaxDomainChars - 1)
return ERROR_INSUFFICIENT_BUFFER;
if (strlenW(p + 1) > ulMaxUserChars - 1)
return ERROR_INSUFFICIENT_BUFFER;
strcpyW(pszUser, p + 1);
memcpy(pszDomain, pszUserName, (p - pszUserName)*sizeof(WCHAR));
pszDomain[p - pszUserName] = '\0';
return ERROR_SUCCESS;
}
p = strrchrW(pszUserName, '@');
if (p)
{
if (p + 1 - pszUserName > ulMaxUserChars - 1)
return ERROR_INSUFFICIENT_BUFFER;
if (strlenW(p + 1) > ulMaxDomainChars - 1)
return ERROR_INSUFFICIENT_BUFFER;
strcpyW(pszDomain, p + 1);
memcpy(pszUser, pszUserName, (p - pszUserName)*sizeof(WCHAR));
pszUser[p - pszUserName] = '\0';
return ERROR_SUCCESS;
}
if (strlenW(pszUserName) > ulMaxUserChars - 1)
return ERROR_INSUFFICIENT_BUFFER;
strcpyW(pszUser, pszUserName);
pszDomain[0] = '\0';
return ERROR_SUCCESS;
}
/******************************************************************************
* CredUIStoreSSOCredA [CREDUI.@]
*/
DWORD WINAPI CredUIStoreSSOCredA(PCSTR pszRealm, PCSTR pszUsername,
PCSTR pszPassword, BOOL bPersist)
{
FIXME("(%s, %s, %p, %d)\n", debugstr_a(pszRealm), debugstr_a(pszUsername),
pszPassword, bPersist);
return ERROR_SUCCESS;
}
/******************************************************************************
* CredUIStoreSSOCredW [CREDUI.@]
*/
DWORD WINAPI CredUIStoreSSOCredW(PCWSTR pszRealm, PCWSTR pszUsername,
PCWSTR pszPassword, BOOL bPersist)
{
FIXME("(%s, %s, %p, %d)\n", debugstr_w(pszRealm), debugstr_w(pszUsername),
pszPassword, bPersist);
return ERROR_SUCCESS;
}
/******************************************************************************
* CredUIReadSSOCredA [CREDUI.@]
*/
DWORD WINAPI CredUIReadSSOCredA(PCSTR pszRealm, PSTR *ppszUsername)
{
FIXME("(%s, %p)\n", debugstr_a(pszRealm), ppszUsername);
if (ppszUsername)
*ppszUsername = NULL;
return ERROR_NOT_FOUND;
}
/******************************************************************************
* CredUIReadSSOCredW [CREDUI.@]
*/
DWORD WINAPI CredUIReadSSOCredW(PCWSTR pszRealm, PWSTR *ppszUsername)
{
FIXME("(%s, %p)\n", debugstr_w(pszRealm), ppszUsername);
if (ppszUsername)
*ppszUsername = NULL;
return ERROR_NOT_FOUND;
}

View file

@ -0,0 +1,33 @@
/*
* Copyright 2007 Robert Shearman (for CodeWeavers)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define IDD_CREDDIALOG 100
#define IDC_USERNAME 101
#define IDC_PASSWORD 102
#define IDC_MESSAGE 103
#define IDC_STATIC 104
#define IDC_SAVE 105
#define IDB_BANNER 200
#define IDS_TITLEFORMAT 300
#define IDS_MESSAGEFORMAT 301
#define IDS_INCORRECTPASSWORDTITLE 302
#define IDS_INCORRECTPASSWORD 303
#define IDS_CAPSLOCKON 304
#define IDS_CAPSLOCKONTITLE 305

View file

@ -52,6 +52,9 @@
<directory name="compstui">
<xi:include href="compstui/compstui.rbuild" />
</directory>
<directory name="credui">
<xi:include href="credui/credui.rbuild" />
</directory>
<directory name="crtdll">
<xi:include href="crtdll/crtdll.rbuild" />
</directory>

View file

@ -40,6 +40,7 @@ reactos/dll/win32/comcat # Autosync
reactos/dll/win32/comctl32 # Autosync
reactos/dll/win32/comdlg32 # Autosync
reactos/dll/win32/compstui # Autosync
reactos/dll/win32/credui # Autosync
reactos/dll/win32/crypt32 # Synced to Wine-1_0-rc1
reactos/dll/win32/cryptdll # Autosync
reactos/dll/win32/cryptnet # Autosync