- Import credui from wine
authorDmitry Chapyshev <dmitry@reactos.org>
Tue, 7 Oct 2008 10:51:36 +0000 (10:51 +0000)
committerDmitry Chapyshev <dmitry@reactos.org>
Tue, 7 Oct 2008 10:51:36 +0000 (10:51 +0000)
svn path=/trunk/; revision=36674

23 files changed:
reactos/baseaddress.rbuild
reactos/boot/bootdata/packages/reactos.dff
reactos/dll/win32/credui/banner.bmp [new file with mode: 0644]
reactos/dll/win32/credui/credui.rbuild [new file with mode: 0644]
reactos/dll/win32/credui/credui.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui.spec [new file with mode: 0644]
reactos/dll/win32/credui/credui_Da.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_De.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_En.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Es.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Fr.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Ko.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Nl.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_No.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Pl.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Ru.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Si.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Sv.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_Zh.rc [new file with mode: 0644]
reactos/dll/win32/credui/credui_main.c [new file with mode: 0644]
reactos/dll/win32/credui/credui_resources.h [new file with mode: 0644]
reactos/dll/win32/win32.rbuild
reactos/media/doc/README.WINE

index eee48b0..5275ada 100644 (file)
   <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" />
index 2c3151e..9cc5df9 100644 (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
diff --git a/reactos/dll/win32/credui/banner.bmp b/reactos/dll/win32/credui/banner.bmp
new file mode 100644 (file)
index 0000000..3841bb2
Binary files /dev/null and b/reactos/dll/win32/credui/banner.bmp differ
diff --git a/reactos/dll/win32/credui/credui.rbuild b/reactos/dll/win32/credui/credui.rbuild
new file mode 100644 (file)
index 0000000..e07e0f8
--- /dev/null
@@ -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>
diff --git a/reactos/dll/win32/credui/credui.rc b/reactos/dll/win32/credui/credui.rc
new file mode 100644 (file)
index 0000000..17cdc19
--- /dev/null
@@ -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"
diff --git a/reactos/dll/win32/credui/credui.spec b/reactos/dll/win32/credui/credui.spec
new file mode 100644 (file)
index 0000000..974849b
--- /dev/null
@@ -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
diff --git a/reactos/dll/win32/credui/credui_Da.rc b/reactos/dll/win32/credui/credui_Da.rc
new file mode 100644 (file)
index 0000000..943882e
--- /dev/null
@@ -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."
+}
diff --git a/reactos/dll/win32/credui/credui_De.rc b/reactos/dll/win32/credui/credui_De.rc
new file mode 100644 (file)
index 0000000..7214d04
--- /dev/null
@@ -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."
+}
diff --git a/reactos/dll/win32/credui/credui_En.rc b/reactos/dll/win32/credui/credui_En.rc
new file mode 100644 (file)
index 0000000..5733c3f
--- /dev/null
@@ -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."
+}
diff --git a/reactos/dll/win32/credui/credui_Es.rc b/reactos/dll/win32/credui/credui_Es.rc
new file mode 100644 (file)
index 0000000..1b1e58b
--- /dev/null
@@ -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)
diff --git a/reactos/dll/win32/credui/credui_Fr.rc b/reactos/dll/win32/credui/credui_Fr.rc
new file mode 100644 (file)
index 0000000..468eb1c
--- /dev/null
@@ -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)
diff --git a/reactos/dll/win32/credui/credui_Ko.rc b/reactos/dll/win32/credui/credui_Ko.rc
new file mode 100644 (file)
index 0000000..fd699bc
--- /dev/null
@@ -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 Å°¸¦ ²ô½Ã±â ¹Ù¶ø´Ï´Ù."
+}
diff --git a/reactos/dll/win32/credui/credui_Nl.rc b/reactos/dll/win32/credui/credui_Nl.rc
new file mode 100644 (file)
index 0000000..dc568a6
--- /dev/null
@@ -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."
+}
diff --git a/reactos/dll/win32/credui/credui_No.rc b/reactos/dll/win32/credui/credui_No.rc
new file mode 100644 (file)
index 0000000..fc7fdc3
--- /dev/null
@@ -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."
+}
diff --git a/reactos/dll/win32/credui/credui_Pl.rc b/reactos/dll/win32/credui/credui_Pl.rc
new file mode 100644 (file)
index 0000000..20fc2ea
--- /dev/null
@@ -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\9cnik klawisz Caps Lock key na klawiaturze, aby go wy³¹czyæ\nprzed wprowadzeniem has³a."
+}
diff --git a/reactos/dll/win32/credui/credui_Ru.rc b/reactos/dll/win32/credui/credui_Ru.rc
new file mode 100644 (file)
index 0000000..341b5b6
--- /dev/null
@@ -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 ïåðåä òåì, êàê ââîäèòü ïàðîëü."
+}
diff --git a/reactos/dll/win32/credui/credui_Si.rc b/reactos/dll/win32/credui/credui_Si.rc
new file mode 100644 (file)
index 0000000..e9d7f79
--- /dev/null
@@ -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)
diff --git a/reactos/dll/win32/credui/credui_Sv.rc b/reactos/dll/win32/credui/credui_Sv.rc
new file mode 100644 (file)
index 0000000..30e4c49
--- /dev/null
@@ -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
diff --git a/reactos/dll/win32/credui/credui_Zh.rc b/reactos/dll/win32/credui/credui_Zh.rc
new file mode 100644 (file)
index 0000000..45c3249
--- /dev/null
@@ -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)
diff --git a/reactos/dll/win32/credui/credui_main.c b/reactos/dll/win32/credui/credui_main.c
new file mode 100644 (file)
index 0000000..7e3c8a0
--- /dev/null
@@ -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;
+}
diff --git a/reactos/dll/win32/credui/credui_resources.h b/reactos/dll/win32/credui/credui_resources.h
new file mode 100644 (file)
index 0000000..4f6e427
--- /dev/null
@@ -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
index 2148f73..c32e0af 100644 (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>
index 693a923..8c8e4d2 100644 (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