diff --git a/reactos/base/applications/applications.rbuild b/reactos/base/applications/applications.rbuild index 273ee1bba92..de108400735 100644 --- a/reactos/base/applications/applications.rbuild +++ b/reactos/base/applications/applications.rbuild @@ -7,6 +7,12 @@ + + + + + + @@ -43,6 +49,9 @@ + + + @@ -61,6 +70,9 @@ + + + @@ -73,4 +85,8 @@ + + + + diff --git a/reactos/base/applications/cacls/cacls.c b/reactos/base/applications/cacls/cacls.c index ad93e130377..733882ba529 100644 --- a/reactos/base/applications/cacls/cacls.c +++ b/reactos/base/applications/cacls/cacls.c @@ -507,18 +507,8 @@ PrintSpecialAccess: } -#ifdef _UNICODE -int __cdecl main(void) -#else -int __cdecl _main (int argc, char *argv[]) -#endif +int __cdecl _tmain(int argc, const TCHAR *argv[]) { -#ifdef _UNICODE - PWCHAR *argv; - int argc = 0; - argv = CommandLineToArgvW(GetCommandLineW(), &argc); -#endif - if (argc < 2) { PrintHelp(); diff --git a/reactos/base/applications/cacls/cacls.rbuild b/reactos/base/applications/cacls/cacls.rbuild index b15e9b54b00..a2abe968a6d 100644 --- a/reactos/base/applications/cacls/cacls.rbuild +++ b/reactos/base/applications/cacls/cacls.rbuild @@ -1,15 +1,15 @@ - + . - - 0x0500 0x0600 0x0600 kernel32 advapi32 ntdll + user32 + shell32 cacls.c - cacls.rc + lang/cacls.rc precomp.h diff --git a/reactos/base/applications/cacls/De.rc b/reactos/base/applications/cacls/lang/De.rc similarity index 100% rename from reactos/base/applications/cacls/De.rc rename to reactos/base/applications/cacls/lang/De.rc diff --git a/reactos/base/applications/cacls/En.rc b/reactos/base/applications/cacls/lang/En.rc similarity index 100% rename from reactos/base/applications/cacls/En.rc rename to reactos/base/applications/cacls/lang/En.rc diff --git a/reactos/base/applications/cacls/Nl.rc b/reactos/base/applications/cacls/lang/Nl.rc similarity index 100% rename from reactos/base/applications/cacls/Nl.rc rename to reactos/base/applications/cacls/lang/Nl.rc diff --git a/reactos/base/applications/cacls/lang/No.rc b/reactos/base/applications/cacls/lang/No.rc new file mode 100644 index 00000000000..efde40a5f0f --- /dev/null +++ b/reactos/base/applications/cacls/lang/No.rc @@ -0,0 +1,74 @@ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +STRINGTABLE DISCARDABLE +{ + +IDS_HELP, "Viser eller endrer tilgang kontroll lister (ACL) av filer\n\n\ +CACLS filnavn [/T] [/E] [/C] [/G bruker:perm [...]] [/R user [...]]\n\ + [/P bruker:perm [...]] [/D bruker [...]]\n\ + filnavn Viser ACL.\n\ + /T Endrer ACL av spesifiserte filer i\n\ + nåværende katalog og alle under-mapper.\n\ + /E Rediger ACL isteden for erstatte det.\n\ + /C Fortsett på tilgang nektet feiler.\n\ + /G user:perm Innrømme spesifiert bruker tilgang rettigheter.\n\ + Perm kan bli: L Les\n\ + S Skriv\n\ + E Endre (skriv)\n\ + F Full kontroll\n\ + /R bruker Tilbakekalle spesifisert bruker tilgang rettighet (bare gyldig med /E).\n\ + /P bruker:perm Erstatte spesifisert bruker tilgang rettighet.\n\ + Perm kan bli: I Ingen\n\ + L Les\n\ + S Skrive\n\ + E Endre (skriv)\n\ + F Full kontroll\n\ + /D bruker Avslå spesifisert bruker tilgang.\n\ +Wildcards kan bli brukt for å spesifisere mere enn en fil i en kommando.\n\ +Du kan spesifisere mere enn en bruker i en kommando.\n\n\ +Forkortelse:\n\ + CI - Container Inherit.\n\ + ACE vil bli inherited av directories.\n\ + OI - Object Inherit.\n\ + ACE will be inherited by files.\n\ + IO - Inherit Only.\n\ + ACE gjelder ikke til nåværende fil/katalog.\n" + +IDS_ABBR_CI, "(CI)" +IDS_ABBR_OI, "(OI)" +IDS_ABBR_IO, "(IO)" +IDS_ABBR_FULL, "F" +IDS_ABBR_READ, "R" +IDS_ABBR_WRITE, "W" +IDS_ABBR_CHANGE, "C" +IDS_ABBR_NONE, "N" +IDS_ALLOW, "" +IDS_DENY, "(NEKTE)" +IDS_SPECIAL_ACCESS, "(spesiell tilgang:)" +IDS_GENERIC_READ, "GENERISK_LESE" +IDS_GENERIC_WRITE, "GENERISK_SKRIVE" +IDS_GENERIC_EXECUTE, "GENERISK_KJØRE" +IDS_GENERIC_ALL, "GENERISK_ALT" +IDS_FILE_GENERIC_EXECUTE, "FIL_GENERISK_KJØRE" +IDS_FILE_GENERIC_READ, "FIL_GENERISK_LESE" +IDS_FILE_GENERIC_WRITE, "FIL_GENERISK_SKRIVE" +IDS_FILE_READ_DATA, "FIL_LES_DATA" +IDS_FILE_WRITE_DATA, "FIL_SKRIV_DATA" +IDS_FILE_APPEND_DATA, "FIL_TILFØYE_DATA" +IDS_FILE_READ_EA, "FIL_LESE_EA" +IDS_FILE_WRITE_EA, "FIL_SKRIVE_EA" +IDS_FILE_EXECUTE, "FIL_KJØRE" +IDS_FILE_DELETE_CHILD, "FIL_SLETT_BARN" +IDS_FILE_READ_ATTRIBUTES, "FIL_LESE_ATTRIBUTTER" +IDS_FILE_WRITE_ATTRIBUTES, "FIL_SKRIVE_ATTRIBUTTER" +IDS_MAXIMUM_ALLOWED, "MAKSIMUM_TILATT" +IDS_ACCESS_SYSTEM_SECURITY, "TILGANG_SYSTEM_SIKKERHET" +IDS_SPECIFIC_RIGHTS_ALL, "SPESIFIKT_RETTIGHETER_ALT" +IDS_STANDARD_RIGHTS_REQUIRED, "STANDARD_RETTIGHETER_PÅBUDT" +IDS_SYNCHRONIZE, "SYNKRONISERE" +IDS_WRITE_OWNER, "SKRIVE_EIER" +IDS_WRITE_DAC, "SKRIVE_DAC" +IDS_READ_CONTROL, "LESE_KONTROLL" +IDS_DELETE, "SLETT" +IDS_STANDARD_RIGHTS_ALL, "STANDARD_RETTIGHETER_ALT" +} diff --git a/reactos/base/applications/cacls/Ru.rc b/reactos/base/applications/cacls/lang/Ru.rc similarity index 100% rename from reactos/base/applications/cacls/Ru.rc rename to reactos/base/applications/cacls/lang/Ru.rc diff --git a/reactos/base/applications/cacls/cacls.rc b/reactos/base/applications/cacls/lang/cacls.rc similarity index 100% rename from reactos/base/applications/cacls/cacls.rc rename to reactos/base/applications/cacls/lang/cacls.rc diff --git a/reactos/base/applications/cacls/rsrc.rc b/reactos/base/applications/cacls/rsrc.rc index a7f2223665c..3c472888f34 100644 --- a/reactos/base/applications/cacls/rsrc.rc +++ b/reactos/base/applications/cacls/rsrc.rc @@ -8,8 +8,9 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL /* include localised resources */ -#include "En.rc" -#include "Nl.rc" -#include "Ru.rc" -#include "De.rc" +#include "lang/En.rc" +#include "lang/Nl.rc" +#include "lang/Ru.rc" +#include "lang/De.rc" +#include "lang/No.rc" diff --git a/reactos/base/applications/calc/Cz.rc b/reactos/base/applications/calc/lang/Cz.rc similarity index 96% rename from reactos/base/applications/calc/Cz.rc rename to reactos/base/applications/calc/lang/Cz.rc index 7aca39f9209..53eea8496f1 100644 --- a/reactos/base/applications/calc/Cz.rc +++ b/reactos/base/applications/calc/lang/Cz.rc @@ -1,157 +1,157 @@ -/* - * Czech language support - * - * WineCalc (En.rc) - * - * Copyright 2005 Denzil - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "windows.h" -#include "resource.h" -#include "winecalc.h" - -LANGUAGE LANG_CZECH, SUBLANG_DEFAULT - -STRINGTABLE DISCARDABLE -{ - IDS_APPNAME, "Kalkulátor" - - IDS_COPYRIGHT1, "Kalkulátor 5.0. Licencován pod LGPL 2" - IDS_COPYRIGHT2 "Copyright 2003, James Briggs" - IDS_COPYRIGHT3 "San Jose, California, USA" - IDS_COPYRIGHT4 "james@ActionMessage.com" - IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" - - IDS_BTN_BACKSPACE, "Zpìt" - IDS_BTN_CLEAR_ENTRY, "CE" - IDS_BTN_CLEAR_ALL, "C" - IDS_BTN_MEM_CLEAR, "MC" - IDS_BTN_MEM_RECALL, "MR" - IDS_BTN_MEM_STORE, "MS" - IDS_BTN_MEM_PLUS, "M+" - IDS_BTN_MEM_STATUS_M, "M" - IDS_BTN_SQRT, "sqrt" - IDS_ERR_INVALID_INPUT, "Neplatný vstup pro funkci." - IDS_ERR_DIVIDE_BY_ZERO, "Nelze dìlit nulou." - IDS_ERR_UNDEFINED, "Výsledek funkce není definován." -} - -MAIN_MENU MENU DISCARDABLE -{ - POPUP "&Editace" { - MENUITEM "&Kopírovat Ctrl+C", IDM_COPY - MENUITEM "&Vložit Ctrl+V", IDM_PASTE - } - POPUP "&Zobrazení" { - MENUITEM "Standartní", IDM_MODE_STANDARD - MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING - } - POPUP "&Pomoc" { - MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "O Kalkulátoru", IDM_ABOUT - } -} - -SCIMS_MENU MENU DISCARDABLE -{ - POPUP "&Editace" { - MENUITEM "&Kopírovat Ctrl+C", IDM_COPY - MENUITEM "&Vložit Ctrl+V", IDM_PASTE - } - POPUP "&Zobrazení" { - MENUITEM "Standartní", IDM_MODE_STANDARD - MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX - MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC - MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT - MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN - MENUITEM SEPARATOR - MENUITEM "Stupnì\tF2", ID_CALC_MS_DEGREES - MENUITEM "Radiány\tF3", ID_CALC_MS_RADIANS - MENUITEM "Grady\tF4", ID_CALC_MS_GRADS - MENUITEM SEPARATOR - MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING - } - POPUP "&Pomoc" { - MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "O Kalkulátoru", IDM_ABOUT - } -} - -SCIWS_MENU MENU DISCARDABLE -{ - POPUP "&Editace" { - MENUITEM "&Kopírovat Ctrl+C", IDM_COPY - MENUITEM "&Vložit Ctrl+V", IDM_PASTE - } - POPUP "&Zobrazení" { - MENUITEM "Standartní", IDM_MODE_STANDARD - MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX - MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC - MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT - MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN - MENUITEM SEPARATOR - MENUITEM "Qword\tF12", ID_CALC_WS_QWORD - MENUITEM "Dword\tF2", ID_CALC_WS_DWORD - MENUITEM "Word\tF3", ID_CALC_WS_WORD - MENUITEM "Byte\tF4", ID_CALC_WS_BYTE - MENUITEM SEPARATOR - MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING - } - POPUP "&Pomoc" { - MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "O Kalkulátoru", IDM_ABOUT - } -} - -MAIN_MENU ACCELERATORS -BEGIN - VK_F1, IDV_HELP, VIRTKEY -END - -DLG_ABOUT DIALOG 12,0,120,82 -CAPTION "O GNU winecalc" -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -BEGIN - DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP -END - -WHATS_THIS_MENU MENU DISCARDABLE -{ - POPUP "" { - MENUITEM "Co je toto?", IDM_WHATS_THIS - } -} - -DLG_STATS DIALOG 12,0,125,78 -CAPTION "Statistics Box" -FONT 9, "Tahoma" -STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE -BEGIN - DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP -END +/* + * Czech language support + * + * WineCalc (En.rc) + * + * Copyright 2005 Denzil + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windows.h" +#include "resource.h" +#include "winecalc.h" + +LANGUAGE LANG_CZECH, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + IDS_APPNAME, "Kalkulátor" + + IDS_COPYRIGHT1, "Kalkulátor 5.0. Licencován pod LGPL 2" + IDS_COPYRIGHT2 "Copyright 2003, James Briggs" + IDS_COPYRIGHT3 "San Jose, California, USA" + IDS_COPYRIGHT4 "james@ActionMessage.com" + IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" + + IDS_BTN_BACKSPACE, "Zpìt" + IDS_BTN_CLEAR_ENTRY, "CE" + IDS_BTN_CLEAR_ALL, "C" + IDS_BTN_MEM_CLEAR, "MC" + IDS_BTN_MEM_RECALL, "MR" + IDS_BTN_MEM_STORE, "MS" + IDS_BTN_MEM_PLUS, "M+" + IDS_BTN_MEM_STATUS_M, "M" + IDS_BTN_SQRT, "sqrt" + IDS_ERR_INVALID_INPUT, "Neplatný vstup pro funkci." + IDS_ERR_DIVIDE_BY_ZERO, "Nelze dìlit nulou." + IDS_ERR_UNDEFINED, "Výsledek funkce není definován." +} + +MAIN_MENU MENU DISCARDABLE +{ + POPUP "&Editace" { + MENUITEM "&Kopírovat Ctrl+C", IDM_COPY + MENUITEM "&Vložit Ctrl+V", IDM_PASTE + } + POPUP "&Zobrazení" { + MENUITEM "Standartní", IDM_MODE_STANDARD + MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING + } + POPUP "&Pomoc" { + MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "O Kalkulátoru", IDM_ABOUT + } +} + +SCIMS_MENU MENU DISCARDABLE +{ + POPUP "&Editace" { + MENUITEM "&Kopírovat Ctrl+C", IDM_COPY + MENUITEM "&Vložit Ctrl+V", IDM_PASTE + } + POPUP "&Zobrazení" { + MENUITEM "Standartní", IDM_MODE_STANDARD + MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX + MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC + MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT + MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Stupnì\tF2", ID_CALC_MS_DEGREES + MENUITEM "Radiány\tF3", ID_CALC_MS_RADIANS + MENUITEM "Grady\tF4", ID_CALC_MS_GRADS + MENUITEM SEPARATOR + MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING + } + POPUP "&Pomoc" { + MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "O Kalkulátoru", IDM_ABOUT + } +} + +SCIWS_MENU MENU DISCARDABLE +{ + POPUP "&Editace" { + MENUITEM "&Kopírovat Ctrl+C", IDM_COPY + MENUITEM "&Vložit Ctrl+V", IDM_PASTE + } + POPUP "&Zobrazení" { + MENUITEM "Standartní", IDM_MODE_STANDARD + MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX + MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC + MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT + MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Qword\tF12", ID_CALC_WS_QWORD + MENUITEM "Dword\tF2", ID_CALC_WS_DWORD + MENUITEM "Word\tF3", ID_CALC_WS_WORD + MENUITEM "Byte\tF4", ID_CALC_WS_BYTE + MENUITEM SEPARATOR + MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING + } + POPUP "&Pomoc" { + MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "O Kalkulátoru", IDM_ABOUT + } +} + +MAIN_MENU ACCELERATORS +BEGIN + VK_F1, IDV_HELP, VIRTKEY +END + +DLG_ABOUT DIALOG 12,0,120,82 +CAPTION "O GNU winecalc" +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +BEGIN + DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP +END + +WHATS_THIS_MENU MENU DISCARDABLE +{ + POPUP "" { + MENUITEM "Co je toto?", IDM_WHATS_THIS + } +} + +DLG_STATS DIALOG 12,0,125,78 +CAPTION "Statistics Box" +FONT 9, "Tahoma" +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +BEGIN + DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP +END diff --git a/reactos/base/applications/calc/De.rc b/reactos/base/applications/calc/lang/De.rc similarity index 84% rename from reactos/base/applications/calc/De.rc rename to reactos/base/applications/calc/lang/De.rc index 4f2f14ad0ba..143b99cd503 100644 --- a/reactos/base/applications/calc/De.rc +++ b/reactos/base/applications/calc/lang/De.rc @@ -45,7 +45,7 @@ STRINGTABLE DISCARDABLE IDS_BTN_SQRT, "sqrt" IDS_ERR_INVALID_INPUT, "Ungültige Eingabe für Funktion." IDS_ERR_DIVIDE_BY_ZERO, "Teilen durch 0 unmöglich." - IDS_ERR_UNDEFINED, "Das Ergebnis der Funktion is undefiniert." + IDS_ERR_UNDEFINED, "Das Ergebnis der Funktion ist undefiniert." } MAIN_MENU MENU DISCARDABLE @@ -77,14 +77,14 @@ SCIMS_MENU MENU DISCARDABLE MENUITEM "&Standard", IDM_MODE_STANDARD MENUITEM "&Wissenschaftlich", IDM_MODE_SCIENTIFIC MENUITEM SEPARATOR - MENUITEM "&Hex\tF5", ID_CALC_NS_HEX - MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC - MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT - MENUITEM "&Binär\tF8", ID_CALC_NS_BIN + MENUITEM "&Hex\tF5", ID_CALC_NS_HEX + MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC + MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT + MENUITEM "&Binär\tF8", ID_CALC_NS_BIN MENUITEM SEPARATOR MENUITEM "&Deg\tF2", ID_CALC_MS_DEGREES MENUITEM "&Rad\tF3", ID_CALC_MS_RADIANS - MENUITEM "&Grad\tF4", ID_CALC_MS_GRADS + MENUITEM "&Grad\tF4", ID_CALC_MS_GRADS MENUITEM SEPARATOR MENUITEM "Zifferngr&uppierung", IDM_DIGIT_GROUPING } @@ -105,15 +105,15 @@ SCIWS_MENU MENU DISCARDABLE MENUITEM "&Standard", IDM_MODE_STANDARD MENUITEM "&Wissenschaftlich", IDM_MODE_SCIENTIFIC MENUITEM SEPARATOR - MENUITEM "&Hex\tF5", ID_CALC_NS_HEX - MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC - MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT - MENUITEM "&Binär\tF8", ID_CALC_NS_BIN + MENUITEM "&Hex\tF5", ID_CALC_NS_HEX + MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC + MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT + MENUITEM "&Binär\tF8", ID_CALC_NS_BIN MENUITEM SEPARATOR - MENUITEM "&Qword\tF12", ID_CALC_WS_QWORD - MENUITEM "Dw&ord\tF2", ID_CALC_WS_DWORD - MENUITEM "Wo&rd\tF3", ID_CALC_WS_WORD - MENUITEM "&Byte\tF4", ID_CALC_WS_BYTE + MENUITEM "&Qword\tF12", ID_CALC_WS_QWORD + MENUITEM "Dw&ord\tF2", ID_CALC_WS_DWORD + MENUITEM "Wo&rd\tF3", ID_CALC_WS_WORD + MENUITEM "&Byte\tF4", ID_CALC_WS_BYTE MENUITEM SEPARATOR MENUITEM "&Zifferngruppierung", IDM_DIGIT_GROUPING } diff --git a/reactos/base/applications/calc/En.rc b/reactos/base/applications/calc/lang/En.rc similarity index 100% rename from reactos/base/applications/calc/En.rc rename to reactos/base/applications/calc/lang/En.rc diff --git a/reactos/base/applications/calc/Es.rc b/reactos/base/applications/calc/lang/Es.rc similarity index 100% rename from reactos/base/applications/calc/Es.rc rename to reactos/base/applications/calc/lang/Es.rc diff --git a/reactos/base/applications/calc/Fr.rc b/reactos/base/applications/calc/lang/Fr.rc similarity index 100% rename from reactos/base/applications/calc/Fr.rc rename to reactos/base/applications/calc/lang/Fr.rc diff --git a/reactos/base/applications/calc/lang/Gr.rc b/reactos/base/applications/calc/lang/Gr.rc new file mode 100644 index 00000000000..926183cf4b0 --- /dev/null +++ b/reactos/base/applications/calc/lang/Gr.rc @@ -0,0 +1,154 @@ +/* + * WineCalc (Gr.rc) + * + * Copyright 2006 Dj Apal + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windows.h" +#include "resource.h" +#include "winecalc.h" + +LANGUAGE LANG_GREEK, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + IDS_APPNAME, "ÕðïëïãéóôÞò" + + IDS_COPYRIGHT1, "ÕðïëïãéóôÞò 5.0. Licensed under LGPL 2" + IDS_COPYRIGHT2 "Copyright 2003, James Briggs" + IDS_COPYRIGHT3 "San Jose, California, USA" + IDS_COPYRIGHT4 "james@ActionMessage.com" + IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" + + IDS_BTN_BACKSPACE, "Backspace" + IDS_BTN_CLEAR_ENTRY, "CE" + IDS_BTN_CLEAR_ALL, "C" + IDS_BTN_MEM_CLEAR, "MC" + IDS_BTN_MEM_RECALL, "MR" + IDS_BTN_MEM_STORE, "MS" + IDS_BTN_MEM_PLUS, "M+" + IDS_BTN_MEM_STATUS_M, "M" + IDS_BTN_SQRT, "sqrt" + IDS_ERR_INVALID_INPUT, "ËáíèáóìÝíï üñéóìá ãéá ôç óõíÜñôçóç." + IDS_ERR_DIVIDE_BY_ZERO, "Äå ìðïñåß íá ãßíåé äéáßñåóç ôïõ ìçäåíüò." + IDS_ERR_UNDEFINED, "Ôï áðïôÝëåóìá ôçò óõíÜñôçóçò åßíáé áäéåõêñßíéóôï." +} + +MAIN_MENU MENU DISCARDABLE +{ + POPUP "&Åðåîåñãáóßá" { + MENUITEM "&ÁíôéãñáöÞ Ctrl+C", IDM_COPY + MENUITEM "&Åðéêüëëçóç Ctrl+V", IDM_PASTE + } + POPUP "&¸íäåéîç" { + MENUITEM "Êáíïíéêü", IDM_MODE_STANDARD + MENUITEM "Åðéóôçìïíéêü", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "ÏñãÜíùóç øçößùí", IDM_DIGIT_GROUPING + } + POPUP "&ÂïÞèåéá" { + MENUITEM "ÈÝìáôá âïÞèåéáò", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Ðåñß ôïõ ÕðïëïãéóôÞ", IDM_ABOUT + } +} + +SCIMS_MENU MENU DISCARDABLE +{ + POPUP "&Åðåîåñãáóßá" { + MENUITEM "&ÁíôéãñáöÞ Ctrl+C", IDM_COPY + MENUITEM "&Åðéêüëëçóç Ctrl+V", IDM_PASTE + } + POPUP "&¸íäåéîç" { + MENUITEM "Êáíïíéêü", IDM_MODE_STANDARD + MENUITEM "Åðéóôçìïíéêü", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Äåêáåîáäéêü\tF5", ID_CALC_NS_HEX + MENUITEM "Äåêáäéêü\tF6", ID_CALC_NS_DEC + MENUITEM "Ïêôáäéêü\tF7", ID_CALC_NS_OCT + MENUITEM "Äõáäéêü\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Âáèìïß\tF2", ID_CALC_MS_DEGREES + MENUITEM "Ìïßñåò\tF3", ID_CALC_MS_RADIANS + MENUITEM "Grads\tF4", ID_CALC_MS_GRADS + MENUITEM SEPARATOR + MENUITEM "ÏñãÜíùóç øçößùí", IDM_DIGIT_GROUPING + } + POPUP "&ÂïÞèåéá" { + MENUITEM "ÈÝìáôá âïÞèåéáò", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Ðåñß ôïõ ÕðïëïãéóôÞ", IDM_ABOUT + } +} + +SCIWS_MENU MENU DISCARDABLE +{ + POPUP "&Åðåîåñãáóßá" { + MENUITEM "&ÁíôéãñáöÞ Ctrl+C", IDM_COPY + MENUITEM "&Åðéêüëëçóç Ctrl+V", IDM_PASTE + } + POPUP "&¸íäåéîç" { + MENUITEM "Êáíïíéêü", IDM_MODE_STANDARD + MENUITEM "Åðéóôçìïíéêü", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Äåêáåîáäéêü\tF5", ID_CALC_NS_HEX + MENUITEM "Äåêáäéêü\tF6", ID_CALC_NS_DEC + MENUITEM "Ïêôáäéêü\tF7", ID_CALC_NS_OCT + MENUITEM "Äõáäéêü\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Âáèìïß\tF2", ID_CALC_MS_DEGREES + MENUITEM "Ìïßñåò\tF3", ID_CALC_MS_RADIANS + MENUITEM "Grads\tF4", ID_CALC_MS_GRADS + MENUITEM SEPARATOR + MENUITEM "ÏñãÜíùóç øçößùí", IDM_DIGIT_GROUPING + } + POPUP "&ÂïÞèåéá" { + MENUITEM "ÈÝìáôá âïÞèåéáò", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Ðåñß ôïõ ÕðïëïãéóôÞ", IDM_ABOUT + } +} + +MAIN_MENU ACCELERATORS +BEGIN + VK_F1, IDV_HELP, VIRTKEY +END + +DLG_ABOUT DIALOG 12,0,120,82 +CAPTION "Ðåñß ôïõ GNU winecalc" +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +BEGIN + DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP +END + +WHATS_THIS_MENU MENU DISCARDABLE +{ + POPUP "" { + MENUITEM "Ôé åßíáé áõôü;", IDM_WHATS_THIS + } +} + +DLG_STATS DIALOG 12,0,125,78 +CAPTION "Statistics Box" +FONT 9, "Tahoma" +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +BEGIN + DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP +END diff --git a/reactos/base/applications/calc/Hu.rc b/reactos/base/applications/calc/lang/Hu.rc similarity index 97% rename from reactos/base/applications/calc/Hu.rc rename to reactos/base/applications/calc/lang/Hu.rc index cf0071ad233..dc7cc1351c4 100644 --- a/reactos/base/applications/calc/Hu.rc +++ b/reactos/base/applications/calc/lang/Hu.rc @@ -1,156 +1,156 @@ -/* - * WineCalc (Hu.rc) - * - * Copyright 2003 James Briggs - * Hungarian translation by Adam Medveczky - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "windows.h" -#include "resource.h" -#include "winecalc.h" - -LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT - -STRINGTABLE DISCARDABLE -{ - IDS_APPNAME, "Számológép" - - IDS_COPYRIGHT1, "Calculator 5.0. Licensed under LGPL 2" - IDS_COPYRIGHT2 "Copyright 2003, James Briggs" - IDS_COPYRIGHT3 "San Jose, California, USA" - IDS_COPYRIGHT4 "james@ActionMessage.com" - IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" - - IDS_BTN_BACKSPACE, "Backspace" - IDS_BTN_CLEAR_ENTRY, "CE" - IDS_BTN_CLEAR_ALL, "C" - IDS_BTN_MEM_CLEAR, "MC" - IDS_BTN_MEM_RECALL, "MR" - IDS_BTN_MEM_STORE, "MS" - IDS_BTN_MEM_PLUS, "M+" - IDS_BTN_MEM_STATUS_M, "M" - IDS_BTN_SQRT, "gyök" - IDS_ERR_INVALID_INPUT, "Hibás bemenet." - IDS_ERR_DIVIDE_BY_ZERO, "Nem tudok nullával osztani." - IDS_ERR_UNDEFINED, "Result of function is undefined." -} - -MAIN_MENU MENU DISCARDABLE -{ - POPUP "&Szerkesztés" { - MENUITEM "&Másolás Ctrl+C", IDM_COPY - MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE - } - POPUP "&Nézet" { - MENUITEM "Alap", IDM_MODE_STANDARD - MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING - } - POPUP "Sú&gó" { - MENUITEM "&Témakörök", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "Számológép névjegye", IDM_ABOUT - } -} - -SCIMS_MENU MENU DISCARDABLE -{ - POPUP "&Szerkesztés" { - MENUITEM "&Másolás Ctrl+C", IDM_COPY - MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE - } - POPUP "&Nézet" { - MENUITEM "Alap", IDM_MODE_STANDARD - MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX - MENUITEM "Decimális\tF6", ID_CALC_NS_DEC - MENUITEM "Oktális\tF7", ID_CALC_NS_OCT - MENUITEM "Bináris\tF8", ID_CALC_NS_BIN - MENUITEM SEPARATOR - MENUITEM "Fok\tF2", ID_CALC_MS_DEGREES - MENUITEM "Radián\tF3", ID_CALC_MS_RADIANS - MENUITEM "Újfok\tF4", ID_CALC_MS_GRADS - MENUITEM SEPARATOR - MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING - } - POPUP "Sú&gó" { - MENUITEM "&Témakörök", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "Számológép névjegye", IDM_ABOUT - } -} - -SCIWS_MENU MENU DISCARDABLE -{ - POPUP "&Szerkesztés" { - MENUITEM "&Másolás Ctrl+C", IDM_COPY - MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE - } - POPUP "&Nézet" { - MENUITEM "Alap", IDM_MODE_STANDARD - MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX - MENUITEM "Decimális\tF6", ID_CALC_NS_DEC - MENUITEM "Oktális\tF7", ID_CALC_NS_OCT - MENUITEM "Bináris\tF8", ID_CALC_NS_BIN - MENUITEM SEPARATOR - MENUITEM "Négyszeres szó\tF12", ID_CALC_WS_QWORD - MENUITEM "Duplaszó\tF2", ID_CALC_WS_DWORD - MENUITEM "Szó\tF3", ID_CALC_WS_WORD - MENUITEM "Bájt\tF4", ID_CALC_WS_BYTE - MENUITEM SEPARATOR - MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING - } - POPUP "Sú&gó" { - MENUITEM "&Témakörök", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "Számológép névjegye", IDM_ABOUT - } -} - -MAIN_MENU ACCELERATORS -BEGIN - VK_F1, IDV_HELP, VIRTKEY -END - -DLG_ABOUT DIALOG 12,0,120,82 -CAPTION "GNU winecalc (számológép) névjegye" -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -BEGIN - DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP -END - -WHATS_THIS_MENU MENU DISCARDABLE -{ - POPUP "" { - MENUITEM "Mi ez?", IDM_WHATS_THIS - } -} - -DLG_STATS DIALOG 12,0,125,78 -CAPTION "Statisztika" -FONT 9, "Tahoma" -STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE -BEGIN - DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP -END +/* + * WineCalc (Hu.rc) + * + * Copyright 2003 James Briggs + * Hungarian translation by Adam Medveczky + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windows.h" +#include "resource.h" +#include "winecalc.h" + +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + IDS_APPNAME, "Számológép" + + IDS_COPYRIGHT1, "Calculator 5.0. Licensed under LGPL 2" + IDS_COPYRIGHT2 "Copyright 2003, James Briggs" + IDS_COPYRIGHT3 "San Jose, California, USA" + IDS_COPYRIGHT4 "james@ActionMessage.com" + IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" + + IDS_BTN_BACKSPACE, "Backspace" + IDS_BTN_CLEAR_ENTRY, "CE" + IDS_BTN_CLEAR_ALL, "C" + IDS_BTN_MEM_CLEAR, "MC" + IDS_BTN_MEM_RECALL, "MR" + IDS_BTN_MEM_STORE, "MS" + IDS_BTN_MEM_PLUS, "M+" + IDS_BTN_MEM_STATUS_M, "M" + IDS_BTN_SQRT, "gyök" + IDS_ERR_INVALID_INPUT, "Hibás bemenet." + IDS_ERR_DIVIDE_BY_ZERO, "Nem tudok nullával osztani." + IDS_ERR_UNDEFINED, "Result of function is undefined." +} + +MAIN_MENU MENU DISCARDABLE +{ + POPUP "&Szerkesztés" { + MENUITEM "&Másolás Ctrl+C", IDM_COPY + MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE + } + POPUP "&Nézet" { + MENUITEM "Alap", IDM_MODE_STANDARD + MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING + } + POPUP "Sú&gó" { + MENUITEM "&Témakörök", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Számológép névjegye", IDM_ABOUT + } +} + +SCIMS_MENU MENU DISCARDABLE +{ + POPUP "&Szerkesztés" { + MENUITEM "&Másolás Ctrl+C", IDM_COPY + MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE + } + POPUP "&Nézet" { + MENUITEM "Alap", IDM_MODE_STANDARD + MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX + MENUITEM "Decimális\tF6", ID_CALC_NS_DEC + MENUITEM "Oktális\tF7", ID_CALC_NS_OCT + MENUITEM "Bináris\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Fok\tF2", ID_CALC_MS_DEGREES + MENUITEM "Radián\tF3", ID_CALC_MS_RADIANS + MENUITEM "Újfok\tF4", ID_CALC_MS_GRADS + MENUITEM SEPARATOR + MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING + } + POPUP "Sú&gó" { + MENUITEM "&Témakörök", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Számológép névjegye", IDM_ABOUT + } +} + +SCIWS_MENU MENU DISCARDABLE +{ + POPUP "&Szerkesztés" { + MENUITEM "&Másolás Ctrl+C", IDM_COPY + MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE + } + POPUP "&Nézet" { + MENUITEM "Alap", IDM_MODE_STANDARD + MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX + MENUITEM "Decimális\tF6", ID_CALC_NS_DEC + MENUITEM "Oktális\tF7", ID_CALC_NS_OCT + MENUITEM "Bináris\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Négyszeres szó\tF12", ID_CALC_WS_QWORD + MENUITEM "Duplaszó\tF2", ID_CALC_WS_DWORD + MENUITEM "Szó\tF3", ID_CALC_WS_WORD + MENUITEM "Bájt\tF4", ID_CALC_WS_BYTE + MENUITEM SEPARATOR + MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING + } + POPUP "Sú&gó" { + MENUITEM "&Témakörök", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Számológép névjegye", IDM_ABOUT + } +} + +MAIN_MENU ACCELERATORS +BEGIN + VK_F1, IDV_HELP, VIRTKEY +END + +DLG_ABOUT DIALOG 12,0,120,82 +CAPTION "GNU winecalc (számológép) névjegye" +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +BEGIN + DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP +END + +WHATS_THIS_MENU MENU DISCARDABLE +{ + POPUP "" { + MENUITEM "Mi ez?", IDM_WHATS_THIS + } +} + +DLG_STATS DIALOG 12,0,125,78 +CAPTION "Statisztika" +FONT 9, "Tahoma" +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +BEGIN + DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP +END diff --git a/reactos/base/applications/calc/It.rc b/reactos/base/applications/calc/lang/It.rc similarity index 59% rename from reactos/base/applications/calc/It.rc rename to reactos/base/applications/calc/lang/It.rc index b7ae104b7a4..30ff7f97acb 100644 --- a/reactos/base/applications/calc/It.rc +++ b/reactos/base/applications/calc/lang/It.rc @@ -1,7 +1,7 @@ /* * WineCalc (It.rc) * - * Copyright 2003 James Briggs + * Copyright 2006 Gabriel ilardi * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -26,9 +26,9 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE { - IDS_APPNAME, "Calculator" + IDS_APPNAME, "Calcolatrice" - IDS_COPYRIGHT1, "Calculator 5.0. Licensed under LGPL 2" + IDS_COPYRIGHT1, "Calcolatrice 5.0. sotto licenza LGPL 2" IDS_COPYRIGHT2 "Copyright 2003, James Briggs" IDS_COPYRIGHT3 "San Jose, California, USA" IDS_COPYRIGHT4 "james@ActionMessage.com" @@ -43,84 +43,84 @@ STRINGTABLE DISCARDABLE IDS_BTN_MEM_PLUS, "M+" IDS_BTN_MEM_STATUS_M, "M" IDS_BTN_SQRT, "sqrt" - IDS_ERR_INVALID_INPUT, "Invalid input for function." - IDS_ERR_DIVIDE_BY_ZERO, "Cannot divide by zero." - IDS_ERR_UNDEFINED, "Result of function is undefined." + IDS_ERR_INVALID_INPUT, "Input invalido per la funzione." + IDS_ERR_DIVIDE_BY_ZERO, "Non si può dividere per zero." + IDS_ERR_UNDEFINED, "Il risultato della funzione è indefinito." } MAIN_MENU MENU DISCARDABLE { - POPUP "&Edit" { - MENUITEM "&Copy Ctrl+C", IDM_COPY - MENUITEM "&Paste Ctrl+V", IDM_PASTE + POPUP "&Modifica" { + MENUITEM "&Copia Ctrl+C", IDM_COPY + MENUITEM "I&ncolla Ctrl+V", IDM_PASTE } - POPUP "&View" { + POPUP "&Visualizza" { MENUITEM "Standard", IDM_MODE_STANDARD - MENUITEM "Scientific", IDM_MODE_SCIENTIFIC + MENUITEM "Scientifica", IDM_MODE_SCIENTIFIC MENUITEM SEPARATOR - MENUITEM "Digit Grouping", IDM_DIGIT_GROUPING + MENUITEM "Raggruppamento cifre", IDM_DIGIT_GROUPING } - POPUP "&Help" { - MENUITEM "Help Topics", IDM_HELP_TOPICS + POPUP "&?" { + MENUITEM "Guida in linea", IDM_HELP_TOPICS MENUITEM SEPARATOR - MENUITEM "About Calculator", IDM_ABOUT + MENUITEM "Informazioni su Calcolatrice", IDM_ABOUT } } SCIMS_MENU MENU DISCARDABLE { - POPUP "&Edit" { - MENUITEM "&Copy Ctrl+C", IDM_COPY - MENUITEM "&Paste Ctrl+V", IDM_PASTE + POPUP "&Modifica" { + MENUITEM "&Copia Ctrl+C", IDM_COPY + MENUITEM "I&ncolla Ctrl+V", IDM_PASTE } - POPUP "&View" { + POPUP "&Visualizza" { MENUITEM "Standard", IDM_MODE_STANDARD - MENUITEM "Scientific", IDM_MODE_SCIENTIFIC + MENUITEM "Scientifica", IDM_MODE_SCIENTIFIC MENUITEM SEPARATOR MENUITEM "Hex\tF5", ID_CALC_NS_HEX - MENUITEM "Decimal\tF6", ID_CALC_NS_DEC - MENUITEM "Octal\tF7", ID_CALC_NS_OCT - MENUITEM "Binary\tF8", ID_CALC_NS_BIN + MENUITEM "Dec\tF6", ID_CALC_NS_DEC + MENUITEM "Oct\tF7", ID_CALC_NS_OCT + MENUITEM "Bin\tF8", ID_CALC_NS_BIN MENUITEM SEPARATOR - MENUITEM "Degrees\tF2", ID_CALC_MS_DEGREES - MENUITEM "Radians\tF3", ID_CALC_MS_RADIANS - MENUITEM "Grads\tF4", ID_CALC_MS_GRADS + MENUITEM "Gradi\tF2", ID_CALC_MS_DEGREES + MENUITEM "Radianti\tF3", ID_CALC_MS_RADIANS + MENUITEM "Gradienti\tF4", ID_CALC_MS_GRADS MENUITEM SEPARATOR - MENUITEM "Digit Grouping", IDM_DIGIT_GROUPING + MENUITEM "Raggruppamento cifre", IDM_DIGIT_GROUPING } - POPUP "&Help" { - MENUITEM "Help Topics", IDM_HELP_TOPICS + POPUP "&?" { + MENUITEM "Guida in linea", IDM_HELP_TOPICS MENUITEM SEPARATOR - MENUITEM "About Calculator", IDM_ABOUT + MENUITEM "Informazioni su calcolatrice", IDM_ABOUT } } SCIWS_MENU MENU DISCARDABLE { - POPUP "&Edit" { - MENUITEM "&Copy Ctrl+C", IDM_COPY - MENUITEM "&Paste Ctrl+V", IDM_PASTE + POPUP "&Modifica" { + MENUITEM "&Copia Ctrl+C", IDM_COPY + MENUITEM "I&ncolla Ctrl+V", IDM_PASTE } - POPUP "&View" { + POPUP "&Visualizza" { MENUITEM "Standard", IDM_MODE_STANDARD - MENUITEM "Scientific", IDM_MODE_SCIENTIFIC + MENUITEM "Scientifica", IDM_MODE_SCIENTIFIC MENUITEM SEPARATOR MENUITEM "Hex\tF5", ID_CALC_NS_HEX - MENUITEM "Decimal\tF6", ID_CALC_NS_DEC - MENUITEM "Octal\tF7", ID_CALC_NS_OCT - MENUITEM "Binary\tF8", ID_CALC_NS_BIN + MENUITEM "Dec\tF6", ID_CALC_NS_DEC + MENUITEM "Oct\tF7", ID_CALC_NS_OCT + MENUITEM "Bin\tF8", ID_CALC_NS_BIN MENUITEM SEPARATOR MENUITEM "Qword\tF12", ID_CALC_WS_QWORD MENUITEM "Dword\tF2", ID_CALC_WS_DWORD MENUITEM "Word\tF3", ID_CALC_WS_WORD MENUITEM "Byte\tF4", ID_CALC_WS_BYTE MENUITEM SEPARATOR - MENUITEM "Digit Grouping", IDM_DIGIT_GROUPING + MENUITEM "Raggruppamento cifre", IDM_DIGIT_GROUPING } - POPUP "&Help" { - MENUITEM "Help Topics", IDM_HELP_TOPICS + POPUP "&?" { + MENUITEM "Guida in linea", IDM_HELP_TOPICS MENUITEM SEPARATOR - MENUITEM "About Calculator", IDM_ABOUT + MENUITEM "Informazioni su calcolatrice", IDM_ABOUT } } @@ -132,19 +132,19 @@ END WHATS_THIS_MENU MENU DISCARDABLE { POPUP "" { - MENUITEM "What's This?", IDM_WHATS_THIS + MENUITEM "?", IDM_WHATS_THIS } } DLG_ABOUT DIALOG 12,0,120,82 -CAPTION "About GNU winecalc" +CAPTION "Informazioni su GNU winecalc" STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU BEGIN DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END DLG_STATS DIALOG 12,0,125,78 -CAPTION "Statistics Box" +CAPTION "Statistiche" FONT 9, "Tahoma" STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE BEGIN diff --git a/reactos/base/applications/calc/Ja.rc b/reactos/base/applications/calc/lang/Ja.rc similarity index 100% rename from reactos/base/applications/calc/Ja.rc rename to reactos/base/applications/calc/lang/Ja.rc diff --git a/reactos/base/applications/calc/Nl.rc b/reactos/base/applications/calc/lang/Nl.rc similarity index 100% rename from reactos/base/applications/calc/Nl.rc rename to reactos/base/applications/calc/lang/Nl.rc diff --git a/reactos/base/applications/calc/lang/No.rc b/reactos/base/applications/calc/lang/No.rc new file mode 100644 index 00000000000..60bc66a6c46 --- /dev/null +++ b/reactos/base/applications/calc/lang/No.rc @@ -0,0 +1,155 @@ +/* + * WineCalc (En.rc) + * + * Copyright 2003 James Briggs + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windows.h" +#include "resource.h" +#include "winecalc.h" + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +STRINGTABLE DISCARDABLE +{ + IDS_APPNAME, "Kalkulator" + + IDS_COPYRIGHT1, "Kalkulator 5.0. Lisensert under LGPL 2" + IDS_COPYRIGHT2 "Copyright 2003, James Briggs" + IDS_COPYRIGHT3 "San Jose, California, USA" + IDS_COPYRIGHT4 "james@ActionMessage.com" + IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" + + IDS_BTN_BACKSPACE, "Tilbake" + IDS_BTN_CLEAR_ENTRY, "CE" + IDS_BTN_CLEAR_ALL, "C" + IDS_BTN_MEM_CLEAR, "MC" + IDS_BTN_MEM_RECALL, "MR" + IDS_BTN_MEM_STORE, "MS" + IDS_BTN_MEM_PLUS, "M+" + IDS_BTN_MEM_STATUS_M, "M" + IDS_BTN_SQRT, "sqrt" + IDS_ERR_INVALID_INPUT, "Ugyldig informasjon for funksjon." + IDS_ERR_DIVIDE_BY_ZERO, "Kan ikke dividere på null." + IDS_ERR_UNDEFINED, "Resultatet av funksjoner er ubestemt." +} + +MAIN_MENU MENU DISCARDABLE +{ + POPUP "&Rediger" { + MENUITEM "&Kopier Ctrl+C", IDM_COPY + MENUITEM "&Lim inn Ctrl+V", IDM_PASTE + } + POPUP "&Vis" { + MENUITEM "Standard", IDM_MODE_STANDARD + MENUITEM "Vitenskapelig", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING + } + POPUP "&Hjelp" { + MENUITEM "Emner i hjelp", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Om kalkulator", IDM_ABOUT + } +} + +SCIMS_MENU MENU DISCARDABLE +{ + POPUP "&Rediger" { + MENUITEM "&Kopiere Ctrl+C", IDM_COPY + MENUITEM "&Lim inn Ctrl+V", IDM_PASTE + } + POPUP "&Vis" { + MENUITEM "Standard", IDM_MODE_STANDARD + MENUITEM "Vitenskapelig", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Heksadesimalt\tF5", ID_CALC_NS_HEX + MENUITEM "Desimalt\tF6", ID_CALC_NS_DEC + MENUITEM "Oktalt\tF7", ID_CALC_NS_OCT + MENUITEM "Binært\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Grader\tF2", ID_CALC_MS_DEGREES + MENUITEM "Radianer\tF3", ID_CALC_MS_RADIANS + MENUITEM "Gradienter\tF4", ID_CALC_MS_GRADS + MENUITEM SEPARATOR + MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING + } + POPUP "&Hjelp" { + MENUITEM "Emner i hjelp", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Om Kalkulator", IDM_ABOUT + } +} + +SCIWS_MENU MENU DISCARDABLE +{ + POPUP "&Rediger" { + MENUITEM "&Kopier Ctrl+C", IDM_COPY + MENUITEM "&Lim inn Ctrl+V", IDM_PASTE + } + POPUP "&Vis" { + MENUITEM "Standard", IDM_MODE_STANDARD + MENUITEM "Vitenskapelig", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Heksadesimalt\tF5", ID_CALC_NS_HEX + MENUITEM "Desimal\tF6", ID_CALC_NS_DEC + MENUITEM "Oktalt\tF7", ID_CALC_NS_OCT + MENUITEM "Binært\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Qword\tF12", ID_CALC_WS_QWORD + MENUITEM "Dword\tF2", ID_CALC_WS_DWORD + MENUITEM "Word\tF3", ID_CALC_WS_WORD + MENUITEM "Byte\tF4", ID_CALC_WS_BYTE + MENUITEM SEPARATOR + MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING + } + POPUP "&Help" { + MENUITEM "Emner i hjelp", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Om Kalkulator", IDM_ABOUT + } +} + +MAIN_MENU ACCELERATORS +BEGIN + VK_F1, IDV_HELP, VIRTKEY +END + +DLG_ABOUT DIALOG 12,0,120,82 +CAPTION "Om GNU winecalc" +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +BEGIN + DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP +END + +WHATS_THIS_MENU MENU DISCARDABLE +{ + POPUP "" { + MENUITEM "Hva er dette?", IDM_WHATS_THIS + } +} + +DLG_STATS DIALOG 12,0,125,78 +CAPTION "Statistics Box" +FONT 9, "Tahoma" +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +BEGIN + DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP +END diff --git a/reactos/base/applications/calc/Pt.rc b/reactos/base/applications/calc/lang/Pt.rc similarity index 100% rename from reactos/base/applications/calc/Pt.rc rename to reactos/base/applications/calc/lang/Pt.rc diff --git a/reactos/base/applications/calc/Ru.rc b/reactos/base/applications/calc/lang/Ru.rc similarity index 100% rename from reactos/base/applications/calc/Ru.rc rename to reactos/base/applications/calc/lang/Ru.rc diff --git a/reactos/base/applications/calc/Sv.rc b/reactos/base/applications/calc/lang/Sv.rc similarity index 96% rename from reactos/base/applications/calc/Sv.rc rename to reactos/base/applications/calc/lang/Sv.rc index 2c53b2d310c..2974b099f36 100644 --- a/reactos/base/applications/calc/Sv.rc +++ b/reactos/base/applications/calc/lang/Sv.rc @@ -1,155 +1,155 @@ -/* - * WineCalc (En.rc) - * - * Copyright 2005 David Nordenberg - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "windows.h" -#include "resource.h" -#include "winecalc.h" - -LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL - -STRINGTABLE DISCARDABLE -{ - IDS_APPNAME, "Kalkylatorn" - - IDS_COPYRIGHT1, "Kalkylatorn 5.0. Licenserad under LGPL 2" - IDS_COPYRIGHT2 "Copyright 2003, James Briggs" - IDS_COPYRIGHT3 "San Jose, California, USA" - IDS_COPYRIGHT4 "james@ActionMessage.com" - IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" - - IDS_BTN_BACKSPACE, "Backsteg" - IDS_BTN_CLEAR_ENTRY, "CE" - IDS_BTN_CLEAR_ALL, "C" - IDS_BTN_MEM_CLEAR, "MC" - IDS_BTN_MEM_RECALL, "MR" - IDS_BTN_MEM_STORE, "MS" - IDS_BTN_MEM_PLUS, "M+" - IDS_BTN_MEM_STATUS_M, "M" - IDS_BTN_SQRT, "sqrt" - IDS_ERR_INVALID_INPUT, "Felaktig indata för funktion." - IDS_ERR_DIVIDE_BY_ZERO, "Kan inte dividera med noll." - IDS_ERR_UNDEFINED, "Funktionens resultat är odefinerat." -} - -MAIN_MENU MENU DISCARDABLE -{ - POPUP "&Redigera" { - MENUITEM "&Kopiera\tCtrl+C", IDM_COPY - MENUITEM "K&listra in\tCtrl+V", IDM_PASTE - } - POPUP "&Visa" { - MENUITEM "Standard", IDM_MODE_STANDARD - MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING - } - POPUP "&Hjälp" { - MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "Om Kalkylatorn", IDM_ABOUT - } -} - -SCIMS_MENU MENU DISCARDABLE -{ - POPUP "&Redigera" { - MENUITEM "&Kopiera\tCtrl+C", IDM_COPY - MENUITEM "K&listra in\tCtrl+V", IDM_PASTE - } - POPUP "&Visa" { - MENUITEM "Standard", IDM_MODE_STANDARD - MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Hex\tF5", ID_CALC_NS_HEX - MENUITEM "Decimal\tF6", ID_CALC_NS_DEC - MENUITEM "Oktal\tF7", ID_CALC_NS_OCT - MENUITEM "Binär\tF8", ID_CALC_NS_BIN - MENUITEM SEPARATOR - MENUITEM "Grader\tF2", ID_CALC_MS_DEGREES - MENUITEM "Radianer\tF3", ID_CALC_MS_RADIANS - MENUITEM "Gradienter\tF4", ID_CALC_MS_GRADS - MENUITEM SEPARATOR - MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING - } - POPUP "&Hjälp" { - MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "Om Kalkylatorn", IDM_ABOUT - } -} - -SCIWS_MENU MENU DISCARDABLE -{ - POPUP "&Redigera" { - MENUITEM "&Kopiera\tCtrl+C", IDM_COPY - MENUITEM "K&listra in\tCtrl+V", IDM_PASTE - } - POPUP "&Visa" { - MENUITEM "Standard", IDM_MODE_STANDARD - MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC - MENUITEM SEPARATOR - MENUITEM "Hex\tF5", ID_CALC_NS_HEX - MENUITEM "Decimal\tF6", ID_CALC_NS_DEC - MENUITEM "Oktal\tF7", ID_CALC_NS_OCT - MENUITEM "Binär\tF8", ID_CALC_NS_BIN - MENUITEM SEPARATOR - MENUITEM "Qword\tF12", ID_CALC_WS_QWORD - MENUITEM "Dword\tF2", ID_CALC_WS_DWORD - MENUITEM "Word\tF3", ID_CALC_WS_WORD - MENUITEM "Byte\tF4", ID_CALC_WS_BYTE - MENUITEM SEPARATOR - MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING - } - POPUP "&Hjälp" { - MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS - MENUITEM SEPARATOR - MENUITEM "Om Kalkylatorn", IDM_ABOUT - } -} - -MAIN_MENU ACCELERATORS -BEGIN - VK_F1, IDV_HELP, VIRTKEY -END - -DLG_ABOUT DIALOG 12,0,120,82 -CAPTION "Om GNU Kalkylatorn (winecalc)" -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -BEGIN - DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP -END - -WHATS_THIS_MENU MENU DISCARDABLE -{ - POPUP "" { - MENUITEM "Vad är det här?", IDM_WHATS_THIS - } -} - -DLG_STATS DIALOG 12,0,125,78 -CAPTION "Statistikruta" -FONT 9, "Tahoma" -STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE -BEGIN - DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP - PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP -END +/* + * WineCalc (En.rc) + * + * Copyright 2005 David Nordenberg + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "windows.h" +#include "resource.h" +#include "winecalc.h" + +LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL + +STRINGTABLE DISCARDABLE +{ + IDS_APPNAME, "Kalkylatorn" + + IDS_COPYRIGHT1, "Kalkylatorn 5.0. Licenserad under LGPL 2" + IDS_COPYRIGHT2 "Copyright 2003, James Briggs" + IDS_COPYRIGHT3 "San Jose, California, USA" + IDS_COPYRIGHT4 "james@ActionMessage.com" + IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/" + + IDS_BTN_BACKSPACE, "Backsteg" + IDS_BTN_CLEAR_ENTRY, "CE" + IDS_BTN_CLEAR_ALL, "C" + IDS_BTN_MEM_CLEAR, "MC" + IDS_BTN_MEM_RECALL, "MR" + IDS_BTN_MEM_STORE, "MS" + IDS_BTN_MEM_PLUS, "M+" + IDS_BTN_MEM_STATUS_M, "M" + IDS_BTN_SQRT, "sqrt" + IDS_ERR_INVALID_INPUT, "Felaktig indata för funktion." + IDS_ERR_DIVIDE_BY_ZERO, "Kan inte dividera med noll." + IDS_ERR_UNDEFINED, "Funktionens resultat är odefinerat." +} + +MAIN_MENU MENU DISCARDABLE +{ + POPUP "&Redigera" { + MENUITEM "&Kopiera\tCtrl+C", IDM_COPY + MENUITEM "K&listra in\tCtrl+V", IDM_PASTE + } + POPUP "&Visa" { + MENUITEM "Standard", IDM_MODE_STANDARD + MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING + } + POPUP "&Hjälp" { + MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Om Kalkylatorn", IDM_ABOUT + } +} + +SCIMS_MENU MENU DISCARDABLE +{ + POPUP "&Redigera" { + MENUITEM "&Kopiera\tCtrl+C", IDM_COPY + MENUITEM "K&listra in\tCtrl+V", IDM_PASTE + } + POPUP "&Visa" { + MENUITEM "Standard", IDM_MODE_STANDARD + MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Hex\tF5", ID_CALC_NS_HEX + MENUITEM "Decimal\tF6", ID_CALC_NS_DEC + MENUITEM "Oktal\tF7", ID_CALC_NS_OCT + MENUITEM "Binär\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Grader\tF2", ID_CALC_MS_DEGREES + MENUITEM "Radianer\tF3", ID_CALC_MS_RADIANS + MENUITEM "Gradienter\tF4", ID_CALC_MS_GRADS + MENUITEM SEPARATOR + MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING + } + POPUP "&Hjälp" { + MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Om Kalkylatorn", IDM_ABOUT + } +} + +SCIWS_MENU MENU DISCARDABLE +{ + POPUP "&Redigera" { + MENUITEM "&Kopiera\tCtrl+C", IDM_COPY + MENUITEM "K&listra in\tCtrl+V", IDM_PASTE + } + POPUP "&Visa" { + MENUITEM "Standard", IDM_MODE_STANDARD + MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC + MENUITEM SEPARATOR + MENUITEM "Hex\tF5", ID_CALC_NS_HEX + MENUITEM "Decimal\tF6", ID_CALC_NS_DEC + MENUITEM "Oktal\tF7", ID_CALC_NS_OCT + MENUITEM "Binär\tF8", ID_CALC_NS_BIN + MENUITEM SEPARATOR + MENUITEM "Qword\tF12", ID_CALC_WS_QWORD + MENUITEM "Dword\tF2", ID_CALC_WS_DWORD + MENUITEM "Word\tF3", ID_CALC_WS_WORD + MENUITEM "Byte\tF4", ID_CALC_WS_BYTE + MENUITEM SEPARATOR + MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING + } + POPUP "&Hjälp" { + MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "Om Kalkylatorn", IDM_ABOUT + } +} + +MAIN_MENU ACCELERATORS +BEGIN + VK_F1, IDV_HELP, VIRTKEY +END + +DLG_ABOUT DIALOG 12,0,120,82 +CAPTION "Om GNU Kalkylatorn (winecalc)" +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +BEGIN + DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP +END + +WHATS_THIS_MENU MENU DISCARDABLE +{ + POPUP "" { + MENUITEM "Vad är det här?", IDM_WHATS_THIS + } +} + +DLG_STATS DIALOG 12,0,125,78 +CAPTION "Statistikruta" +FONT 9, "Tahoma" +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +BEGIN + DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP + PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP +END diff --git a/reactos/base/applications/calc/Uk.rc b/reactos/base/applications/calc/lang/Uk.rc similarity index 100% rename from reactos/base/applications/calc/Uk.rc rename to reactos/base/applications/calc/lang/Uk.rc diff --git a/reactos/base/applications/calc/rsrc.rc b/reactos/base/applications/calc/rsrc.rc index 3838c8ef8df..45e2a73cebc 100644 --- a/reactos/base/applications/calc/rsrc.rc +++ b/reactos/base/applications/calc/rsrc.rc @@ -23,18 +23,20 @@ IDI_CALCICON ICON "calculator.ico" -#include "En.rc" -#include "Cz.rc" -#include "De.rc" -#include "Es.rc" -#include "Fr.rc" -#include "It.rc" -#include "Ja.rc" -#include "Nl.rc" -#include "Pt.rc" -#include "Ru.rc" -#include "Sv.rc" -#include "Hu.rc" -#include "Uk.rc" +#include "lang/En.rc" +#include "lang/Cz.rc" +#include "lang/De.rc" +#include "lang/Es.rc" +#include "lang/Fr.rc" +#include "lang/It.rc" +#include "lang/Ja.rc" +#include "lang/Nl.rc" +#include "lang/Pt.rc" +#include "lang/Ru.rc" +#include "lang/Sv.rc" +#include "lang/Hu.rc" +#include "lang/Uk.rc" +#include "lang/Gr.rc" +#include "lang/No.rc" LANGUAGE LANG_NEUTRAL,SUBLANG_NEUTRAL diff --git a/reactos/base/applications/cmdutils/cmdutils.rbuild b/reactos/base/applications/cmdutils/cmdutils.rbuild new file mode 100644 index 00000000000..9964af9635c --- /dev/null +++ b/reactos/base/applications/cmdutils/cmdutils.rbuild @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/reactos/base/applications/cmdutils/find/find.c b/reactos/base/applications/cmdutils/find/find.c new file mode 100644 index 00000000000..c779be71453 --- /dev/null +++ b/reactos/base/applications/cmdutils/find/find.c @@ -0,0 +1,248 @@ +/* find.c */ + +/* Copyright (C) 1994-2002, Jim Hall */ + +/* Adapted for ReactOS */ + +/* + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + + +/* This program locates a string in a text file and prints those lines + * that contain the string. Multiple files are clearly separated. + */ + +#include +#include +#include +#include + +#include +#include + + +/* Symbol definition */ +#define MAX_STR 1024 + + +/* This function prints out all lines containing a substring. There are some + * conditions that may be passed to the function. + * + * RETURN: If the string was found at least once, returns 1. + * If the string was not found at all, returns 0. + */ +int +find_str (char *sz, FILE *p, int invert_search, + int count_lines, int number_output, int ignore_case) +{ + int i, length; + long line_number = 0, total_lines = 0; + char *c, temp_str[MAX_STR], this_line[MAX_STR]; + + /* Convert to upper if needed */ + if (ignore_case) + { + length = strlen (sz); + for (i = 0; i < length; i++) + sz[i] = toupper (sz[i]); + } + + /* Scan the file until EOF */ + while (fgets (temp_str, MAX_STR, p) != NULL) + { + /* Remove the trailing newline */ + length = strlen (temp_str); + if (temp_str[length-1] == '\n') + { + temp_str[length-1] = '\0'; + } + + /* Increment number of lines */ + line_number++; + strcpy (this_line, temp_str); + + /* Convert to upper if needed */ + if (ignore_case) + { + for (i = 0; i < length; i++) + { + temp_str[i] = toupper (temp_str[i]); + } + } + + /* Locate the substring */ + + /* strstr() returns a pointer to the first occurrence in the + string of the substring */ + c = strstr (temp_str, sz); + + if ( ((invert_search) ? (c == NULL) : (c != NULL)) ) + { + if (!count_lines) + { + if (number_output) + printf ("%ld:", line_number); + + /* Print the line of text */ + puts (this_line); + } + + total_lines++; + } /* long if */ + } /* while fgets */ + + if (count_lines) + { + /* Just show num. lines that contain the string */ + printf ("%ld\n", total_lines); + } + + + /* RETURN: If the string was found at least once, returns 1. + * If the string was not found at all, returns 0. + */ + return (total_lines > 0 ? 1 : 0); +} + + +/* Show usage */ +void +usage (void) +{ + fprintf (stderr, "FIND: Prints all lines of a file that contain a string\n"); + fprintf (stderr, "FIND [ /C ] [ /I ] [ /N ] [ /V ] \"string\" [ file... ]\n"); + fprintf (stderr, " /C Count the number of lines that contain string\n"); + fprintf (stderr, " /I Ignore case\n"); + fprintf (stderr, " /N Number the displayed lines, starting at 1\n"); + fprintf (stderr, " /V Print lines that do not contain the string\n"); +} + + +/* Main program */ +int +main (int argc, char **argv) +{ + char *opt, *needle = NULL; + int ret = 0; + + int invert_search = 0; /* flag to invert the search */ + int count_lines = 0; /* flag to whether/not count lines */ + int number_output = 0; /* flag to print line numbers */ + int ignore_case = 0; /* flag to be case insensitive */ + + FILE *pfile; /* file pointer */ + int hfind; /* search handle */ + struct _finddata_t finddata; /* _findfirst, filenext block */ + + /* Scan the command line */ + while ((--argc) && (needle == NULL)) + { + if (*(opt = *++argv) == '/') + { + switch (opt[1]) + { + case 'c': + case 'C': /* Count */ + count_lines = 1; + break; + + case 'i': + case 'I': /* Ignore */ + ignore_case = 1; + break; + + case 'n': + case 'N': /* Number */ + number_output = 1; + break; + + case 'v': + case 'V': /* Not with */ + invert_search = 1; + break; + + default: + usage (); + exit (2); /* syntax error .. return error 2 */ + break; + } + } + else + { + /* Get the string */ + if (needle == NULL) + { + /* Assign the string to find */ + needle = *argv; + } + } + } + + /* Check for search string */ + if (needle == NULL) + { + /* No string? */ + usage (); + exit (1); + } + + /* Scan the files for the string */ + if (argc == 0) + { + ret = find_str (needle, stdin, invert_search, count_lines, + number_output, ignore_case); + } + + while (--argc >= 0) + { + hfind = _findfirst (*++argv, &finddata); + if (hfind < 0) + { + /* We were not able to find a file. Display a message and + set the exit status. */ + fprintf (stderr, "FIND: %s: No such file\n", *argv); + } + else + { + /* repeat find next file to match the filemask */ + do + { + /* We have found a file, so try to open it */ + if ((pfile = fopen (finddata.name, "r")) != NULL) + { + printf ("---------------- %s\n", finddata.name); + ret = find_str (needle, pfile, invert_search, count_lines, + number_output, ignore_case); + fclose (pfile); + } + else + { + fprintf (stderr, "FIND: %s: Cannot open file\n", + finddata.name); + } + } + while (_findnext(hfind, &finddata) > 0); + } + _findclose(hfind); + } /* for each argv */ + + /* RETURN: If the string was found at least once, returns 0. + * If the string was not found at all, returns 1. + * (Note that find_str.c returns the exact opposite values.) + */ + exit ( (ret ? 0 : 1) ); +} + diff --git a/reactos/base/applications/cmdutils/find/find.rbuild b/reactos/base/applications/cmdutils/find/find.rbuild new file mode 100644 index 00000000000..aaaa2899961 --- /dev/null +++ b/reactos/base/applications/cmdutils/find/find.rbuild @@ -0,0 +1,8 @@ + + + 0x0501 + 0x0501 + kernel32 + find.c + find.rc + diff --git a/reactos/base/applications/cmdutils/find/find.rc b/reactos/base/applications/cmdutils/find/find.rc new file mode 100644 index 00000000000..b5dd91d8136 --- /dev/null +++ b/reactos/base/applications/cmdutils/find/find.rc @@ -0,0 +1,6 @@ +/* $Id$ */ + +#define REACTOS_STR_FILE_DESCRIPTION "W32 find command\0" +#define REACTOS_STR_INTERNAL_NAME "find\0" +#define REACTOS_STR_ORIGINAL_FILENAME "find.exe\0" +#include diff --git a/reactos/base/applications/cmdutils/more/more.c b/reactos/base/applications/cmdutils/more/more.c new file mode 100644 index 00000000000..2ebf669aec1 --- /dev/null +++ b/reactos/base/applications/cmdutils/more/more.c @@ -0,0 +1,168 @@ +/* + * MORE.C - external command. + * + * clone from 4nt more command + * + * 26 Sep 1999 - Paolo Pantaleo + * started + * Oct 2003 - Timothy Schepens + * use window size instead of buffer size. + */ + +#include +#include +#include + + +DWORD len; +LPTSTR msg = _T("--- continue ---"); + + +/*handle for file and console*/ +HANDLE hStdIn; +HANDLE hStdOut; +HANDLE hStdErr; +HANDLE hKeyboard; + + +static VOID +GetScreenSize (PSHORT maxx, PSHORT maxy) +{ + CONSOLE_SCREEN_BUFFER_INFO csbi; + + GetConsoleScreenBufferInfo (hStdOut, &csbi); + *maxx = (csbi.srWindow.Right - csbi.srWindow.Left) + 1; + *maxy = (csbi.srWindow.Bottom - csbi.srWindow.Top) - 4; + +} + + +static +VOID ConOutPuts (LPTSTR szText) +{ + DWORD dwWritten; + + WriteFile (GetStdHandle (STD_OUTPUT_HANDLE), szText, _tcslen(szText), &dwWritten, NULL); + WriteFile (GetStdHandle (STD_OUTPUT_HANDLE), "\n", 1, &dwWritten, NULL); +} + + +static VOID +ConInKey (VOID) +{ + INPUT_RECORD ir; + DWORD dwRead; + + do + { + ReadConsoleInput (hKeyboard, &ir, 1, &dwRead); + if ((ir.EventType == KEY_EVENT) && + (ir.Event.KeyEvent.bKeyDown == TRUE)) + return; + } + while (TRUE); +} + + +static VOID +WaitForKey (VOID) +{ + DWORD dwWritten; + + WriteFile (hStdErr,msg , len, &dwWritten, NULL); + + ConInKey(); + + WriteFile (hStdErr, _T("\n"), 1, &dwWritten, NULL); + +// FlushConsoleInputBuffer (hConsoleIn); +} + + +//INT CommandMore (LPTSTR cmd, LPTSTR param) +int main (int argc, char **argv) +{ + SHORT maxx,maxy; + SHORT line_count=0,ch_count=0; + INT i, last; + HANDLE hFile = INVALID_HANDLE_VALUE; + TCHAR szFullPath[MAX_PATH]; + + /*reading/writing buffer*/ + TCHAR *buff; + + /*bytes written by WriteFile and ReadFile*/ + DWORD dwRead,dwWritten; + + /*ReadFile() return value*/ + BOOL bRet; + + len = _tcslen (msg); + hStdIn = GetStdHandle(STD_INPUT_HANDLE); + hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); + hStdErr = GetStdHandle(STD_ERROR_HANDLE); + + if (argc > 1 && _tcsncmp (argv[1], _T("/?"), 2) == 0) + { + ConOutPuts(_T("Help text still missing!!")); + return 0; + } + + hKeyboard = CreateFile (_T("CONIN$"), GENERIC_READ, + 0,NULL,OPEN_ALWAYS,0,0); + + GetScreenSize(&maxx,&maxy); + + buff=malloc(4096); + + FlushConsoleInputBuffer (hKeyboard); + + if(argc > 1) + { + GetFullPathName(argv[1], MAX_PATH, szFullPath, NULL); + hFile = CreateFile (szFullPath, GENERIC_READ, + 0,NULL,OPEN_ALWAYS,0,0); + } + + do + { + if(hFile != INVALID_HANDLE_VALUE) + { + bRet = ReadFile(hFile,buff,4096,&dwRead,NULL); + } + else + { + bRet = ReadFile(hStdIn,buff,4096,&dwRead,NULL); + } + + for(last=i=0;i0 && bRet); + + free (buff); + CloseHandle (hKeyboard); + CloseHandle (hFile); + + return 0; +} + +/* EOF */ diff --git a/reactos/base/applications/cmdutils/more/more.rbuild b/reactos/base/applications/cmdutils/more/more.rbuild new file mode 100644 index 00000000000..7f28c47dd55 --- /dev/null +++ b/reactos/base/applications/cmdutils/more/more.rbuild @@ -0,0 +1,8 @@ + + + 0x0501 + 0x0501 + kernel32 + more.c + more.rc + diff --git a/reactos/base/applications/cmdutils/more/more.rc b/reactos/base/applications/cmdutils/more/more.rc new file mode 100644 index 00000000000..e1741c20501 --- /dev/null +++ b/reactos/base/applications/cmdutils/more/more.rc @@ -0,0 +1,6 @@ +/* $Id$ */ + +#define REACTOS_STR_FILE_DESCRIPTION "W32 more command\0" +#define REACTOS_STR_INTERNAL_NAME "more\0" +#define REACTOS_STR_ORIGINAL_FILENAME "more.exe\0" +#include diff --git a/reactos/base/applications/control/control.rc b/reactos/base/applications/control/control.rc index 1c6b9ff3830..84039e7e76b 100644 --- a/reactos/base/applications/control/control.rc +++ b/reactos/base/applications/control/control.rc @@ -25,23 +25,4 @@ IDI_MAINICON ICON DISCARDABLE "resources/config.ico" ///////////////////////////////////////////////////////////////////////////// -/* - * Everything specific to any language goes in one of the specific - * files. Note that you can and may override resources which also have - * a neutral version. This is to get localized bitmaps for example. - */ - -#include "En.rc" -#include "Cz.rc" -#include "De.rc" -#include "Dk.rc" -#include "Gr.rc" -#include "Ja.rc" -#include "Nl.rc" -#include "Pl.rc" -#include "Ru.rc" -#include "Sv.rc" -#include "Es.rc" -#include "Hu.rc" -#include "Fi.rc" - +#include "rsrc.rc" diff --git a/reactos/base/applications/control/Cz.rc b/reactos/base/applications/control/lang/Cz.rc similarity index 100% rename from reactos/base/applications/control/Cz.rc rename to reactos/base/applications/control/lang/Cz.rc diff --git a/reactos/base/applications/control/De.rc b/reactos/base/applications/control/lang/De.rc similarity index 100% rename from reactos/base/applications/control/De.rc rename to reactos/base/applications/control/lang/De.rc diff --git a/reactos/base/applications/control/Dk.rc b/reactos/base/applications/control/lang/Dk.rc similarity index 94% rename from reactos/base/applications/control/Dk.rc rename to reactos/base/applications/control/lang/Dk.rc index b129c18647d..808c955e36e 100644 --- a/reactos/base/applications/control/Dk.rc +++ b/reactos/base/applications/control/lang/Dk.rc @@ -1,6 +1,6 @@ // Danish language resource file (Thomas Larsen, 2005-03-11) -LANGUAGE LANG_DANISH, SUBLANG_NEUTRAL +LANGUAGE LANG_DANISH, SUBLANG_DEFAULT ///////////////////////////////////////////////////////////////////////////// // diff --git a/reactos/base/applications/control/En.rc b/reactos/base/applications/control/lang/En.rc similarity index 100% rename from reactos/base/applications/control/En.rc rename to reactos/base/applications/control/lang/En.rc diff --git a/reactos/base/applications/control/Es.rc b/reactos/base/applications/control/lang/Es.rc similarity index 100% rename from reactos/base/applications/control/Es.rc rename to reactos/base/applications/control/lang/Es.rc diff --git a/reactos/base/applications/control/Fi.rc b/reactos/base/applications/control/lang/Fi.rc similarity index 94% rename from reactos/base/applications/control/Fi.rc rename to reactos/base/applications/control/lang/Fi.rc index 6483970677b..623086d6187 100644 --- a/reactos/base/applications/control/Fi.rc +++ b/reactos/base/applications/control/lang/Fi.rc @@ -1,6 +1,6 @@ // English language resource file (frik85, 2005-03-08) -LANGUAGE LANG_FINNISH, SUBLANG_NEUTRAL +LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT ///////////////////////////////////////////////////////////////////////////// // diff --git a/reactos/base/applications/control/Gr.rc b/reactos/base/applications/control/lang/Gr.rc similarity index 100% rename from reactos/base/applications/control/Gr.rc rename to reactos/base/applications/control/lang/Gr.rc diff --git a/reactos/base/applications/control/Hu.rc b/reactos/base/applications/control/lang/Hu.rc similarity index 90% rename from reactos/base/applications/control/Hu.rc rename to reactos/base/applications/control/lang/Hu.rc index f177a57a430..2c391dbc42c 100644 --- a/reactos/base/applications/control/Hu.rc +++ b/reactos/base/applications/control/lang/Hu.rc @@ -1,6 +1,6 @@ // Hungarian language resource file (talley, 2005-10-12) -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT ///////////////////////////////////////////////////////////////////////////// // diff --git a/reactos/base/applications/control/Ja.rc b/reactos/base/applications/control/lang/Ja.rc similarity index 100% rename from reactos/base/applications/control/Ja.rc rename to reactos/base/applications/control/lang/Ja.rc diff --git a/reactos/base/applications/control/Nl.rc b/reactos/base/applications/control/lang/Nl.rc similarity index 100% rename from reactos/base/applications/control/Nl.rc rename to reactos/base/applications/control/lang/Nl.rc diff --git a/reactos/base/applications/control/lang/No.rc b/reactos/base/applications/control/lang/No.rc new file mode 100644 index 00000000000..f6234a185cc --- /dev/null +++ b/reactos/base/applications/control/lang/No.rc @@ -0,0 +1,33 @@ +/* + * PROJECT: ReactOS Control Application + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/control/No.rc + * PURPOSE: Norwegian translation + * TRANSLATOR: LMH1 + * + */ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDM_MAINMENU MENU DISCARDABLE +BEGIN + POPUP "&Fil" + BEGIN + MENUITEM "&Avslutt", IDM_CLOSE + END + POPUP "&Vis" + BEGIN + MENUITEM "Større Ikoner", IDM_LARGEICONS + MENUITEM "Mindre Ikoner", IDM_SMALLICONS + MENUITEM "Liste", IDM_LIST + MENUITEM "Detaljer", IDM_DETAILS + END + POPUP "Hjelp" + BEGIN + MENUITEM "Om", IDM_ABOUT + END +END diff --git a/reactos/base/applications/control/Pl.rc b/reactos/base/applications/control/lang/Pl.rc similarity index 94% rename from reactos/base/applications/control/Pl.rc rename to reactos/base/applications/control/lang/Pl.rc index 45792e63ea2..181e9f0ad0e 100644 --- a/reactos/base/applications/control/Pl.rc +++ b/reactos/base/applications/control/lang/Pl.rc @@ -1,6 +1,6 @@ // Polish language resource file (Sebastian Gasiorek, 2005-07-06) -LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT ///////////////////////////////////////////////////////////////////////////// // diff --git a/reactos/base/applications/control/Ru.rc b/reactos/base/applications/control/lang/Ru.rc similarity index 94% rename from reactos/base/applications/control/Ru.rc rename to reactos/base/applications/control/lang/Ru.rc index 1af847d45ce..78c5690215b 100644 --- a/reactos/base/applications/control/Ru.rc +++ b/reactos/base/applications/control/lang/Ru.rc @@ -1,6 +1,6 @@ // Russian language resource file (unC0Rr, 2005-03-11) -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT ///////////////////////////////////////////////////////////////////////////// // diff --git a/reactos/base/applications/control/Sv.rc b/reactos/base/applications/control/lang/Sv.rc similarity index 100% rename from reactos/base/applications/control/Sv.rc rename to reactos/base/applications/control/lang/Sv.rc diff --git a/reactos/base/applications/control/lang/Uk.rc b/reactos/base/applications/control/lang/Uk.rc new file mode 100644 index 00000000000..2fdfe730932 --- /dev/null +++ b/reactos/base/applications/control/lang/Uk.rc @@ -0,0 +1,34 @@ +/* + * PROJECT: ReactOS System Control Panel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/control/Uk.rc + * PURPOSE: Ukraianian Language File for ReactOS System Control Panel + * PROGRAMMERS: temarez + */ + +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDM_MAINMENU MENU DISCARDABLE +BEGIN + POPUP "&Ôàéë" + BEGIN + MENUITEM "&Çàêðèòè", IDM_CLOSE + END + POPUP "&Âèãëÿä" + BEGIN + MENUITEM "&Âåëèê³ ²êîíêè", IDM_LARGEICONS + MENUITEM "&Ìàë³ ²êîíêè", IDM_SMALLICONS + MENUITEM "&Ñïèñîê", IDM_LIST + MENUITEM "&Ïîäðîáèö³", IDM_DETAILS + END + POPUP "&Äîâ³äêà" + BEGIN + MENUITEM "&Ïðî ïðîãðàìó", IDM_ABOUT + END +END + diff --git a/reactos/base/applications/control/rsrc.rc b/reactos/base/applications/control/rsrc.rc new file mode 100644 index 00000000000..871c65577a7 --- /dev/null +++ b/reactos/base/applications/control/rsrc.rc @@ -0,0 +1,27 @@ + + +#include +#include "resource.h" + +/* define language neutral resources */ + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +/* include localised resources */ +#include "lang/Cz.rc" +#include "lang/De.rc" +#include "lang/Dk.rc" +#include "lang/En.rc" +#include "lang/Es.rc" +#include "lang/Fi.rc" +#include "lang/Gr.rc" +#include "lang/Hu.rc" +#include "lang/Ja.rc" +#include "lang/Nl.rc" +#include "lang/No.rc" +#include "lang/Pl.rc" +#include "lang/Ru.rc" +#include "lang/Sv.rc" +#include "lang/Uk.rc" + + diff --git a/reactos/base/applications/devmgmt/En.rc b/reactos/base/applications/devmgmt/En.rc new file mode 100644 index 00000000000..9016db75c4e --- /dev/null +++ b/reactos/base/applications/devmgmt/En.rc @@ -0,0 +1,79 @@ +IDR_MAINMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "E&xit", IDC_EXIT + END + POPUP "Action" + BEGIN + MENUITEM "Print", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Properties", IDC_PROP + MENUITEM SEPARATOR + MENUITEM "Help", IDC_PROGHELP, GRAYED + END + POPUP "View" + BEGIN + MENUITEM "Devices by type", IDC_DEVBYTYPE, CHECKED + MENUITEM "Devices by connection", IDC_STATIC, GRAYED + MENUITEM "Resources by type", IDC_STATIC, GRAYED + MENUITEM "Resources by connection", IDC_STATIC, GRAYED + END + POPUP "Help" + BEGIN + MENUITEM "Help", IDC_PROGHELP + MENUITEM "About", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Properties", IDC_PROP + MENUITEM SEPARATOR + MENUITEM "Help", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "About Device Manager" +FONT 8,"Tahoma",0,0 +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Device Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Properties" + IDS_TOOLTIP_REFRESH "Refresh" + IDS_TOOLTIP_HELP "Help" + IDS_TOOLTIP_EXIT "Exit" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Exits the program." + IDS_HINT_REFRESH " Refresh the service list." + IDS_HINT_PROP " Open property sheet for the current selection." + IDS_HINT_HELP " Display help window." + IDS_HINT_ABOUT " About ReactOS Device Manager." + + IDS_HINT_SYS_RESTORE " Restores this window to normal size." + IDS_HINT_SYS_MOVE " Moves this window." + IDS_HINT_SYS_SIZE " Resizes this window." + IDS_HINT_SYS_MINIMIZE " Collapses this window to an icon." + IDS_HINT_SYS_MAXIMIZE " Expands this window to fill this screen." + IDS_HINT_SYS_CLOSE " Closes this window." +END diff --git a/reactos/base/applications/devmgmt/about.c b/reactos/base/applications/devmgmt/about.c new file mode 100644 index 00000000000..1e798a785bd --- /dev/null +++ b/reactos/base/applications/devmgmt/about.c @@ -0,0 +1,62 @@ +/* + * PROJECT: ReactOS Device Managment + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/devmgmt/about.c + * PURPOSE: About dialog box message handler + * COPYRIGHT: Copyright 2006 Ged Murphy + * + */ + +#include "precomp.h" + +BOOL CALLBACK +AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + HWND hLicenseEditWnd; + HICON hIcon = NULL; + TCHAR strLicense[700]; + + switch (message) + { + case WM_INITDIALOG: + + hIcon = LoadImage(hInstance, + MAKEINTRESOURCE(IDI_MAIN_ICON), + IMAGE_ICON, + 16, + 16, + 0); + + SendMessage(hDlg, + WM_SETICON, + ICON_SMALL, + (LPARAM)hIcon); + + hLicenseEditWnd = GetDlgItem(hDlg, + IDC_LICENSE_EDIT); + + LoadString(hInstance, + IDS_LICENSE, + strLicense, + sizeof(strLicense) / sizeof(TCHAR)); + + SetWindowText(hLicenseEditWnd, + strLicense); + + return TRUE; + + case WM_COMMAND: + + if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL)) + { + DestroyIcon(hIcon); + EndDialog(hDlg, + LOWORD(wParam)); + return TRUE; + } + + break; + } + + return FALSE; +} diff --git a/reactos/base/applications/devmgmt/devmgmt.c b/reactos/base/applications/devmgmt/devmgmt.c new file mode 100644 index 00000000000..678e4baddad --- /dev/null +++ b/reactos/base/applications/devmgmt/devmgmt.c @@ -0,0 +1,70 @@ +/* + * PROJECT: ReactOS Device Managment + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/devmgmt/devmgmt.c + * PURPOSE: Program HQ + * COPYRIGHT: Copyright 2006 Ged Murphy + * + */ + +#include "precomp.h" + +HINSTANCE hInstance; +HANDLE ProcessHeap; + +int WINAPI +WinMain(HINSTANCE hThisInstance, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nCmdShow) +{ + LPTSTR lpAppName; + HWND hMainWnd; + MSG Msg; + int Ret = 1; + INITCOMMONCONTROLSEX icex; + + hInstance = hThisInstance; + ProcessHeap = GetProcessHeap(); + + icex.dwSize = sizeof(INITCOMMONCONTROLSEX); + icex.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES; + InitCommonControlsEx(&icex); + + if (!AllocAndLoadString(&lpAppName, + hInstance, + IDS_APPNAME)) + { + return 1; + } + +// FreeConsole(); +// AllocConsole(); + + if (InitMainWindowImpl()) + { + hMainWnd = CreateMainWindow(lpAppName, + nCmdShow); + if (hMainWnd != NULL) + { + /* pump the message queue */ + while( GetMessage( &Msg, NULL, 0, 0 ) ) + { + TranslateMessage(&Msg); + DispatchMessage(&Msg); + + } + + Ret = 0; + } + + UninitMainWindowImpl(); + } + + LocalFree((HLOCAL)lpAppName); + + return Ret; +} + + + diff --git a/reactos/base/applications/devmgmt/devmgmt.rbuild b/reactos/base/applications/devmgmt/devmgmt.rbuild new file mode 100644 index 00000000000..4c41615c3ca --- /dev/null +++ b/reactos/base/applications/devmgmt/devmgmt.rbuild @@ -0,0 +1,29 @@ + + + + . + + + + + 0x600 + 0x501 + ntdll + setupapi + gdi32 + kernel32 + user32 + comctl32 + advapi32 + devmgr + + about.c + devmgmt.c + enumdevices.c + mainwnd.c + misc.c + + devmgmt.rc + precomp.h + + diff --git a/reactos/base/applications/devmgmt/devmgmt.rc b/reactos/base/applications/devmgmt/devmgmt.rc new file mode 100644 index 00000000000..9821767f69c --- /dev/null +++ b/reactos/base/applications/devmgmt/devmgmt.rc @@ -0,0 +1,29 @@ +#include +#include +#include "resource.h" + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Device Manager\0" +#define REACTOS_STR_INTERNAL_NAME "devmgmt\0" +#define REACTOS_STR_ORIGINAL_FILENAME "devmgmt.exe\0" +#include + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +1 24 DISCARDABLE "manifest.xml" + +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS Device Manager" +END + +IDI_MAIN_ICON ICON "res/computer.ico" +IDB_ROOT_IMAGE BITMAP "res/root.bmp" + +/* main toolbar icons */ +IDB_PROP BITMAP DISCARDABLE "res/properties.bmp" +IDB_REFRESH BITMAP DISCARDABLE "res/refresh.bmp" +IDB_HELP BITMAP DISCARDABLE "res/help.bmp" +IDB_EXIT BITMAP DISCARDABLE "res/exit.bmp" + + +#include "En.rc" diff --git a/reactos/base/applications/devmgmt/enumdevices.c b/reactos/base/applications/devmgmt/enumdevices.c new file mode 100644 index 00000000000..2a22d0ed6e1 --- /dev/null +++ b/reactos/base/applications/devmgmt/enumdevices.c @@ -0,0 +1,438 @@ +/* + * PROJECT: ReactOS Device Managment + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/devmgmt/enumdevices.c + * PURPOSE: Enumerates all devices on the local machine + * COPYRIGHT: Copyright 2006 Ged Murphy + * + */ + +#include "precomp.h" + +static SP_CLASSIMAGELIST_DATA ImageListData; +static HDEVINFO hDevInfo; + +VOID +FreeDeviceStrings(HWND hTV) +{ + HTREEITEM hItem; + + hItem = TreeView_GetRoot(hTV); + + if (hItem) + { + hItem = TreeView_GetChild(hTV, + hItem); + /* loop the parent items */ + while (hItem) + { + hItem = TreeView_GetChild(hTV, + hItem); + if (hItem == NULL) + break; + + /* loop the child items and free the DeviceID */ + while (TRUE) + { + HTREEITEM hOldItem; + TV_ITEM tvItem; + //TCHAR Buf[100]; + + tvItem.hItem = hItem; + tvItem.mask = TVIF_PARAM;// | TVIF_TEXT; + //tvItem.pszText = Buf; + //tvItem.cchTextMax = 99; + + (void)TreeView_GetItem(hTV, &tvItem); + + //MessageBox(NULL, Buf, NULL, 0); + + HeapFree(GetProcessHeap(), + 0, + (LPTSTR)tvItem.lParam); + + hOldItem = hItem; + + hItem = TreeView_GetNextSibling(hTV, + hItem); + if (hItem == NULL) + { + hItem = hOldItem; + break; + } + } + + hItem = TreeView_GetParent(hTV, + hItem); + hItem = TreeView_GetNextSibling(hTV, + hItem); + } + } +} + + +VOID +OpenPropSheet(HWND hTV, + HTREEITEM hItem) +{ + TV_ITEM tvItem; + + tvItem.hItem = hItem; + tvItem.mask = TVIF_PARAM; + + if (TreeView_GetItem(hTV, &tvItem) && + (LPTSTR)tvItem.lParam != NULL) + { + DevicePropertiesExW(hTV, + NULL, + (LPTSTR)tvItem.lParam, + 0, + FALSE); + } + +} + + +static HTREEITEM +InsertIntoTreeView(HWND hTV, + HTREEITEM hRoot, + LPTSTR lpLabel, + LPTSTR DeviceID, + INT DevImage) +{ + TV_ITEM tvi; + TV_INSERTSTRUCT tvins; + + ZeroMemory(&tvi, sizeof(tvi)); + ZeroMemory(&tvins, sizeof(tvins)); + + tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE; + tvi.pszText = lpLabel; + tvi.cchTextMax = lstrlen(lpLabel); + tvi.lParam = (LPARAM)DeviceID; + tvi.iImage = DevImage; + tvi.iSelectedImage = DevImage; + + tvins.item = tvi; + tvins.hParent = hRoot; + + return TreeView_InsertItem(hTV, &tvins); +} + + +static INT +EnumDeviceClasses(INT ClassIndex, + LPTSTR DevClassName, + LPTSTR DevClassDesc, + BOOL *DevPresent, + INT *ClassImage) +{ + GUID ClassGuid; + HKEY KeyClass; + TCHAR ClassName[MAX_CLASS_NAME_LEN]; + DWORD RequiredSize = MAX_CLASS_NAME_LEN; + UINT Ret; + + *DevPresent = FALSE; + *DevClassName = _T('\0'); + + Ret = CM_Enumerate_Classes(ClassIndex, + &ClassGuid, + 0); + if (Ret != CR_SUCCESS) + { + /* all classes enumerated */ + if(Ret == CR_NO_SUCH_VALUE) + { + hDevInfo = NULL; + return -1; + } + + if (Ret == CR_INVALID_DATA) + ; /*FIXME: what should we do here? */ + + /* handle other errors... */ + } + + if (SetupDiClassNameFromGuid(&ClassGuid, + ClassName, + RequiredSize, + &RequiredSize)) + { + lstrcpy(DevClassName, ClassName); + } + + if (!SetupDiGetClassImageIndex(&ImageListData, + &ClassGuid, + ClassImage)) + { + /* FIXME: can we do this? + * Set the blank icon: IDI_SETUPAPI_BLANK = 41 + * it'll be image 24 in the imagelist */ + *ClassImage = 24; + } + + /* Get device info for all devices of a particular class */ + hDevInfo = SetupDiGetClassDevs(&ClassGuid, + NULL, + NULL, + DIGCF_PRESENT); + if (hDevInfo == INVALID_HANDLE_VALUE) + { + hDevInfo = NULL; + return 0; + } + + KeyClass = SetupDiOpenClassRegKeyEx(&ClassGuid, + MAXIMUM_ALLOWED, + DIOCR_INSTALLER, + NULL, + 0); + if (KeyClass != INVALID_HANDLE_VALUE) + { + + LONG dwSize = MAX_DEV_LEN; + + if (RegQueryValue(KeyClass, + NULL, + DevClassDesc, + &dwSize) != ERROR_SUCCESS) + { + *DevClassDesc = _T('\0'); + } + } + else + { + return -3; + } + + *DevPresent = TRUE; + + RegCloseKey(KeyClass); + + return 0; +} + + +static INT +EnumDevices(INT index, + LPTSTR DeviceClassName, + LPTSTR DeviceName, + LPTSTR *DeviceID) +{ + SP_DEVINFO_DATA DeviceInfoData; + DWORD DevIdSize; + + *DeviceName = _T('\0'); + *DeviceID = NULL; + + ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA)); + DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); + + if (!SetupDiEnumDeviceInfo(hDevInfo, + index, + &DeviceInfoData)) + { + /* no such device */ + return -1; + } + + /* get the device ID */ + if (!SetupDiGetDeviceInstanceId(hDevInfo, + &DeviceInfoData, + NULL, + 0, + &DevIdSize)) + { + if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) + { + (*DeviceID) = (LPTSTR)HeapAlloc(GetProcessHeap(), + 0, + DevIdSize * sizeof(TCHAR)); + if (*DeviceID) + { + if (!SetupDiGetDeviceInstanceId(hDevInfo, + &DeviceInfoData, + *DeviceID, + DevIdSize, + NULL)) + { + HeapFree(GetProcessHeap(), + 0, + *DeviceID); + *DeviceID = NULL; + } + } + } + } + + /* get the device's friendly name */ + if (!SetupDiGetDeviceRegistryProperty(hDevInfo, + &DeviceInfoData, + SPDRP_FRIENDLYNAME, + 0, + (BYTE*)DeviceName, + MAX_DEV_LEN, + NULL)) + { + /* if the friendly name fails, try the description instead */ + if (!SetupDiGetDeviceRegistryProperty(hDevInfo, + &DeviceInfoData, + SPDRP_DEVICEDESC, + 0, + (BYTE*)DeviceName, + MAX_DEV_LEN, + NULL)) + { + /* if the description fails, just give up! */ + return -2; + } + } + + return 0; +} + + +VOID +ListDevicesByType(PMAIN_WND_INFO Info, + HTREEITEM hRoot) +{ + HTREEITEM hDevItem; + TCHAR DevName[MAX_DEV_LEN]; + TCHAR DevDesc[MAX_DEV_LEN]; + LPTSTR DeviceID = NULL; + BOOL DevExist = FALSE; + INT ClassRet; + INT index = 0; + INT DevImage; + + do + { + ClassRet = EnumDeviceClasses(index, + DevName, + DevDesc, + &DevExist, + &DevImage); + + if ((ClassRet != -1) && (DevExist)) + { + TCHAR DeviceName[MAX_DEV_LEN]; + INT Ret, DevIndex = 0; + + if (DevDesc[0] != _T('\0')) + { + hDevItem = InsertIntoTreeView(Info->hTreeView, + hRoot, + DevDesc, + NULL, + DevImage); + } + else + { + hDevItem = InsertIntoTreeView(Info->hTreeView, + hRoot, + DevName, + NULL, + DevImage); + } + + do + { + Ret = EnumDevices(DevIndex, + DevName, + DeviceName, + &DeviceID); + if (Ret == 0) + { + InsertIntoTreeView(Info->hTreeView, + hDevItem, + DeviceName, + DeviceID, + DevImage); + } + + DevIndex++; + + } while (Ret != -1); + + /* kill InfoList initialized in EnumDeviceClasses */ + if (hDevInfo) + { + SetupDiDestroyDeviceInfoList(hDevInfo); + hDevInfo = NULL; + } + + /* don't insert classes with no devices */ + if (!TreeView_GetChild(Info->hTreeView, + hDevItem)) + { + (void)TreeView_DeleteItem(Info->hTreeView, + hDevItem); + } + else + { + (void)TreeView_SortChildren(Info->hTreeView, + hDevItem, + 0); + } + } + + index++; + + } while (ClassRet != -1); + + (void)TreeView_Expand(Info->hTreeView, + hRoot, + TVE_EXPAND); + + (void)TreeView_SortChildren(Info->hTreeView, + hRoot, + 0); +} + + +HTREEITEM +InitTreeView(PMAIN_WND_INFO Info) +{ + HTREEITEM hRoot; + HBITMAP hComp; + TCHAR ComputerName[MAX_PATH]; + DWORD dwSize = MAX_PATH; + INT RootImage; + + (void)TreeView_DeleteAllItems(Info->hTreeView); + + /* get the device image List */ + ImageListData.cbSize = sizeof(ImageListData); + SetupDiGetClassImageList(&ImageListData); + + hComp = LoadBitmap(hInstance, + MAKEINTRESOURCE(IDB_ROOT_IMAGE)); + + ImageList_Add(ImageListData.ImageList, + hComp, + NULL); + + DeleteObject(hComp); + + (void)TreeView_SetImageList(Info->hTreeView, + ImageListData.ImageList, + TVSIL_NORMAL); + + if (!GetComputerName(ComputerName, + &dwSize)) + { + ComputerName[0] = _T('\0'); + } + + RootImage = ImageList_GetImageCount(ImageListData.ImageList) - 1; + + /* insert the root item into the tree */ + hRoot = InsertIntoTreeView(Info->hTreeView, + NULL, + ComputerName, + NULL, + RootImage); + + return hRoot; +} diff --git a/reactos/base/applications/devmgmt/mainwnd.c b/reactos/base/applications/devmgmt/mainwnd.c new file mode 100644 index 00000000000..218a98f5d11 --- /dev/null +++ b/reactos/base/applications/devmgmt/mainwnd.c @@ -0,0 +1,641 @@ +/* + * PROJECT: ReactOS Device Managment + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/devmgmt/mainwnd.c + * PURPOSE: Main window message handler + * COPYRIGHT: Copyright 2006 Ged Murphy + * + */ + +#include "precomp.h" + +static const TCHAR szMainWndClass[] = TEXT("DevMgmtWndClass"); + + +/* Toolbar buttons */ +TBBUTTON Buttons [] = +{ /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */ + {TBICON_PROP, IDC_PROP, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* properties */ + {TBICON_REFRESH, IDC_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* refresh */ + + /* Note: First item for a seperator is its width in pixels */ + {15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */ + + {TBICON_HELP, IDC_PROGHELP,TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* help */ + {TBICON_EXIT, IDC_EXIT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* exit */ + +}; + + +/* menu hints */ +static const MENU_HINT MainMenuHintTable[] = { + /* File Menu */ + {IDC_EXIT, IDS_HINT_EXIT}, + + /* Action Menu */ + {IDC_REFRESH, IDS_HINT_REFRESH}, + {IDC_PROP, IDS_HINT_PROP}, + + /* Help Menu */ + {IDC_PROGHELP, IDS_HINT_HELP}, + {IDC_ABOUT, IDS_HINT_ABOUT} +}; + +/* system menu hints */ +static const MENU_HINT SystemMenuHintTable[] = { + {SC_RESTORE, IDS_HINT_SYS_RESTORE}, + {SC_MOVE, IDS_HINT_SYS_MOVE}, + {SC_SIZE, IDS_HINT_SYS_SIZE}, + {SC_MINIMIZE, IDS_HINT_SYS_MINIMIZE}, + {SC_MAXIMIZE, IDS_HINT_SYS_MAXIMIZE}, + {SC_CLOSE, IDS_HINT_SYS_CLOSE}, +}; + + +static BOOL +MainWndMenuHint(PMAIN_WND_INFO Info, + WORD CmdId, + const MENU_HINT *HintArray, + DWORD HintsCount, + UINT DefHintId) +{ + BOOL Found = FALSE; + const MENU_HINT *LastHint; + UINT HintId = DefHintId; + + LastHint = HintArray + HintsCount; + while (HintArray != LastHint) + { + if (HintArray->CmdId == CmdId) + { + HintId = HintArray->HintId; + Found = TRUE; + break; + } + HintArray++; + } + + StatusBarLoadString(Info->hStatus, + SB_SIMPLEID, + hInstance, + HintId); + + return Found; +} + + +static VOID +UpdateMainStatusBar(PMAIN_WND_INFO Info) +{ + if (Info->hStatus != NULL) + { + SendMessage(Info->hStatus, + SB_SIMPLE, + (WPARAM)Info->InMenuLoop, + 0); + } +} + + +static BOOL +CreateToolbar(PMAIN_WND_INFO Info) +{ + INT NumButtons = sizeof(Buttons) / sizeof(Buttons[0]); + + Info->hTool = CreateWindowEx(0, + TOOLBARCLASSNAME, + NULL, + WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS, + 0, 0, 0, 0, + Info->hMainWnd, + (HMENU)IDC_TOOLBAR, + hInstance, + NULL); + if(Info->hTool != NULL) + { + HIMAGELIST hImageList; + + SendMessage(Info->hTool, + TB_SETEXTENDEDSTYLE, + 0, + TBSTYLE_EX_HIDECLIPPEDBUTTONS); + + SendMessage(Info->hTool, + TB_BUTTONSTRUCTSIZE, + sizeof(Buttons[0]), + 0); + + hImageList = InitImageList(IDB_PROP, + IDB_EXIT, + 16, + 16); + if (hImageList == NULL) + return FALSE; + + ImageList_Destroy((HIMAGELIST)SendMessage(Info->hTool, + TB_SETIMAGELIST, + 0, + (LPARAM)hImageList)); + + SendMessage(Info->hTool, + TB_ADDBUTTONS, + NumButtons, + (LPARAM)Buttons); + + return TRUE; + } + + return FALSE; +} + + +static BOOL +CreateTreeView(PMAIN_WND_INFO Info) +{ + Info->hTreeView = CreateWindowEx(0, + WC_TREEVIEW, + NULL, + WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES | + TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_LINESATROOT, + 0, 0, 0, 0, + Info->hMainWnd, + (HMENU)IDC_TREEVIEW, + hInstance, + NULL); + if (Info->hTreeView == NULL) + { + DisplayString(_T("Could not create TreeView.")); + return FALSE; + } + + return TRUE; +} + +static BOOL +CreateStatusBar(PMAIN_WND_INFO Info) +{ + INT StatWidths[] = {110, -1}; /* widths of status bar */ + + Info->hStatus = CreateWindowEx(0, + STATUSCLASSNAME, + NULL, + WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, + 0, 0, 0, 0, + Info->hMainWnd, + (HMENU)IDC_STATUSBAR, + hInstance, + NULL); + if(Info->hStatus == NULL) + return FALSE; + + + SendMessage(Info->hStatus, + SB_SETPARTS, + sizeof(StatWidths) / sizeof(INT), + (LPARAM)StatWidths); + + return TRUE; +} + + + +static VOID +InitMainWnd(PMAIN_WND_INFO Info) +{ + HMENU hMenu; + HTREEITEM hRoot; + + if (!CreateToolbar(Info)) + DisplayString(_T("error creating toolbar")); + + if (!CreateTreeView(Info)) + { + DisplayString(_T("error creating list view")); + return; + } + + if (!CreateStatusBar(Info)) + DisplayString(_T("error creating status bar")); + + /* make 'properties' bold */ + hMenu = GetMenu(Info->hMainWnd); + hMenu = GetSubMenu(hMenu, 1); + SetMenuDefaultItem(hMenu, IDC_PROP, FALSE); + + /* Create Popup Menu */ + Info->hShortcutMenu = LoadMenu(hInstance, + MAKEINTRESOURCE(IDR_POPUP)); + Info->hShortcutMenu = GetSubMenu(Info->hShortcutMenu, + 0); + SetMenuDefaultItem(Info->hShortcutMenu, IDC_PROP, FALSE); + + /* emum all devices */ + hRoot = InitTreeView(Info); + if (hRoot) + ListDevicesByType(Info, hRoot); +} + + +static VOID +OnContext(PMAIN_WND_INFO Info, + LPARAM lParam) +{ + HTREEITEM hSelected; + POINT pt; + RECT rc; + + INT xPos = GET_X_LPARAM(lParam); + INT yPos = GET_Y_LPARAM(lParam); + + hSelected = TreeView_GetSelection(Info->hTreeView); + + if (TreeView_GetItemRect(Info->hTreeView, + hSelected, + &rc, + TRUE)) + { + if (GetCursorPos(&pt) && + ScreenToClient(Info->hTreeView, &pt) && + PtInRect(&rc, pt)) + { + TrackPopupMenuEx(Info->hShortcutMenu, + TPM_RIGHTBUTTON, + xPos, + yPos, + Info->hMainWnd, + NULL); + } + } +} + + +static VOID +OnNotify(PMAIN_WND_INFO Info, + LPARAM lParam) +{ + + LPNMHDR pnmhdr = (LPNMHDR)lParam; + + switch (pnmhdr->code) + { + case NM_DBLCLK: + { + HTREEITEM hSelected = TreeView_GetSelection(Info->hTreeView); + + if (!TreeView_GetChild(Info->hTreeView, + hSelected)) + { + OpenPropSheet(Info->hTreeView, + hSelected); + } + } + break; + + case NM_RCLICK: + { + TV_HITTESTINFO HitTest; + + if (GetCursorPos(&HitTest.pt) && + ScreenToClient(Info->hTreeView, &HitTest.pt)) + { + if (TreeView_HitTest(Info->hTreeView, &HitTest)) + (void)TreeView_SelectItem(Info->hTreeView, HitTest.hItem); + } + } + break; + + case TTN_GETDISPINFO: + { + LPTOOLTIPTEXT lpttt; + UINT idButton; + + lpttt = (LPTOOLTIPTEXT)lParam; + + idButton = (UINT)lpttt->hdr.idFrom; + switch (idButton) + { + case IDC_PROP: + lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PROP); + break; + + case IDC_REFRESH: + lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_REFRESH); + break; + + case IDC_PROGHELP: + lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_HELP); + break; + + case IDC_EXIT: + lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_EXIT); + break; + + } + } + break; + } +} + + +static VOID +MainWndCommand(PMAIN_WND_INFO Info, + WORD CmdId, + HWND hControl) +{ + UNREFERENCED_PARAMETER(hControl); + + switch (CmdId) + { + case IDC_PROP: + { + HTREEITEM hSelected = TreeView_GetSelection(Info->hTreeView); + OpenPropSheet(Info->hTreeView, + hSelected); + } + break; + + case IDC_REFRESH: + { + HTREEITEM hRoot; + + FreeDeviceStrings(Info->hTreeView); + + hRoot = InitTreeView(Info); + if (hRoot) + ListDevicesByType(Info, hRoot); + } + break; + + case IDC_PROGHELP: + { + DisplayString(_T("Help is not yet implemented\n")); + SetFocus(Info->hTreeView); + } + break; + + case IDC_EXIT: + { + PostMessage(Info->hMainWnd, + WM_CLOSE, + 0, + 0); + } + break; + + case IDC_ABOUT: + { + DialogBox(hInstance, + MAKEINTRESOURCE(IDD_ABOUTBOX), + Info->hMainWnd, + (DLGPROC)AboutDialogProc); + + SetFocus(Info->hTreeView); + } + break; + + } +} + + +static VOID CALLBACK +MainWndResize(PMAIN_WND_INFO Info, + WORD cx, + WORD cy) +{ + RECT rcClient, rcTool, rcStatus; + int lvHeight, iToolHeight, iStatusHeight; + + /* Size toolbar and get height */ + SendMessage(Info->hTool, TB_AUTOSIZE, 0, 0); + GetWindowRect(Info->hTool, &rcTool); + iToolHeight = rcTool.bottom - rcTool.top; + + /* Size status bar and get height */ + SendMessage(Info->hStatus, WM_SIZE, 0, 0); + GetWindowRect(Info->hStatus, &rcStatus); + iStatusHeight = rcStatus.bottom - rcStatus.top; + + /* Calculate remaining height and size list view */ + GetClientRect(Info->hMainWnd, &rcClient); + lvHeight = rcClient.bottom - iToolHeight - iStatusHeight; + SetWindowPos(Info->hTreeView, + NULL, + 0, + iToolHeight, + rcClient.right, + lvHeight, + SWP_NOZORDER); +} + + +static LRESULT CALLBACK +MainWndProc(HWND hwnd, + UINT msg, + WPARAM wParam, + LPARAM lParam) +{ + PMAIN_WND_INFO Info; + LRESULT Ret = 0; + + /* Get the window context */ + Info = (PMAIN_WND_INFO)GetWindowLongPtr(hwnd, + GWLP_USERDATA); + if (Info == NULL && msg != WM_CREATE) + { + goto HandleDefaultMessage; + } + + switch(msg) + { + case WM_CREATE: + { + Info = (PMAIN_WND_INFO)(((LPCREATESTRUCT)lParam)->lpCreateParams); + + /* Initialize the main window context */ + Info->hMainWnd = hwnd; + + SetWindowLongPtr(hwnd, + GWLP_USERDATA, + (LONG_PTR)Info); + + InitMainWnd(Info); + + /* Show the window */ + ShowWindow(hwnd, + Info->nCmdShow); + + } + break; + + case WM_SIZE: + { + MainWndResize(Info, + LOWORD(lParam), + HIWORD(lParam)); + } + break; + + case WM_NOTIFY: + { + OnNotify(Info, lParam); + } + break; + + case WM_CONTEXTMENU: + { + OnContext(Info, lParam); + } + break; + + case WM_COMMAND: + { + MainWndCommand(Info, + LOWORD(wParam), + (HWND)lParam); + goto HandleDefaultMessage; + } + + case WM_MENUSELECT: + { + if (Info->hStatus != NULL) + { + if (!MainWndMenuHint(Info, + LOWORD(wParam), + MainMenuHintTable, + sizeof(MainMenuHintTable) / sizeof(MainMenuHintTable[0]), + IDS_HINT_BLANK)) + { + MainWndMenuHint(Info, + LOWORD(wParam), + SystemMenuHintTable, + sizeof(SystemMenuHintTable) / sizeof(SystemMenuHintTable[0]), + IDS_HINT_BLANK); + } + } + } + break; + + case WM_ENTERMENULOOP: + { + Info->InMenuLoop = TRUE; + UpdateMainStatusBar(Info); + break; + } + + case WM_EXITMENULOOP: + { + Info->InMenuLoop = FALSE; + UpdateMainStatusBar(Info); + break; + } + + case WM_CLOSE: + { + FreeDeviceStrings(Info->hTreeView); + DestroyMenu(Info->hShortcutMenu); + DestroyWindow(hwnd); + } + break; + + case WM_DESTROY: + { + HeapFree(ProcessHeap, + 0, + Info); + SetWindowLongPtr(hwnd, + GWLP_USERDATA, + 0); + + /* Break the message queue loop */ + PostQuitMessage(0); + } + break; + + default: + { +HandleDefaultMessage: + + Ret = DefWindowProc(hwnd, + msg, + wParam, + lParam); + } + break; + } + return Ret; +} + + + +HWND +CreateMainWindow(LPCTSTR lpCaption, + int nCmdShow) +{ + PMAIN_WND_INFO Info; + HWND hMainWnd = NULL; + + Info = HeapAlloc(ProcessHeap, + HEAP_ZERO_MEMORY, + sizeof(MAIN_WND_INFO)); + + if (Info != NULL) + { + Info->nCmdShow = nCmdShow; + + hMainWnd = CreateWindowEx(WS_EX_WINDOWEDGE, + szMainWndClass, + lpCaption, + WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, + CW_USEDEFAULT, + CW_USEDEFAULT, + 600, + 450, + NULL, + NULL, + hInstance, + Info); + if (hMainWnd == NULL) + { + GetError(); + HeapFree(ProcessHeap, + 0, + Info); + } + } + + return hMainWnd; +} + +BOOL +InitMainWindowImpl(VOID) +{ + WNDCLASSEX wc = {0}; + + wc.cbSize = sizeof(WNDCLASSEX); + wc.lpfnWndProc = MainWndProc; + wc.hInstance = hInstance; + wc.hIcon = LoadIcon(hInstance, + MAKEINTRESOURCE(IDI_MAIN_ICON)); + wc.hCursor = LoadCursor(NULL, + IDC_ARROW); + wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); + wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAINMENU); + wc.lpszClassName = szMainWndClass; + wc.hIconSm = (HICON)LoadImage(hInstance, + MAKEINTRESOURCE(IDI_MAIN_ICON), + IMAGE_ICON, + 16, + 16, + LR_SHARED); + + return RegisterClassEx(&wc) != (ATOM)0; +} + + +VOID +UninitMainWindowImpl(VOID) +{ + UnregisterClass(szMainWndClass, + hInstance); +} + diff --git a/reactos/base/applications/devmgmt/manifest.xml b/reactos/base/applications/devmgmt/manifest.xml new file mode 100644 index 00000000000..2320af6a533 --- /dev/null +++ b/reactos/base/applications/devmgmt/manifest.xml @@ -0,0 +1,23 @@ + + + +ReactOS Device Manager + + + + + + diff --git a/reactos/base/applications/devmgmt/misc.c b/reactos/base/applications/devmgmt/misc.c new file mode 100644 index 00000000000..171b54d46e2 --- /dev/null +++ b/reactos/base/applications/devmgmt/misc.c @@ -0,0 +1,278 @@ +/* + * PROJECT: ReactOS Device Managment + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/devmgmt/misc.c + * PURPOSE: miscallanous functions + * COPYRIGHT: Copyright 2006 Ged Murphy + * + */ + +#include "precomp.h" + +static INT +LengthOfStrResource(IN HINSTANCE hInst, + IN UINT uID) +{ + HRSRC hrSrc; + HGLOBAL hRes; + LPWSTR lpName, lpStr; + + if (hInst == NULL) + { + return -1; + } + + /* There are always blocks of 16 strings */ + lpName = (LPWSTR)MAKEINTRESOURCE((uID >> 4) + 1); + + /* Find the string table block */ + if ((hrSrc = FindResourceW(hInst, lpName, (LPWSTR)RT_STRING)) && + (hRes = LoadResource(hInst, hrSrc)) && + (lpStr = LockResource(hRes))) + { + UINT x; + + /* Find the string we're looking for */ + uID &= 0xF; /* position in the block, same as % 16 */ + for (x = 0; x < uID; x++) + { + lpStr += (*lpStr) + 1; + } + + /* Found the string */ + return (int)(*lpStr); + } + return -1; +} + +INT +AllocAndLoadString(OUT LPTSTR *lpTarget, + IN HINSTANCE hInst, + IN UINT uID) +{ + INT ln; + + ln = LengthOfStrResource(hInst, + uID); + if (ln++ > 0) + { + (*lpTarget) = (LPTSTR)LocalAlloc(LMEM_FIXED, + ln * sizeof(TCHAR)); + if ((*lpTarget) != NULL) + { + INT Ret; + if (!(Ret = LoadString(hInst, uID, *lpTarget, ln))) + { + LocalFree((HLOCAL)(*lpTarget)); + } + return Ret; + } + } + return 0; +} + +DWORD +LoadAndFormatString(IN HINSTANCE hInstance, + IN UINT uID, + OUT LPTSTR *lpTarget, + ...) +{ + DWORD Ret = 0; + LPTSTR lpFormat; + va_list lArgs; + + if (AllocAndLoadString(&lpFormat, + hInstance, + uID) > 0) + { + va_start(lArgs, lpTarget); + /* let's use FormatMessage to format it because it has the ability to allocate + memory automatically */ + Ret = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, + lpFormat, + 0, + 0, + (LPTSTR)lpTarget, + 0, + &lArgs); + va_end(lArgs); + + LocalFree((HLOCAL)lpFormat); + } + + return Ret; +} + +BOOL +StatusBarLoadAndFormatString(IN HWND hStatusBar, + IN INT PartId, + IN HINSTANCE hInstance, + IN UINT uID, + ...) +{ + BOOL Ret = FALSE; + LPTSTR lpFormat, lpStr; + va_list lArgs; + + if (AllocAndLoadString(&lpFormat, + hInstance, + uID) > 0) + { + va_start(lArgs, uID); + /* let's use FormatMessage to format it because it has the ability to allocate + memory automatically */ + Ret = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, + lpFormat, + 0, + 0, + (LPTSTR)&lpStr, + 0, + &lArgs); + va_end(lArgs); + + if (lpStr != NULL) + { + Ret = (BOOL)SendMessage(hStatusBar, + SB_SETTEXT, + (WPARAM)PartId, + (LPARAM)lpStr); + LocalFree((HLOCAL)lpStr); + } + + LocalFree((HLOCAL)lpFormat); + } + + return Ret; +} + +BOOL +StatusBarLoadString(IN HWND hStatusBar, + IN INT PartId, + IN HINSTANCE hInstance, + IN UINT uID) +{ + BOOL Ret = FALSE; + LPTSTR lpStr; + + if (AllocAndLoadString(&lpStr, + hInstance, + uID) > 0) + { + Ret = (BOOL)SendMessage(hStatusBar, + SB_SETTEXT, + (WPARAM)PartId, + (LPARAM)lpStr); + LocalFree((HLOCAL)lpStr); + } + + return Ret; +} + + +INT +GetTextFromEdit(OUT LPTSTR lpString, + IN HWND hDlg, + IN UINT Res) +{ + INT len = GetWindowTextLength(GetDlgItem(hDlg, Res)); + if(len > 0) + { + GetDlgItemText(hDlg, + Res, + lpString, + len + 1); + } + else + lpString = NULL; + + return len; +} + + +HIMAGELIST +InitImageList(UINT StartResource, + UINT EndResource, + UINT Width, + UINT Height) +{ + HBITMAP hBitmap; + HIMAGELIST hImageList; + UINT i; + INT Ret; + + /* Create the toolbar icon image list */ + hImageList = ImageList_Create(Width, + Height, + ILC_MASK | ILC_COLOR24, + EndResource - StartResource, + 0); + if (hImageList == NULL) + return NULL; + + /* Add all icons to the image list */ + for (i = StartResource; i <= EndResource; i++) + { + hBitmap = LoadImage(hInstance, + MAKEINTRESOURCE(i), + IMAGE_BITMAP, + Width, + Height, + LR_LOADTRANSPARENT); + if (hBitmap == NULL) + return NULL; + + Ret = ImageList_AddMasked(hImageList, + hBitmap, + RGB(255, 0, 128)); + if (Ret == -1) + return NULL; + + DeleteObject(hBitmap); + } + + return hImageList; +} + + +VOID GetError(VOID) +{ + LPVOID lpMsgBuf; + + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, + 0, + NULL ); + + MessageBox(NULL, lpMsgBuf, _T("Error!"), MB_OK | MB_ICONERROR); + + LocalFree(lpMsgBuf); +} + + +VOID DisplayString(PTCHAR Msg) +{ + MessageBox(NULL, Msg, _T("Note!"), MB_ICONEXCLAMATION|MB_OK); +} + + +VOID TimerInfo(LPTSTR text) +{ + static HANDLE hOut = NULL; + DWORD Count; + TCHAR buf[256]; + static DWORD start = 0; + + if (!start) start = GetTickCount(); + + if (!hOut) hOut = GetStdHandle(STD_ERROR_HANDLE); + + if (text) _sntprintf(buf, 256, _T("%s\ttime : %d\n"), text, GetTickCount() - start); + else _sntprintf(buf, 256, _T("time : %d\n"), GetTickCount() - start); + + WriteConsole(hOut, buf, lstrlen(buf)+1, &Count, NULL); +} diff --git a/reactos/base/applications/devmgmt/precomp.h b/reactos/base/applications/devmgmt/precomp.h new file mode 100644 index 00000000000..83a27089cff --- /dev/null +++ b/reactos/base/applications/devmgmt/precomp.h @@ -0,0 +1,120 @@ +#ifndef __DEVMGMT_PRECOMP_H +#define __DEVMGMT_PRECOMP_H + +#define WIN32_LEAN_AND_MEAN +#include +#include +#include +#include +#include +#include +#include +#include "resource.h" + +#ifdef _MSC_VER +#pragma warning(disable : 4100) +#endif + +#define MAX_DEV_LEN 256 + +typedef struct _MAIN_WND_INFO +{ + HWND hMainWnd; + HWND hTreeView; + HWND hStatus; + HWND hTool; + HWND hProgDlg; + HMENU hShortcutMenu; + int nCmdShow; + + /* status flags */ + UINT InMenuLoop : 1; + +} MAIN_WND_INFO, *PMAIN_WND_INFO; + + +BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); + + +/* devmgmt.c */ +extern HINSTANCE hInstance; +extern HANDLE ProcessHeap; + +/* mainwnd.c */ +typedef struct _MENU_HINT +{ + WORD CmdId; + UINT HintId; +} MENU_HINT, *PMENU_HINT; + +BOOL InitMainWindowImpl(VOID); +VOID UninitMainWindowImpl(VOID); +HWND CreateMainWindow(LPCTSTR lpCaption, int nCmdShow); + + +/* enumdevices.c */ +// undocumented API's from devmgr +#ifdef _UNICODE +#define DevicePropertiesEx DevicePropertiesExW +INT_PTR +WINAPI +DevicePropertiesExW(IN HWND hWndParent OPTIONAL, + IN LPCWSTR lpMachineName OPTIONAL, + IN LPCWSTR lpDeviceID OPTIONAL, + IN DWORD dwFlags OPTIONAL, + IN BOOL bShowDevMgr); +#else +#define DevicePropertiesEx DevicePropertiesExA +INT_PTR +WINAPI +DevicePropertiesExA(IN HWND hWndParent OPTIONAL, + IN LPCSTR lpMachineName OPTIONAL, + IN LPCSTR lpDeviceID OPTIONAL, + IN DWORD dwFlags OPTIONAL, + IN BOOL bShowDevMgr); +#endif + +VOID FreeDeviceStrings(HWND hTV); +VOID OpenPropSheet(HWND hTV, HTREEITEM hItem); +HTREEITEM InitTreeView(PMAIN_WND_INFO Info); +VOID ListDevicesByType(PMAIN_WND_INFO Info, HTREEITEM hRoot); + + +/* misc.c */ +INT AllocAndLoadString(OUT LPTSTR *lpTarget, + IN HINSTANCE hInst, + IN UINT uID); + +DWORD LoadAndFormatString(IN HINSTANCE hInstance, + IN UINT uID, + OUT LPTSTR *lpTarget, + ...); + +BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar, + IN INT PartId, + IN HINSTANCE hInstance, + IN UINT uID, + ...); + +BOOL StatusBarLoadString(IN HWND hStatusBar, + IN INT PartId, + IN HINSTANCE hInstance, + IN UINT uID); + +INT GetTextFromEdit(OUT LPTSTR lpString, + IN HWND hDlg, + IN UINT Res); + +HIMAGELIST InitImageList(UINT NumButtons, + UINT StartResource, + UINT Width, + UINT Height); + +VOID GetError(VOID); + +VOID DisplayString(PTCHAR); + +VOID TimerInfo(LPTSTR); + + +#endif /* __DEVMGMT_PRECOMP_H */ diff --git a/reactos/base/applications/devmgmt/res/computer.ico b/reactos/base/applications/devmgmt/res/computer.ico new file mode 100644 index 00000000000..deb7f520f20 Binary files /dev/null and b/reactos/base/applications/devmgmt/res/computer.ico differ diff --git a/reactos/base/applications/devmgmt/res/exit.bmp b/reactos/base/applications/devmgmt/res/exit.bmp new file mode 100644 index 00000000000..97381f1f6f7 Binary files /dev/null and b/reactos/base/applications/devmgmt/res/exit.bmp differ diff --git a/reactos/base/applications/devmgmt/res/help.bmp b/reactos/base/applications/devmgmt/res/help.bmp new file mode 100644 index 00000000000..4c958c2e9a0 Binary files /dev/null and b/reactos/base/applications/devmgmt/res/help.bmp differ diff --git a/reactos/base/applications/devmgmt/res/properties.bmp b/reactos/base/applications/devmgmt/res/properties.bmp new file mode 100644 index 00000000000..15e080ec923 Binary files /dev/null and b/reactos/base/applications/devmgmt/res/properties.bmp differ diff --git a/reactos/base/applications/devmgmt/res/refresh.bmp b/reactos/base/applications/devmgmt/res/refresh.bmp new file mode 100644 index 00000000000..e7c12bbd302 Binary files /dev/null and b/reactos/base/applications/devmgmt/res/refresh.bmp differ diff --git a/reactos/base/applications/devmgmt/res/root.bmp b/reactos/base/applications/devmgmt/res/root.bmp new file mode 100644 index 00000000000..e2734fb590b Binary files /dev/null and b/reactos/base/applications/devmgmt/res/root.bmp differ diff --git a/reactos/base/applications/devmgmt/resource.h b/reactos/base/applications/devmgmt/resource.h new file mode 100644 index 00000000000..ad94561340e --- /dev/null +++ b/reactos/base/applications/devmgmt/resource.h @@ -0,0 +1,63 @@ +#define IDC_STATIC -1 + +#define IDI_MAIN_ICON 50 +#define IDB_ROOT_IMAGE 51 + +/* windows */ +#define IDC_TREEVIEW 1000 +#define IDC_TOOLBAR 1001 +#define IDC_STATUSBAR 1002 + +/* commands */ +#define IDC_PROP 2000 +#define IDC_REFRESH 2001 +#define IDC_PRINT 2002 +#define IDC_PROGHELP 2003 +#define IDC_EXIT 2004 +#define IDC_ABOUT 4031 + +/* menus */ +#define IDR_MAINMENU 102 +#define IDR_POPUP 103 +#define IDC_DEVBYTYPE 104 + +/* tooltips */ +#define IDS_TOOLTIP_PROP 6000 +#define IDS_TOOLTIP_REFRESH 6001 +#define IDS_TOOLTIP_HELP 6002 +#define IDS_TOOLTIP_EXIT 6003 + +/* button bitmaps */ +#define IDB_PROP 10000 +#define IDB_REFRESH 10001 +#define IDB_HELP 10002 +#define IDB_EXIT 10003 + +/* toolbar buttons */ +#define TBICON_PROP 0 +#define TBICON_REFRESH 1 +#define TBICON_HELP 2 +#define TBICON_EXIT 3 + +/* about box info */ +#define IDD_ABOUTBOX 200 +#define IDC_LICENSE_EDIT 201 +#define IDS_APPNAME 202 +#define IDS_LICENSE 203 + + +/* menu hints */ +#define IDS_HINT_BLANK 20000 +#define IDS_HINT_REFRESH 20002 +#define IDS_HINT_PROP 20003 +#define IDS_HINT_HELP 20004 +#define IDS_HINT_ABOUT 20005 +#define IDS_HINT_EXIT 20006 + +/* system menu hints */ +#define IDS_HINT_SYS_RESTORE 21001 +#define IDS_HINT_SYS_MOVE 21002 +#define IDS_HINT_SYS_SIZE 21003 +#define IDS_HINT_SYS_MINIMIZE 21004 +#define IDS_HINT_SYS_MAXIMIZE 21005 +#define IDS_HINT_SYS_CLOSE 21006 diff --git a/reactos/base/applications/devmgr/devmgr.c b/reactos/base/applications/devmgr/devmgr.c index 6fb93d8ee70..a13b528798d 100644 --- a/reactos/base/applications/devmgr/devmgr.c +++ b/reactos/base/applications/devmgr/devmgr.c @@ -131,8 +131,8 @@ void ListByClass() if (rc == ERROR_SUCCESS) { InsertIntoListView(i,ClassDescription,ClassName); - TextOut(hDC, 200, 40, empty, strlen(empty)); - TextOut(hDC, 200, 40, ClassDescription, strlen(ClassDescription)); + TextOut(hDC, 200, 40, empty, (int) strlen(empty)); + TextOut(hDC, 200, 40, ClassDescription, (int) strlen(ClassDescription)); _tprintf(_T("%d %s (%s)\n"), i, ClassName, ClassDescription); } else @@ -183,8 +183,8 @@ void ListByClass() { _tprintf(_T("- %s\n"), PropertyBuffer); InsertIntoListView(0,PropertyBuffer," "); - TextOut(hDC, 200, 40, empty, strlen(empty)); - TextOut(hDC, 200, 40, PropertyBuffer, strlen(PropertyBuffer)); + TextOut(hDC, 200, 40, empty, (int) strlen(empty)); + TextOut(hDC, 200, 40, PropertyBuffer, (int) strlen(PropertyBuffer)); } else _tprintf(_T("SetupDiGetDeviceRegistryProperty() failed with status 0x%lx\n"), GetLastError()); @@ -239,16 +239,16 @@ CONFIGRET ListSubNodes(DEVINST parent, DWORD Level) _tprintf(_T("%s\n"), DisplayName); sprintf(temp,"%s%s",LevelSpaces,DisplayName); InsertIntoListView(0,temp," "); - TextOut(hDC, 200, 40, empty, strlen(empty)); - TextOut(hDC, 200, 40, DisplayName, strlen(DisplayName)); + TextOut(hDC, 200, 40, empty, (int) strlen(empty)); + TextOut(hDC, 200, 40, DisplayName, (int) strlen(DisplayName)); } else { _tprintf(_T("(unknown device)\n")); sprintf(temp,"%s%s",LevelSpaces,"(unknown device)"); InsertIntoListView(0,temp," "); - TextOut(hDC, 200, 40, empty, strlen(empty)); - TextOut(hDC, 200, 40, "(unknown device)", strlen("(unknown device)")); + TextOut(hDC, 200, 40, empty, (int) strlen(empty)); + TextOut(hDC, 200, 40, "(unknown device)", (int) strlen("(unknown device)")); } cr = ListSubNodes(child, Level + 1); if (cr != CR_SUCCESS) @@ -328,8 +328,8 @@ int ListByInterface(const GUID* guid) if (SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData, sizeof(Buffer), NULL, NULL)) { _tprintf(_T("- device %-2ld: %s\n"), i, DeviceInterfaceDetailData->DevicePath); - TextOut(hDC, 200, 40, empty, strlen(empty)); - TextOut(hDC, 200, 40, DeviceInterfaceDetailData->DevicePath, strlen(DeviceInterfaceDetailData->DevicePath)); + TextOut(hDC, 200, 40, empty, (int) strlen(empty)); + TextOut(hDC, 200, 40, DeviceInterfaceDetailData->DevicePath, (int) strlen(DeviceInterfaceDetailData->DevicePath)); InsertIntoListView(i,DeviceInterfaceDetailData->DevicePath," "); } else @@ -362,6 +362,9 @@ int WINAPI WinMain( HINSTANCE hInstance, { MSG msg; +UNREFERENCED_PARAMETER(lpCmdLine); +UNREFERENCED_PARAMETER(hInstance); + g_hInst = hInstance; if(!hPrevInstance) @@ -481,7 +484,7 @@ switch (uMessage) InitListView(); CreateButtons(g_hInst, hWnd); - TextOut(hDC, 200, 40, empty, strlen(empty)); + TextOut(hDC, 200, 40, empty, (int) strlen(empty)); break; @@ -525,6 +528,8 @@ void CreateListView(HINSTANCE hInstance, HWND hwndParent) { DWORD dwStyle; +UNREFERENCED_PARAMETER(hInstance); + dwStyle = WS_TABSTOP | WS_CHILD | WS_BORDER | @@ -657,7 +662,7 @@ void InsertIntoListView(int typ, LPTSTR name, LPTSTR intern_name) } else item.pszText = ""; - item.cchTextMax = _tcslen(item.pszText); + item.cchTextMax = (int) _tcslen(item.pszText); if (item.cchTextMax == 0) item.pszText = LPSTR_TEXTCALLBACK; item.iImage = 0; @@ -676,6 +681,8 @@ void InsertIntoListView(int typ, LPTSTR name, LPTSTR intern_name) void CreateButtons(HINSTANCE hInstance, HWND hwndParent) { + UNREFERENCED_PARAMETER(hInstance); + hwndButtonListByClass = CreateWindowEx ( 0, "button", /* Builtin button class */ diff --git a/reactos/base/applications/devmgr/devmgr.rbuild b/reactos/base/applications/devmgr/devmgr.rbuild index 78e60550960..b9014c42a65 100644 --- a/reactos/base/applications/devmgr/devmgr.rbuild +++ b/reactos/base/applications/devmgr/devmgr.rbuild @@ -9,6 +9,7 @@ kernel32 user32 comctl32 + advapi32 devmgr.c devmgr.rc diff --git a/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp b/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp index 2f20010695b..d9b34050ed9 100644 --- a/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp +++ b/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp @@ -5,6 +5,7 @@ // Copyright J Brown 2001 // #include +#include #include "cardlib.h" #include "cardregion.h" #include "cardcolor.h" diff --git a/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp b/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp index 1eea0bffb90..48682ae9628 100644 --- a/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp +++ b/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp @@ -6,6 +6,7 @@ // #include #include +#include #include "globals.h" #include "cardlib.h" diff --git a/reactos/base/applications/games/solitaire/de.rc b/reactos/base/applications/games/solitaire/de.rc new file mode 100644 index 00000000000..bad20480792 --- /dev/null +++ b/reactos/base/applications/games/solitaire/de.rc @@ -0,0 +1,128 @@ +/* + * PROJECT: Solitaire + * LICENSE: Freeware, permission to use under Public Domain + * FILE: base/applications/games/solitaire/de.rc + * PURPOSE: German Language File for Solitaire + * PROGRAMMERS: Daniel "EmuandCo" Reimer (reimer.daniel@freenet.de) + */ +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS + +/* winemaker: #include "afxres.h" */ +/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */ +#include "winres.h" + +///// + +#undef APSTUDIO_READONLY_SYMBOLS + +///// +// German resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +#ifdef _WIN32 +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +#pragma code_page(1252) +#endif //_WIN32 + +///// +// Dialog + +IDD_DIALOG1 DIALOGEX DISCARDABLE 0, 0, 186, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Dialog" +FONT 8, "MS Shell Dlg" +EXSTYLE DS_SHELLFONT +BEGIN + DEFPUSHBUTTON "OK",IDOK,129,7,50,14 + PUSHBUTTON "Abbrechen",IDCANCEL,129,24,50,14 +END + + +///// +// DESIGNINFO + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_DIALOG1, DIALOGEX + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 179 + TOPMARGIN, 7 + BOTTOMMARGIN, 88 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED + +///// +// TEXTINCLUDE + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///// +// Menu + +IDR_MENU1 MENU DISCARDABLE +BEGIN + POPUP "&Spiel" + BEGIN + MENUITEM "&Karten geben\t F2", IDM_GAME_NEW + MENUITEM SEPARATOR + MENUITEM "&Deckblatt...", IDM_GAME_DECK + MENUITEM "&Optionen...", IDM_GAME_OPTIONS + MENUITEM SEPARATOR + MENUITEM "&Beenden", IDM_GAME_EXIT + END + POPUP "&?" + BEGIN + MENUITEM "&Inhalt\tF1", IDM_HELP_CONTENTS + MENUITEM "Inf&o", IDM_HELP_ABOUT + END +END + +///// +// Accelerator + +IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE +BEGIN + VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT + VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT +END + + +///// +// Icon + +IDI_ICON1 ICON DISCARDABLE "solitaire.ico" +#endif // German resources + +///// + + +#ifndef APSTUDIO_INVOKED + +///// +#endif // not APSTUDIO_INVOKED diff --git a/reactos/base/applications/games/solitaire/en.rc b/reactos/base/applications/games/solitaire/en.rc new file mode 100644 index 00000000000..22823aa8815 --- /dev/null +++ b/reactos/base/applications/games/solitaire/en.rc @@ -0,0 +1,128 @@ +/* + * PROJECT: Solitaire + * LICENSE: Freeware, permission to use under Public Domain + * FILE: base/applications/games/solitaire/en.rc + * PURPOSE: English Language File for Solitaire + * PROGRAMMERS: Daniel "EmuandCo" Reimer (reimer.daniel@freenet.de) + */ +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS + +/* winemaker: #include "afxres.h" */ +/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */ +#include "winres.h" + +///// + +#undef APSTUDIO_READONLY_SYMBOLS + +///// +// English (U.K.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///// +// Dialog + +IDD_DIALOG1 DIALOGEX DISCARDABLE 0, 0, 186, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Dialog" +FONT 8, "MS Shell Dlg" +EXSTYLE DS_SHELLFONT +BEGIN + DEFPUSHBUTTON "OK",IDOK,129,7,50,14 + PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14 +END + + +///// +// DESIGNINFO + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_DIALOG1, DIALOGEX + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 179 + TOPMARGIN, 7 + BOTTOMMARGIN, 88 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED + +///// +// TEXTINCLUDE + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///// +// Menu + +IDR_MENU1 MENU DISCARDABLE +BEGIN + POPUP "&Game" + BEGIN + MENUITEM "&Deal\tF2", IDM_GAME_NEW + MENUITEM SEPARATOR + MENUITEM "De&ck...", IDM_GAME_DECK + MENUITEM "&Options...", IDM_GAME_OPTIONS + MENUITEM SEPARATOR + MENUITEM "&Exit", IDM_GAME_EXIT + END + POPUP "&Help" + BEGIN + MENUITEM "&Contents\tF1", IDM_HELP_CONTENTS + MENUITEM "&About", IDM_HELP_ABOUT + END +END + +///// +// Accelerator + +IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE +BEGIN + VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT + VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT +END + + +///// +// Icon + +IDI_ICON1 ICON DISCARDABLE "solitaire.ico" +#endif // English (U.K.) resources + +///// + + +#ifndef APSTUDIO_INVOKED + +///// +#endif // not APSTUDIO_INVOKED diff --git a/reactos/base/applications/games/solitaire/sol.rc b/reactos/base/applications/games/solitaire/sol.rc index 021bbc0c148..3bf475111b0 100644 --- a/reactos/base/applications/games/solitaire/sol.rc +++ b/reactos/base/applications/games/solitaire/sol.rc @@ -1,144 +1,5 @@ -//Microsoft Developer Studio generated resource script. -// #include "resource.h" -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -/* winemaker: #include "afxres.h" */ -/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */ -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 95 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Dialog" -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",IDOK,129,7,50,14 - PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_DIALOG1, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 179 - TOPMARGIN, 7 - BOTTOMMARGIN, 88 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDR_MENU1 MENU DISCARDABLE -BEGIN - POPUP "&Game" - BEGIN - MENUITEM "&Deal\tF2", IDM_GAME_NEW - MENUITEM SEPARATOR - MENUITEM "De&ck...", IDM_GAME_DECK - MENUITEM "&Options...", IDM_GAME_OPTIONS - MENUITEM SEPARATOR - MENUITEM "&Exit", IDM_GAME_EXIT - END - POPUP "&Help" - BEGIN - MENUITEM "&Contents\tF1", IDM_HELP_CONTENTS - MENUITEM "&About", IDM_HELP_ABOUT - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE -BEGIN - VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT - VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON1 ICON DISCARDABLE "solitaire.ico" -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +#include "de.rc" +#include "en.rc" +#include "uk.rc" diff --git a/reactos/base/applications/games/solitaire/solitaire.cpp b/reactos/base/applications/games/solitaire/solitaire.cpp index 5689c429065..cda7203bea1 100644 --- a/reactos/base/applications/games/solitaire/solitaire.cpp +++ b/reactos/base/applications/games/solitaire/solitaire.cpp @@ -1,6 +1,8 @@ #include #include #include +#include + #include "resource.h" #include "cardlib/cardlib.h" diff --git a/reactos/base/applications/games/solitaire/solitaire.rbuild b/reactos/base/applications/games/solitaire/solitaire.rbuild index 51c36c9f0f5..6478c45e701 100644 --- a/reactos/base/applications/games/solitaire/solitaire.rbuild +++ b/reactos/base/applications/games/solitaire/solitaire.rbuild @@ -1,6 +1,6 @@ - + . cardlib -lstdc++ diff --git a/reactos/base/applications/games/solitaire/uk.rc b/reactos/base/applications/games/solitaire/uk.rc new file mode 100644 index 00000000000..b19eafd0906 --- /dev/null +++ b/reactos/base/applications/games/solitaire/uk.rc @@ -0,0 +1,128 @@ +/* + * PROJECT: Solitaire + * LICENSE: Freeware, permission to use under Public Domain + * FILE: base/applications/games/solitaire/uk.rc + * PURPOSE: Ukraianian Language File for Solitaire + * TRANSLATOR: Artem Reznikov + */ +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS + +/* winemaker: #include "afxres.h" */ +/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */ +#include "winres.h" + +///// + +#undef APSTUDIO_READONLY_SYMBOLS + +///// +// Ukraianian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +#ifdef _WIN32 +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT +#pragma code_page(1251) +#endif //_WIN32 + +///// +// Dialog + +IDD_DIALOG1 DIALOGEX DISCARDABLE 0, 0, 186, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Dialog" +FONT 8, "MS Shell Dlg" +EXSTYLE DS_SHELLFONT +BEGIN + DEFPUSHBUTTON "OK",IDOK,129,7,50,14 + PUSHBUTTON "Ñêàñóâàòè",IDCANCEL,129,24,50,14 +END + + +///// +// DESIGNINFO + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_DIALOG1, DIALOGEX + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 179 + TOPMARGIN, 7 + BOTTOMMARGIN, 88 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED + +///// +// TEXTINCLUDE + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///// +// Menu + +IDR_MENU1 MENU DISCARDABLE +BEGIN + POPUP "&Ãðà" + BEGIN + MENUITEM "&Ðîçäàòè êàðòè\tF2", IDM_GAME_NEW + MENUITEM SEPARATOR + MENUITEM "&Êîëîäà...", IDM_GAME_DECK + MENUITEM "&Ïàðàìåòðè...", IDM_GAME_OPTIONS + MENUITEM SEPARATOR + MENUITEM "Â&èõ³ä", IDM_GAME_EXIT + END + POPUP "&Äîâ³äêà" + BEGIN + MENUITEM "&Çì³ñò\tF1", IDM_HELP_CONTENTS + MENUITEM "&Ïðî", IDM_HELP_ABOUT + END +END + +///// +// Accelerator + +IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE +BEGIN + VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT + VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT +END + + +///// +// Icon + +IDI_ICON1 ICON DISCARDABLE "solitaire.ico" +#endif // Ukraianian resources + +///// + + +#ifndef APSTUDIO_INVOKED + +///// +#endif // not APSTUDIO_INVOKED diff --git a/reactos/base/applications/games/winemine/No.rc b/reactos/base/applications/games/winemine/No.rc new file mode 100644 index 00000000000..2c5a997e5fd --- /dev/null +++ b/reactos/base/applications/games/winemine/No.rc @@ -0,0 +1,83 @@ +#include "resource.h" + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +STRINGTABLE { + IDS_APPNAME, "Minesveiper" + +} + +MENU_WINEMINE MENU DISCARDABLE +{ + POPUP "&Valg" { + MENUITEM "&Nytt", IDM_NEW + MENUITEM SEPARATOR + MENUITEM "&Merk spørsmål", IDM_MARKQ + MENUITEM SEPARATOR + MENUITEM "&Nybegynner", IDM_BEGINNER + MENUITEM "&Anvansert", IDM_ADVANCED + MENUITEM "&Ekspert", IDM_EXPERT + MENUITEM "&Egendefinert", IDM_CUSTOM + MENUITEM SEPARATOR + MENUITEM "A&vslutt", IDM_EXIT + } + POPUP "&Informasjon" { + MENUITEM "&Beste tider", IDM_TIMES + MENUITEM "&Om", IDM_ABOUT + } +} + +DLG_TIMES DIALOG DISCARDABLE 0, 0, 160, 80 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "Beste tider" +{ + GROUPBOX "Beste tider", IDNONE, 10, 10, 140, 45 + LTEXT "Nybegynner", IDNONE, 20, 20, 40, 8 + LTEXT "Anvansert", IDNONE, 20, 30, 40, 8 + LTEXT "Ekspert", IDNONE, 20, 40, 40, 8 + LTEXT "999", IDC_TIME1, 70, 20, 15, 8 + LTEXT "999", IDC_TIME2, 70, 30, 15, 8 + LTEXT "999", IDC_TIME3, 70, 40, 15, 8 + LTEXT "", IDC_NAME1, 90, 20, 55, 8 + LTEXT "", IDC_NAME2, 90, 30, 55, 8 + LTEXT "", IDC_NAME3, 90, 40, 55, 8 + DEFPUSHBUTTON "OK", IDOK, 55, 60, 50, 15 +} + +DLG_CONGRATS DIALOG DISCARDABLE 0, 0, 160, 60 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "Congratulations!" +{ + LTEXT "Skriv inn navnet ditt", IDIGNORE, 10, 10, 150, 10 + EDITTEXT IDC_EDITNAME, 25, 20, 110, 12 + DEFPUSHBUTTON "Ok", IDOK, 60, 40, 40, 15 +} + +DLG_CUSTOM DIALOG DISCARDABLE 0, 0, 100, 100 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "Egendefinert spill" +{ + LTEXT "Høyde", IDNONE, 5, 5, 30, 10 + LTEXT "Bredde", IDNONE, 5, 35, 30, 10 + LTEXT "Miner", IDNONE, 5, 65, 30, 10 + EDITTEXT IDC_EDITROWS, 5, 15, 20, 12, ES_NUMBER + EDITTEXT IDC_EDITCOLS, 5, 45, 20, 12, ES_NUMBER + EDITTEXT IDC_EDITMINES, 5, 75, 20, 12, ES_NUMBER + DEFPUSHBUTTON "Ok", IDOK, 40, 30, 50, 15 + PUSHBUTTON "Avbryt", IDCANCEL, 40, 50, 50, 15 +} + +DLG_ABOUT DIALOG DISCARDABLE 0, 0, 145, 80 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "Om" +{ + LTEXT "Minesveiper", IDNONE, 10, 10, 35, 10 + LTEXT "Copyright 2000, Joshua Thielen", IDNONE, 35, 25, 100, 10 + LTEXT "under Wine lisensen", IDNONE, 35, 35, 100, 10 + ICON "Minesveiper", IDNONE, 10, 25, 20, 20 + DEFPUSHBUTTON "Ok", IDOK, 50, 60, 55, 15 +} diff --git a/reactos/base/applications/games/winemine/Uk.rc b/reactos/base/applications/games/winemine/Uk.rc new file mode 100644 index 00000000000..020cd37cbba --- /dev/null +++ b/reactos/base/applications/games/winemine/Uk.rc @@ -0,0 +1,91 @@ +/* + * PROJECT: WineMine + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/games/winemine/Uk.rc + * PURPOSE: Ukraianian Language File for WineMine + * TRANSLATOR: Artem Reznikov + */ + +#include "resource.h" + +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT + +STRINGTABLE { + IDS_APPNAME, "Ñàïåð" + +} + +MENU_WINEMINE MENU DISCARDABLE +{ + POPUP "&Îïö³¿" { + MENUITEM "&Íîâà", IDM_NEW + MENUITEM SEPARATOR + MENUITEM "&̳òêè (?)", IDM_MARKQ + MENUITEM SEPARATOR + MENUITEM "&Ïî÷àòê³âåöü", IDM_BEGINNER + MENUITEM "&Ëþáèòåëü", IDM_ADVANCED + MENUITEM "&Åêñïåðò", IDM_EXPERT + MENUITEM "&Îñîáëèâà", IDM_CUSTOM + MENUITEM SEPARATOR + MENUITEM "Â&èõ³ä", IDM_EXIT + } + POPUP "&²íôîðìàö³ÿ" { + MENUITEM "&Êðàù³ ÷àñè", IDM_TIMES + MENUITEM "&Ïðî", IDM_ABOUT + } +} + +DLG_TIMES DIALOG DISCARDABLE 0, 0, 160, 80 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "Êðàù³ ÷àñè" +{ + GROUPBOX "Êðàù³ ÷àñè", IDNONE, 10, 10, 140, 45 + LTEXT "Ïî÷àòê³âåöü", IDNONE, 20, 20, 40, 8 + LTEXT "Ëþáèòåëü", IDNONE, 20, 30, 40, 8 + LTEXT "Åêñïåðò", IDNONE, 20, 40, 40, 8 + LTEXT "999", IDC_TIME1, 70, 20, 15, 8 + LTEXT "999", IDC_TIME2, 70, 30, 15, 8 + LTEXT "999", IDC_TIME3, 70, 40, 15, 8 + LTEXT "", IDC_NAME1, 90, 20, 55, 8 + LTEXT "", IDC_NAME2, 90, 30, 55, 8 + LTEXT "", IDC_NAME3, 90, 40, 55, 8 + DEFPUSHBUTTON "OK", IDOK, 55, 60, 50, 15 +} + +DLG_CONGRATS DIALOG DISCARDABLE 0, 0, 160, 60 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "³òàííÿ!" +{ + LTEXT "Ââåä³òü Âàøå ³ì'ÿ", IDIGNORE, 10, 10, 150, 10 + EDITTEXT IDC_EDITNAME, 25, 20, 110, 12 + DEFPUSHBUTTON "OK", IDOK, 60, 40, 40, 15 +} + +DLG_CUSTOM DIALOG DISCARDABLE 0, 0, 100, 100 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "Îñîáëèâà ãðà" +{ + LTEXT "Âèñîòà", IDNONE, 5, 5, 30, 10 + LTEXT "Øèðèíà", IDNONE, 5, 35, 30, 10 + LTEXT "̳í", IDNONE, 5, 65, 30, 10 + EDITTEXT IDC_EDITROWS, 5, 15, 20, 12, ES_NUMBER + EDITTEXT IDC_EDITCOLS, 5, 45, 20, 12, ES_NUMBER + EDITTEXT IDC_EDITMINES, 5, 75, 20, 12, ES_NUMBER + DEFPUSHBUTTON "OK", IDOK, 40, 30, 50, 15 + PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 40, 50, 50, 15 +} + +DLG_ABOUT DIALOG DISCARDABLE 0, 0, 145, 80 +STYLE DS_MODALFRAME | DS_3DLOOK | + WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP +CAPTION "About" +{ + LTEXT "Ñàïåð", IDNONE, 10, 10, 35, 10 + LTEXT "Copyright 2000, Joshua Thielen", IDNONE, 35, 25, 100, 10 + LTEXT "ïî ë³öåí糿 Wine", IDNONE, 35, 35, 100, 10 + ICON "WINEMINE", IDNONE, 10, 25, 20, 20 + DEFPUSHBUTTON "OK", IDOK, 50, 60, 55, 15 +} diff --git a/reactos/base/applications/games/winemine/main.c b/reactos/base/applications/games/winemine/main.c index 61916920c3b..4954ba37abe 100644 --- a/reactos/base/applications/games/winemine/main.c +++ b/reactos/base/applications/games/winemine/main.c @@ -58,7 +58,7 @@ int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdline, int cmd wc.hInstance = hInst; wc.hIcon = LoadIcon( hInst, appname ); wc.hCursor = LoadCursor( NULL_HANDLE, (LPCTSTR)IDI_APPLICATION ); - wc.hbrBackground = (HBRUSH) GetStockObject( BLACK_BRUSH ); + wc.hbrBackground = (HBRUSH) GetStockObject( LTGRAY_BRUSH ); wc.lpszMenuName = "MENU_WINEMINE"; wc.lpszClassName = appname; @@ -519,14 +519,14 @@ void CreateBoard( BOARD *p_board ) top = BOARD_HMARGIN; right = left + LED_WIDTH * 3; bottom = top + LED_HEIGHT; - SetRect( &p_board->timer_rect, left, top, right, bottom ); + SetRect( &p_board->counter_rect, left, top, right, bottom ); /* setting the counter rectangle boundary */ left = p_board->width - BOARD_WMARGIN - LED_WIDTH * 3; top = BOARD_HMARGIN; right = p_board->width - BOARD_WMARGIN; bottom = top + LED_HEIGHT; - SetRect( &p_board->counter_rect, left, top, right, bottom ); + SetRect( &p_board->timer_rect, left, top, right, bottom ); p_board->status = WAITING; p_board->face_bmp = SMILE_BMP; @@ -723,9 +723,9 @@ void DrawLeds( HDC hdc, HDC hMemDC, BOARD *p_board, int number, int x, int y ) } /* use unlit led if not playing */ - if( p_board->status == WAITING ) + /* if( p_board->status == WAITING ) for( i = 0; i < 3; i++ ) - led[i] = 11; + led[i] = 11;*/ hOldObj = SelectObject (hMemDC, p_board->hLedsBMP); @@ -766,7 +766,7 @@ void DrawBoard( HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board ) { RECT tmp_rect; - if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->counter_rect ) ) + if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->counter_rect) ) DrawLeds( hdc, hMemDC, p_board, p_board->mines - p_board->num_flags, p_board->counter_rect.left, p_board->counter_rect.top ); @@ -774,7 +774,7 @@ void DrawBoard( HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board ) if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->timer_rect ) ) DrawLeds( hdc, hMemDC, p_board, p_board->time, p_board->timer_rect.left, - p_board->timer_rect.top ); + p_board->timer_rect.top); if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->face_rect ) ) DrawFace( hdc, hMemDC, p_board ); diff --git a/reactos/base/applications/games/winemine/rc/faces.bmp b/reactos/base/applications/games/winemine/rc/faces.bmp index 77f20f44115..0d6b1c02161 100644 Binary files a/reactos/base/applications/games/winemine/rc/faces.bmp and b/reactos/base/applications/games/winemine/rc/faces.bmp differ diff --git a/reactos/base/applications/games/winemine/rc/leds.bmp b/reactos/base/applications/games/winemine/rc/leds.bmp index 5473cc3569b..ceb5f649268 100644 Binary files a/reactos/base/applications/games/winemine/rc/leds.bmp and b/reactos/base/applications/games/winemine/rc/leds.bmp differ diff --git a/reactos/base/applications/games/winemine/rc/mines.bmp b/reactos/base/applications/games/winemine/rc/mines.bmp index ff234cbbe0f..f67bb519c81 100644 Binary files a/reactos/base/applications/games/winemine/rc/mines.bmp and b/reactos/base/applications/games/winemine/rc/mines.bmp differ diff --git a/reactos/base/applications/games/winemine/winemine.rbuild b/reactos/base/applications/games/winemine/winemine.rbuild index 1ed457d6ea6..18893df9270 100644 --- a/reactos/base/applications/games/winemine/winemine.rbuild +++ b/reactos/base/applications/games/winemine/winemine.rbuild @@ -6,7 +6,9 @@ 0x0501 0x0501 kernel32 - gdi32 + gdi32 + user32 + advapi32 main.c dialog.c winemine.rc diff --git a/reactos/base/applications/games/winemine/winemine.rc b/reactos/base/applications/games/winemine/winemine.rc index 78e5ebf1f6e..0df8f98f762 100644 --- a/reactos/base/applications/games/winemine/winemine.rc +++ b/reactos/base/applications/games/winemine/winemine.rc @@ -26,7 +26,8 @@ #include "Fr.rc" #include "Pl.rc" #include "Nl.rc" - +#include "Uk.rc" +#include "No.rc" IDI_WINEMINE ICON MOVEABLE "rc/winemine.ico" diff --git a/reactos/base/applications/getfirefox/getfirefox.rbuild b/reactos/base/applications/getfirefox/getfirefox.rbuild index ce493e8eb70..b0c276d6592 100644 --- a/reactos/base/applications/getfirefox/getfirefox.rbuild +++ b/reactos/base/applications/getfirefox/getfirefox.rbuild @@ -1,19 +1,21 @@ - . - - - - 0x0501 - . + + + + 0x0501 + -/* - * Note: this icon is the "default logo" referenced here: - * http://www.mozilla.org/foundation/trademarks/faq.html (under "What are the - * Mozilla Trademarks and Logos?"). Don't use the official Firefox logo as it - * is trademarked. - */ -1 ICON "firefox.ico" - -#include "De.rc" -#include "En.rc" -#include "Fr.rc" -#include "Hu.rc" -#include "Nl.rc" -#include "Ru.rc" -#include "Sv.rc" -#include "Uk.rc" +#include "rsrc.rc" + + + diff --git a/reactos/base/applications/getfirefox/De.rc b/reactos/base/applications/getfirefox/lang/De.rc similarity index 100% rename from reactos/base/applications/getfirefox/De.rc rename to reactos/base/applications/getfirefox/lang/De.rc diff --git a/reactos/base/applications/getfirefox/En.rc b/reactos/base/applications/getfirefox/lang/En.rc similarity index 100% rename from reactos/base/applications/getfirefox/En.rc rename to reactos/base/applications/getfirefox/lang/En.rc diff --git a/reactos/base/applications/getfirefox/Fr.rc b/reactos/base/applications/getfirefox/lang/Fr.rc similarity index 100% rename from reactos/base/applications/getfirefox/Fr.rc rename to reactos/base/applications/getfirefox/lang/Fr.rc diff --git a/reactos/base/applications/getfirefox/Hu.rc b/reactos/base/applications/getfirefox/lang/Hu.rc similarity index 95% rename from reactos/base/applications/getfirefox/Hu.rc rename to reactos/base/applications/getfirefox/lang/Hu.rc index 0324218b810..10b784dd82a 100644 --- a/reactos/base/applications/getfirefox/Hu.rc +++ b/reactos/base/applications/getfirefox/lang/Hu.rc @@ -25,7 +25,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU diff --git a/reactos/base/applications/getfirefox/Nl.rc b/reactos/base/applications/getfirefox/lang/Nl.rc similarity index 100% rename from reactos/base/applications/getfirefox/Nl.rc rename to reactos/base/applications/getfirefox/lang/Nl.rc diff --git a/reactos/base/applications/getfirefox/lang/No.rc b/reactos/base/applications/getfirefox/lang/No.rc new file mode 100644 index 00000000000..8a8c4e0ae3e --- /dev/null +++ b/reactos/base/applications/getfirefox/lang/No.rc @@ -0,0 +1,44 @@ +/* + * PROJECT: ReactOS utilities + * LICENSE: GPL - See COPYING in the top level directory + * FILE: apps/utils/getfirefox/En.rc + * PURPOSE: Norwegian resources + * COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers + * Copyright 2005 Ge van Geldorp (gvg@reactos.org) + */ +/* + * Based on Wine dlls/shdocvw/En.rc + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "laster ned Firefox" +FONT 8, "MS Shell Dlg" +{ + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + CHECKBOX "Fjern 'Last Ned Firefox' fra startmenyen", IDC_REMOVE, + 10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +} + +STRINGTABLE +BEGIN + IDS_START_MENU_NAME "Få Firefox" +END diff --git a/reactos/base/applications/getfirefox/Ru.rc b/reactos/base/applications/getfirefox/lang/Ru.rc similarity index 94% rename from reactos/base/applications/getfirefox/Ru.rc rename to reactos/base/applications/getfirefox/lang/Ru.rc index 877cc1b6158..00d3c197f0e 100644 --- a/reactos/base/applications/getfirefox/Ru.rc +++ b/reactos/base/applications/getfirefox/lang/Ru.rc @@ -1,4 +1,4 @@ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU diff --git a/reactos/base/applications/getfirefox/Sv.rc b/reactos/base/applications/getfirefox/lang/Sv.rc similarity index 100% rename from reactos/base/applications/getfirefox/Sv.rc rename to reactos/base/applications/getfirefox/lang/Sv.rc diff --git a/reactos/base/applications/getfirefox/Uk.rc b/reactos/base/applications/getfirefox/lang/Uk.rc similarity index 100% rename from reactos/base/applications/getfirefox/Uk.rc rename to reactos/base/applications/getfirefox/lang/Uk.rc diff --git a/reactos/base/applications/getfirefox/rsrc.rc b/reactos/base/applications/getfirefox/rsrc.rc new file mode 100644 index 00000000000..48ceb931521 --- /dev/null +++ b/reactos/base/applications/getfirefox/rsrc.rc @@ -0,0 +1,30 @@ + + +#include +#include "resource.h" + +/* + * Note: this icon is the "default logo" referenced here: + * http://www.mozilla.org/foundation/trademarks/faq.html (under "What are the + * Mozilla Trademarks and Logos?"). Don't use the official Firefox logo as it + * is trademarked. + */ +1 ICON "firefox.ico" + + +/* define language neutral resources */ + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +/* include localised resources */ +#include "lang/De.rc" +#include "lang/En.rc" +#include "lang/Fr.rc" +#include "lang/Hu.rc" +#include "lang/Nl.rc" +#include "lang/No.rc" +#include "lang/Ru.rc" +#include "lang/Sv.rc" +#include "lang/Uk.rc" + + diff --git a/reactos/base/applications/ibrowser/Makefile-MinGW b/reactos/base/applications/ibrowser/Makefile-MinGW index cd1d90f5821..8d71521635c 100644 --- a/reactos/base/applications/ibrowser/Makefile-MinGW +++ b/reactos/base/applications/ibrowser/Makefile-MinGW @@ -50,13 +50,14 @@ OBJECTS = \ webchild.o \ mainframe.o \ favorites.o \ + xs-native.o \ xmlstorage.o LIBS = gdi32 comctl32 shell32 ole32 uuid oleaut32 all: $(TARGET) -$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) libexpat.dll +$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS)) ibrowser$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico diff --git a/reactos/base/applications/ibrowser/Makefile-precomp b/reactos/base/applications/ibrowser/Makefile-precomp index 08b7f253a4f..47b5f305501 100644 --- a/reactos/base/applications/ibrowser/Makefile-precomp +++ b/reactos/base/applications/ibrowser/Makefile-precomp @@ -52,6 +52,7 @@ OBJECTS = \ webchild.o \ mainframe.o \ favorites.o \ + xs-native.o \ xmlstorage.o LIBS = gdi32 comctl32 shell32 ole32 oleaut32 uuid @@ -61,7 +62,7 @@ all: precomp.h.gch $(TARGET) precomp.h.gch: *.h utility/*.h $(CXX) $(CFLAGS) precomp.h -$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) libexpat.dll +$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS)) ibrowser$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico diff --git a/reactos/base/applications/ibrowser/No.rc b/reactos/base/applications/ibrowser/No.rc new file mode 100644 index 00000000000..2ad20e5a9bf --- /dev/null +++ b/reactos/base/applications/ibrowser/No.rc @@ -0,0 +1,161 @@ +//Microsoft Developer Studio generated resource script. +// +#include "ibrowser_intres.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// German (Germany) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) +#ifdef _WIN32 +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "ibrowser_intres.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include \0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#ifndef _ROS_\r\n" + "LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NO\r\n" + "STRINGTABLE DISCARDABLE \r\n" + "BEGIN\r\n" + "#ifdef UNICODE\r\n" + "IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n" + "#else\r\n" + "IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n" + "#endif\r\n" + "END\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // German (Germany) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Norwegian (N.O.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDM_SDIFRAME MENU PRELOAD DISCARDABLE +BEGIN + POPUP "&Fil" + BEGIN + MENUITEM "&Åpne", ID_FILE_OPEN + MENUITEM "A&vslutt", ID_FILE_EXIT + END + POPUP "&Vis" + BEGIN + MENUITEM "&Verktøylinje", ID_VIEW_TOOL_BAR + MENUITEM "S&idelinje", ID_VIEW_SIDE_BAR, GRAYED + MENUITEM "&Statuslinje", ID_VIEW_STATUSBAR + MENUITEM SEPARATOR + MENUITEM "&Oppdater\tF5", ID_REFRESH + MENUITEM "&Fullskjerm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN + END + POPUP "&Hjelp" + BEGIN + MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ + MENUITEM "&Om IBrowser...", ID_ABOUT_IBROWSER + MENUITEM "Om &OS...", ID_ABOUT_WINDOWS + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Om ReactOS Internett nettleser" +FONT 10, "MS Sans Serif" +BEGIN + LTEXT "ReactOS Internett nettleser",IDC_ROS_IBROWSER,91,13,104,11 + LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8 + LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8 + LTEXT "",IDC_WIN_VERSION,91,58,98,22 + LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129, + 8 + CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP, + 154,90,38,12 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TITLE "Reactos Internett nettleser" + IDS_EMPTY "(TOM)" +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ABOUT_IBROWSER "&Om..." +END + +#endif // NORWEGIAN (N.O.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#ifndef _ROS_ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL +STRINGTABLE DISCARDABLE +BEGIN +#ifdef UNICODE +IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s" +#else +IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s" +#endif +END +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/reactos/base/applications/ibrowser/expat-license.txt b/reactos/base/applications/ibrowser/expat-license.txt deleted file mode 100644 index 5c5d524a1f8..00000000000 --- a/reactos/base/applications/ibrowser/expat-license.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - and Clark Cooper -Copyright (c) 2001, 2002, 2003 Expat maintainers. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/reactos/base/applications/ibrowser/favorites.cpp b/reactos/base/applications/ibrowser/favorites.cpp index 47f7948b688..60843a411ab 100644 --- a/reactos/base/applications/ibrowser/favorites.cpp +++ b/reactos/base/applications/ibrowser/favorites.cpp @@ -429,10 +429,10 @@ bool Favorites::read(LPCTSTR path) XMLDoc xbel; if (!xbel.read(path)) - if (xbel._last_error == XML_ERROR_NO_ELEMENTS) +/*@@ if (xbel._last_error == XML_ERROR_NO_ELEMENTS) return false; - else - MessageBox(0/*@@g_Globals._hwndDesktop*/, String(xbel._last_error_msg.c_str()), + else */ + MessageBox(0/*@@g_Globals._hwndDesktop*/, xbel._errors.str(), TEXT("ROS Explorer - reading bookmark file"), MB_OK); const_XMLPos pos(&xbel); @@ -457,9 +457,9 @@ void Favorites::write(LPCTSTR path) const super::write(pos); pos.back(); - xbel._header._doctype = ""; + xbel._format._doctype._name = "xbel"; + xbel._format._doctype._public = "//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML"; + xbel._format._doctype._system = "http://www.python.org/topics/xml/dtds/xbel-1.0.dtd"; xbel.write(path); } diff --git a/reactos/base/applications/ibrowser/ibrowser.dsp b/reactos/base/applications/ibrowser/ibrowser.dsp index 902a9901ded..6de0920891c 100644 --- a/reactos/base/applications/ibrowser/ibrowser.dsp +++ b/reactos/base/applications/ibrowser/ibrowser.dsp @@ -28,7 +28,7 @@ CFG=IBROWSER - WIN32 DEBUG # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" -CPP=cl.exe +CPP=cl.cmd RSC=rc.exe !IF "$(CFG)" == "ibrowser - Win32 Release" @@ -199,6 +199,10 @@ SOURCE=.\utility\xmlstorage.cpp SOURCE=.\utility\xmlstorage.h # End Source File +# Begin Source File + +SOURCE=".\utility\xs-native.cpp" +# End Source File # End Group # Begin Group "resources" @@ -263,10 +267,6 @@ SOURCE=.\ibrowser_intres.rc # End Source File # Begin Source File -SOURCE=.\res\iexplore.ico -# End Source File -# Begin Source File - SOURCE=.\Ja.rc # PROP Exclude_From_Build 1 # End Source File diff --git a/reactos/base/applications/ibrowser/ibrowser.rbuild b/reactos/base/applications/ibrowser/ibrowser.rbuild index a90eb16fad6..38c1105f2c2 100644 --- a/reactos/base/applications/ibrowser/ibrowser.rbuild +++ b/reactos/base/applications/ibrowser/ibrowser.rbuild @@ -1,9 +1,8 @@ - + -fexceptions . - include/expat @@ -18,12 +17,12 @@ ole32 oleaut32 shell32 - expat precomp.h utility.cpp window.cpp xmlstorage.cpp + xs-native.cpp ibrowser.cpp favorites.cpp diff --git a/reactos/base/applications/ibrowser/ibrowser_intres.rc b/reactos/base/applications/ibrowser/ibrowser_intres.rc index d4432e29fb3..5911d099402 100644 --- a/reactos/base/applications/ibrowser/ibrowser_intres.rc +++ b/reactos/base/applications/ibrowser/ibrowser_intres.rc @@ -35,9 +35,8 @@ IDB_TOOLBAR BITMAP DISCARDABLE "res/toolbar.bmp" IDA_IBROWSER ACCELERATORS DISCARDABLE BEGIN - "X", ID_FILE_EXIT, VIRTKEY, ALT, NOINVERT - "S", ID_VIEW_FULLSCREEN, VIRTKEY, SHIFT, CONTROL, - NOINVERT + 120, ID_FILE_EXIT, ASCII, ALT // "X" + 115, ID_VIEW_FULLSCREEN, ASCII, SHIFT, CONTROL // "S" END @@ -66,7 +65,8 @@ BEGIN "#include ""Sv.rc""\r\n" "#include ""Hu.rc""\r\n" "#include ""Ro.rc""\r\n" - "#include ""Nl.rc""\r\n" + "#include ""Nl.rc""\r\n" + "#include ""No.rc""\r\n" "#include ""Ja.rc""\0" END @@ -104,6 +104,7 @@ IDI_IBROWSER ICON DISCARDABLE "res/ibrowser.ico" #include "Ro.rc" #include "Nl.rc" #include "Ja.rc" +#include "No.rc" ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED diff --git a/reactos/base/applications/ibrowser/make_ibrowser.dsp b/reactos/base/applications/ibrowser/make_ibrowser.dsp index 64850314d87..46f54a75a6c 100644 --- a/reactos/base/applications/ibrowser/make_ibrowser.dsp +++ b/reactos/base/applications/ibrowser/make_ibrowser.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) External Target" 0x0106 -CFG=make_ibrowser - Win32 bjam +CFG=make_ibrowser - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,7 +13,7 @@ CFG=make_ibrowser - Win32 bjam !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "make_ibrowser.mak" CFG="make_ibrowser - Win32 bjam" +!MESSAGE NMAKE /f "make_ibrowser.mak" CFG="make_ibrowser - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -43,7 +43,7 @@ CFG=make_ibrowser - Win32 bjam # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" -# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-precomp UNICODE=0" +# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile-precomp UNICODE=0" # PROP Rebuild_Opt "clean all" # PROP Target_File "ibrowser.exe" # PROP Bsc_Name "" @@ -64,7 +64,7 @@ CFG=make_ibrowser - Win32 bjam # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" -# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-precomp UNICODE=0 DEBUG=1" +# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile-precomp UNICODE=0 DEBUG=1" # PROP Rebuild_Opt "clean all" # PROP Target_File "ibrowser.exe" # PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=0 DEBUG=1" @@ -85,7 +85,7 @@ CFG=make_ibrowser - Win32 bjam # PROP Use_Debug_Libraries 1 # PROP Output_Dir "UDebug" # PROP Intermediate_Dir "UDebug" -# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=1 DEBUG=1" +# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile.MinGW UNICODE=1 DEBUG=1" # PROP Rebuild_Opt "clean all" # PROP Target_File "ibrowser.exe" # PROP Bsc_Name "" @@ -106,7 +106,7 @@ CFG=make_ibrowser - Win32 bjam # PROP Use_Debug_Libraries 0 # PROP Output_Dir "URelease" # PROP Intermediate_Dir "URelease" -# PROP Cmd_Line "msdevfilt -gcc make -f Makefile-precomp UNICODE=1" +# PROP Cmd_Line "msdevfilt -gcc mingw32-make -f Makefile-precomp UNICODE=1" # PROP Rebuild_Opt "clean all" # PROP Target_File "ibrowser.exe" # PROP Bsc_Name "" @@ -137,10 +137,6 @@ SOURCE=.\ibrowser.rbuild # End Source File # Begin Source File -SOURCE=.\Makefile -# End Source File -# Begin Source File - SOURCE=".\Makefile-MinGW" # End Source File # Begin Source File diff --git a/reactos/base/applications/ibrowser/utility/xmlstorage.cpp b/reactos/base/applications/ibrowser/utility/xmlstorage.cpp index 0a2dc79d8a7..1eb5b6e02c1 100644 --- a/reactos/base/applications/ibrowser/utility/xmlstorage.cpp +++ b/reactos/base/applications/ibrowser/utility/xmlstorage.cpp @@ -4,7 +4,7 @@ // // xmlstorage.cpp // - // Copyright (c) 2004, 2005 Martin Fuchs + // Copyright (c) 2004, 2005, 2006 Martin Fuchs // @@ -36,22 +36,29 @@ */ +#ifndef XS_NO_COMMENT +#define XS_NO_COMMENT // no #pragma comment(lib, ...) statements in .lib files +#endif + //#include "xmlstorage.h" #include - // work around GCC's wide string constant bug -#ifdef __GNUC__ -const LPCXSSTR XMLStorage::XS_TRUE = XS_TEXT("true"); -const LPCXSSTR XMLStorage::XS_FALSE = XS_TEXT("false"); -const LPCXSSTR XMLStorage::XS_NUMBERFMT = XS_TEXT("%d"); -#endif - - namespace XMLStorage { -static std::string unescape(const char* s, char b='"', char e='"') + // work around GCC's wide string constant bug +#ifdef __GNUC__ +const LPCXSSTR XS_EMPTY = XS_EMPTY_STR; +const LPCXSSTR XS_TRUE = XS_TRUE_STR; +const LPCXSSTR XS_FALSE = XS_FALSE_STR; +const LPCXSSTR XS_INTFMT = XS_INTFMT_STR; +const LPCXSSTR XS_FLOATFMT = XS_FLOATFMT_STR; +#endif + + + /// remove escape characters from zero terminated string +static std::string unescape(const char* s, char b, char e) { const char* end = s + strlen(s); @@ -68,7 +75,13 @@ static std::string unescape(const char* s, char b='"', char e='"') return std::string(s, end-s); } -static std::string unescape(const char* s, int l, char b='"', char e='"') +inline std::string unescape(const char* s) +{ + return unescape(s, '"', '"'); +} + + /// remove escape characters from string with specified length +static std::string unescape(const char* s, size_t l, char b, char e) { const char* end = s + l; @@ -85,6 +98,11 @@ static std::string unescape(const char* s, int l, char b='"', char e='"') return std::string(s, end-s); } +inline std::string unescape(const char* s, size_t l) +{ + return unescape(s, l, '"', '"'); +} + /// move XPath like to position in XML tree bool XMLPos::go(const char* path) @@ -137,7 +155,7 @@ const XMLNode* XMLNode::find_relative(const char* path) const if (slash == path) return NULL; - int l = slash? slash-path: strlen(path); + size_t l = slash? slash-path: strlen(path); std::string comp(path, l); path += l; @@ -198,7 +216,7 @@ XMLNode* XMLNode::create_relative(const char* path) if (slash == path) return NULL; - int l = slash? slash-path: strlen(path); + size_t l = slash? slash-path: strlen(path); std::string comp(path, l); path += l; @@ -259,239 +277,113 @@ XMLNode* XMLNode::create_relative(const char* path) } - /// read XML stream into XML tree below _pos -XML_Status XMLReaderBase::read() -{ - XML_Status status = XML_STATUS_OK; - - while(status == XML_STATUS_OK) { - char* buffer = (char*) XML_GetBuffer(_parser, BUFFER_LEN); - - int l = read_buffer(buffer, BUFFER_LEN); - if (l < 0) - break; - - status = XML_ParseBuffer(_parser, l, false); - } - - if (status != XML_STATUS_ERROR) - status = XML_ParseBuffer(_parser, 0, true); - - if (_pos->_children.empty()) - _pos->_trailing.append(_content); - else - _pos->_children.back()->_trailing.append(_content); - - _content.erase(); - - return status; -} - - - /// store XML version and encoding into XML reader -void XMLCALL XMLReaderBase::XML_XmlDeclHandler(void* userData, const XML_Char* version, const XML_Char* encoding, int standalone) -{ - XMLReaderBase* pReader = (XMLReaderBase*) userData; - - if (version) - pReader->_xml_version = version; - - if (encoding) - pReader->_encoding = encoding; -} - - /// notifications about XML start tag -void XMLCALL XMLReaderBase::XML_StartElementHandler(void* userData, const XML_Char* name, const XML_Char** atts) -{ - XMLReaderBase* pReader = (XMLReaderBase*) userData; - XMLPos& pos = pReader->_pos; - - // search for end of first line - const char* s = pReader->_content.c_str(); - const char* p = s; - const char* e = p + pReader->_content.length(); - - for(; p_children.empty()) { // no children in last node? - if (pReader->_last_tag == TAG_START) - pos->_content.append(s, p-s); - else if (pReader->_last_tag == TAG_END) - pos->_trailing.append(s, p-s); - // else TAG_NONE -> don't store white space in root node - } else - pos->_children.back()->_trailing.append(s, p-s); - - std::string leading; - - if (p != e) - leading.assign(p, e-p); - - XMLNode* node = new XMLNode(String_from_XML_Char(name), leading); - - pos.add_down(node); - - while(*atts) { - const XML_Char* attr_name = *atts++; - const XML_Char* attr_value = *atts++; - - (*node)[String_from_XML_Char(attr_name)] = String_from_XML_Char(attr_value); - } - - pReader->_last_tag = TAG_START; - pReader->_content.erase(); -} - - /// notifications about XML end tag -void XMLCALL XMLReaderBase::XML_EndElementHandler(void* userData, const XML_Char* name) -{ - XMLReaderBase* pReader = (XMLReaderBase*) userData; - XMLPos& pos = pReader->_pos; - - // search for end of first line - const char* s = pReader->_content.c_str(); - const char* p = s; - const char* e = p + pReader->_content.length(); - - for(; p_children.empty()) // no children in current node? - pos->_content.append(s, p-s); - else - if (pReader->_last_tag == TAG_START) - pos->_content.append(s, p-s); - else - pos->_children.back()->_trailing.append(s, p-s); - - if (p != e) - pos->_end_leading.assign(p, e-p); - - pos.back(); - - pReader->_last_tag = TAG_END; - pReader->_content.erase(); -} - - /// store content, white space and comments -void XMLCALL XMLReaderBase::XML_DefaultHandler(void* userData, const XML_Char* s, int len) -{ - XMLReaderBase* pReader = (XMLReaderBase*) userData; - - pReader->_content.append(s, len); -} - - -std::string XMLReaderBase::get_error_string() const -{ - XML_Error error = XML_GetErrorCode(_parser); - - switch(error) { - case XML_ERROR_NONE: return "XML_ERROR_NONE"; - case XML_ERROR_NO_MEMORY: return "XML_ERROR_NO_MEMORY"; - case XML_ERROR_SYNTAX: return "XML_ERROR_SYNTAX"; - case XML_ERROR_NO_ELEMENTS: return "XML_ERROR_NO_ELEMENTS"; - case XML_ERROR_INVALID_TOKEN: return "XML_ERROR_INVALID_TOKEN"; - case XML_ERROR_UNCLOSED_TOKEN: return "XML_ERROR_UNCLOSED_TOKEN"; - case XML_ERROR_PARTIAL_CHAR: return "XML_ERROR_PARTIAL_CHAR"; - case XML_ERROR_TAG_MISMATCH: return "XML_ERROR_TAG_MISMATCH"; - case XML_ERROR_DUPLICATE_ATTRIBUTE: return "XML_ERROR_DUPLICATE_ATTRIBUTE"; - case XML_ERROR_JUNK_AFTER_DOC_ELEMENT: return "XML_ERROR_JUNK_AFTER_DOC_ELEMENT"; - case XML_ERROR_PARAM_ENTITY_REF: return "XML_ERROR_PARAM_ENTITY_REF"; - case XML_ERROR_UNDEFINED_ENTITY: return "XML_ERROR_UNDEFINED_ENTITY"; - case XML_ERROR_RECURSIVE_ENTITY_REF: return "XML_ERROR_RECURSIVE_ENTITY_REF"; - case XML_ERROR_ASYNC_ENTITY: return "XML_ERROR_ASYNC_ENTITY"; - case XML_ERROR_BAD_CHAR_REF: return "XML_ERROR_BAD_CHAR_REF"; - case XML_ERROR_BINARY_ENTITY_REF: return "XML_ERROR_BINARY_ENTITY_REF"; - case XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF: return "XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF"; - case XML_ERROR_MISPLACED_XML_PI: return "XML_ERROR_MISPLACED_XML_PI"; - case XML_ERROR_UNKNOWN_ENCODING: return "XML_ERROR_UNKNOWN_ENCODING"; - case XML_ERROR_INCORRECT_ENCODING: return "XML_ERROR_INCORRECT_ENCODING"; - case XML_ERROR_UNCLOSED_CDATA_SECTION: return "XML_ERROR_UNCLOSED_CDATA_SECTION"; - case XML_ERROR_EXTERNAL_ENTITY_HANDLING: return "XML_ERROR_EXTERNAL_ENTITY_HANDLING"; - case XML_ERROR_NOT_STANDALONE: return "XML_ERROR_NOT_STANDALONE"; - case XML_ERROR_UNEXPECTED_STATE: return "XML_ERROR_UNEXPECTED_STATE"; - case XML_ERROR_ENTITY_DECLARED_IN_PE: return "XML_ERROR_ENTITY_DECLARED_IN_PE"; - case XML_ERROR_FEATURE_REQUIRES_XML_DTD: return "XML_ERROR_FEATURE_REQUIRES_XML_DTD"; - case XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING: return "XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING"; - case XML_ERROR_UNBOUND_PREFIX: return "XML_ERROR_UNBOUND_PREFIX"; - // EXPAT version >= 1.95.8 -#if XML_MAJOR_VERSION>1 || (XML_MAJOR_VERSION==1 && XML_MINOR_VERSION>95) || (XML_MAJOR_VERSION==1 && XML_MINOR_VERSION==95 && XML_MICRO_VERSION>7) - case XML_ERROR_UNDECLARING_PREFIX: return "XML_ERROR_UNDECLARING_PREFIX"; - case XML_ERROR_INCOMPLETE_PE: return "XML_ERROR_INCOMPLETE_PE"; - case XML_ERROR_XML_DECL: return "XML_ERROR_XML_DECL"; - case XML_ERROR_TEXT_DECL: return "XML_ERROR_TEXT_DECL"; - case XML_ERROR_PUBLICID: return "XML_ERROR_PUBLICID"; - case XML_ERROR_SUSPENDED: return "XML_ERROR_SUSPENDED"; - case XML_ERROR_NOT_SUSPENDED: return "XML_ERROR_NOT_SUSPENDED"; - case XML_ERROR_ABORTED: return "XML_ERROR_ABORTED"; - case XML_ERROR_FINISHED: return "XML_ERROR_FINISHED"; - case XML_ERROR_SUSPEND_PE: return "XML_ERROR_SUSPEND_PE"; -//#endif -//#if XML_MAJOR_VERSION>=2 - /* Added in 2.0. */ - case XML_ERROR_RESERVED_PREFIX_XML: return "XML_ERROR_RESERVED_PREFIX_XML"; - case XML_ERROR_RESERVED_PREFIX_XMLNS: return "XML_ERROR_RESERVED_PREFIX_XMLNS"; - case XML_ERROR_RESERVED_NAMESPACE_URI: return "XML_ERROR_RESERVED_NAMESPACE_URI"; -#endif - } - - std::ostringstream out; - - out << "XML parser error #" << error; - - return out.str(); -} - - + /// encode XML string literals std::string EncodeXMLString(const XS_String& str) { LPCXSSTR s = str.c_str(); - LPXSSTR buffer = (LPXSSTR)alloca(5*sizeof(XS_CHAR)*XS_len(s)); // worst case. "&" - LPXSSTR o = buffer; + size_t l = XS_len(s); - for(LPCXSSTR p=s; *p; ++p) - switch(*p) { - case '&': - *o++ = '&'; *o++ = 'a'; *o++ = 'm'; *o++ = 'p'; *o++ = ';'; - break; + if (l <= BUFFER_LEN) { + LPXSSTR buffer = (LPXSSTR)alloca(6*sizeof(XS_CHAR)*XS_len(s)); // worst case """ / "'" + LPXSSTR o = buffer; - case '<': - *o++ = '&'; *o++ = 'l'; *o++ = 't'; *o++ = ';'; - break; + for(LPCXSSTR p=s; *p; ++p) + switch(*p) { + case '&': + *o++ = '&'; *o++ = 'a'; *o++ = 'm'; *o++ = 'p'; *o++ = ';'; + break; - case '>': - *o++ = '&'; *o++ = 'g'; *o++ = 't'; *o++ = ';'; - break; + case '<': + *o++ = '&'; *o++ = 'l'; *o++ = 't'; *o++ = ';'; + break; - case '"': - *o++ = '&'; *o++ = 'q'; *o++ = 'u'; *o++ = 'o'; *o++ = 't'; *o++ = ';'; - break; + case '>': + *o++ = '&'; *o++ = 'g'; *o++ = 't'; *o++ = ';'; + break; - case '\'': - *o++ = '&'; *o++ = 'a'; *o++ = 'p'; *o++ = 'o'; *o++ = 's'; *o++ = ';'; - break; + case '"': + *o++ = '&'; *o++ = 'q'; *o++ = 'u'; *o++ = 'o'; *o++ = 't'; *o++ = ';'; + break; - default: - *o++ = *p; - } + case '\'': + *o++ = '&'; *o++ = 'a'; *o++ = 'p'; *o++ = 'o'; *o++ = 's'; *o++ = ';'; + break; + + default: + if ((unsigned)*p<20 && *p!='\t' && *p!='\r' && *p!='\n') { + char b[16]; + sprintf(b, "&%d;", (unsigned)*p); + for(const char*q=b; *q; ) + *o++ = *q++; + } else + *o++ = *p; + } #ifdef XS_STRING_UTF8 - return XS_String(buffer, o-buffer); + return XS_String(buffer, o-buffer); #else - return get_utf8(buffer, o-buffer); + return get_utf8(buffer, o-buffer); #endif + } else { // l > BUFFER_LEN + // encode the whole string in a CDATA section + std::string ret = ""; + + return ret; + +/* alternative code using ostringstream (beware: quite slow) +#include + + std::ostringstream out; + + LPCXSSTR s = str.c_str(); + + for(LPCXSSTR p=s; *p; ++p) + switch(*p) { + case '&': + out << "&"; + break; + + case '<': + out << "<"; + break; + + case '>': + out << ">"; + break; + + case '"': + out << """; + break; + + case '\'': + out << "'"; + break; + + default: + if ((unsigned)*p<20 && *p!='\t' *p!='\r' && *p!='\n') + out << "&" << (unsigned)*p << ";"; + else + out << *p; + } + +#ifdef XS_STRING_UTF8 + return XS_String(out.str()); +#else + return get_utf8(out.str()); +#endif + */ + } } + /// decode XML string literals XS_String DecodeXMLString(const XS_String& str) { LPCXSSTR s = str.c_str(); @@ -517,6 +409,16 @@ XS_String DecodeXMLString(const XS_String& str) p += 5; } else *o++ = *p; + } else if (*p=='<' && !XS_nicmp(p+1,XS_TEXT("!CDATA["),7)) { + p += 9; + LPCXSSTR e = XS_strstr(p, XS_TEXT("]]>")); + if (e) { + size_t l = e - p; + memcpy(o, p, l); + o += l; + p += 3; + } else + *o++ = *p; } else *o++ = *p; @@ -546,8 +448,28 @@ void XMLNode::write_worker(std::ostream& out, int indent) const } + /// print node without any white space +void XMLNode::plain_write_worker(std::ostream& out) const +{ + out << '<' << EncodeXMLString(*this); + + for(AttributeMap::const_iterator it=_attributes.begin(); it!=_attributes.end(); ++it) + out << ' ' << EncodeXMLString(it->first) << "=\"" << EncodeXMLString(it->second) << "\""; + + if (!_children.empty()/*@@ || !_content.empty()*/) { + out << ">"; + + for(Children::const_iterator it=_children.begin(); it!=_children.end(); ++it) + (*it)->plain_write_worker(out); + + out << ""; + } else + out << "/>"; +} + + /// pretty print node with children tree to output stream -void XMLNode::pretty_write_worker(std::ostream& out, int indent) const +void XMLNode::pretty_write_worker(std::ostream& out, const XMLFormat& format, int indent) const { for(int i=indent; i--; ) out << XML_INDENT_SPACE; @@ -557,23 +479,23 @@ void XMLNode::pretty_write_worker(std::ostream& out, int indent) const for(AttributeMap::const_iterator it=_attributes.begin(); it!=_attributes.end(); ++it) out << ' ' << EncodeXMLString(it->first) << "=\"" << EncodeXMLString(it->second) << "\""; - if (!_children.empty() || !_content.empty()) { - out << ">\n"; + if (!_children.empty()/*@@ || !_content.empty()*/) { + out << '>' << format._endl; for(Children::const_iterator it=_children.begin(); it!=_children.end(); ++it) - (*it)->pretty_write_worker(out, indent+1); + (*it)->pretty_write_worker(out, format, indent+1); for(int i=indent; i--; ) out << XML_INDENT_SPACE; - out << "\n"; + out << "' << format._endl; } else - out << "/>\n"; + out << "/>" << format._endl; } /// write node with children tree to output stream using smart formating -void XMLNode::smart_write_worker(std::ostream& out, int indent) const +void XMLNode::smart_write_worker(std::ostream& out, const XMLFormat& format, int indent) const { if (_leading.empty()) for(int i=indent; i--; ) @@ -592,7 +514,7 @@ void XMLNode::smart_write_worker(std::ostream& out, int indent) const out << '>'; if (_content.empty()) - out << '\n'; + out << format._endl; else out << _content; @@ -600,7 +522,7 @@ void XMLNode::smart_write_worker(std::ostream& out, int indent) const if (it != _children.end()) { for(; it!=_children.end(); ++it) - (*it)->smart_write_worker(out, indent+1); + (*it)->smart_write_worker(out, format, indent+1); if (_end_leading.empty()) for(int i=indent; i--; ) @@ -614,10 +536,268 @@ void XMLNode::smart_write_worker(std::ostream& out, int indent) const } if (_trailing.empty()) - out << '\n'; + out << format._endl; else out << _trailing; } +std::ostream& operator<<(std::ostream& out, const XMLError& err) +{ + out << err._systemId << "(" << err._line << ") [column " << err._column << "] : " + << err._message; + + return out; +} + + +void DocType::parse(const char* p) +{ + while(isspace((unsigned char)*p)) ++p; + + const char* start = p; + while(isxmlsym(*p)) ++p; + _name.assign(start, p-start); + + while(isspace((unsigned char)*p)) ++p; + + start = p; + while(isxmlsym(*p)) ++p; + std::string keyword(p, p-start); // "PUBLIC" or "SYSTEM" + + while(isspace((unsigned char)*p)) ++p; + + if (*p=='"' || *p=='\'') { + char delim = *p; + + start = ++p; + while(*p && *p!=delim) ++p; + + if (*p == delim) + _public.assign(start, p++-start); + } else + _public.erase(); + + while(isspace((unsigned char)*p)) ++p; + + if (*p=='"' || *p=='\'') { + char delim = *p; + + start = ++p; + while(*p && *p!=delim) ++p; + + if (*p == delim) + _system.assign(start, p++-start); + } else + _system.erase(); +} + + +void XMLFormat::print_header(std::ostream& out, bool lf) const +{ + out << ""; + + if (lf) + out << _endl; + + if (!_doctype.empty()) { + out << ""; + + if (lf) + out << _endl; + } + + for(StyleSheetList::const_iterator it=_stylesheets.begin(); it!=_stylesheets.end(); ++it) { + it->print(out); + + if (lf) + out << _endl; + } + +/* if (!_additional.empty()) { + out << _additional; + + if (lf) + out << _endl; + } */ +} + +void StyleSheet::print(std::ostream& out) const +{ + out << ""; +} + + + /// return formated error message +std::string XMLError::str() const +{ + std::ostringstream out; + + out << *this; + + return out.str(); +} + + + /// return merged error strings +XS_String XMLErrorList::str() const +{ + std::ostringstream out; + + for(const_iterator it=begin(); it!=end(); ++it) + out << *it << std::endl; + + return out.str(); +} + + +void XMLReaderBase::finish_read() +{ + if (_pos->_children.empty()) + _pos->_trailing.append(_content); + else + _pos->_children.back()->_trailing.append(_content); + + _content.erase(); +} + + + /// store XML version and encoding into XML reader +void XMLReaderBase::XmlDeclHandler(const char* version, const char* encoding, int standalone) +{ + if (version) + _format._version = version; + + if (encoding) + _format._encoding = encoding; + + _format._standalone = standalone; +} + + + /// notifications about XML start tag +void XMLReaderBase::StartElementHandler(const XS_String& name, const XMLNode::AttributeMap& attributes) +{ + // search for end of first line + const char* s = _content.c_str(); + const char* p = s; + const char* e = p + _content.length(); + + for(; p_children.empty()) { // no children in last node? + if (_last_tag == TAG_START) + _pos->_content.append(s, p-s); + else if (_last_tag == TAG_END) + _pos->_trailing.append(s, p-s); + else // TAG_NONE at root node + p = s; + } else + _pos->_children.back()->_trailing.append(s, p-s); + + std::string leading; + + if (p != e) + leading.assign(p, e-p); + + XMLNode* node = new XMLNode(name, leading); + + _pos.add_down(node); + +#ifdef XMLNODE_LOCATION + node->_location = get_location(); +#endif + + node->_attributes = attributes; + + _last_tag = TAG_START; + _content.erase(); +} + + /// notifications about XML end tag +void XMLReaderBase::EndElementHandler() +{ + // search for end of first line + const char* s = _content.c_str(); + const char* p = s; + const char* e = p + _content.length(); + + for(; p_children.empty()) // no children in current node? + _pos->_content.append(s, p-s); + else + if (_last_tag == TAG_START) + _pos->_content.append(s, p-s); + else + _pos->_children.back()->_trailing.append(s, p-s); + + if (p != e) + _pos->_end_leading.assign(p, e-p); + + _pos.back(); + + _last_tag = TAG_END; + _content.erase(); +} + +#if defined(XS_USE_XERCES) || defined(XS_USE_EXPAT) + /// store content, white space and comments +void XMLReaderBase::DefaultHandler(const XML_Char* s, int len) +{ +#if defined(XML_UNICODE) || defined(XS_USE_XERCES) + _content.append(String_from_XML_Char(s, len)); +#else + _content.append(s, len); +#endif +} +#endif + + +XS_String XMLWriter::s_empty_attr; + + } // namespace XMLStorage diff --git a/reactos/base/applications/ibrowser/utility/xmlstorage.h b/reactos/base/applications/ibrowser/utility/xmlstorage.h index f3ef5cf781d..0eadea679b1 100644 --- a/reactos/base/applications/ibrowser/utility/xmlstorage.h +++ b/reactos/base/applications/ibrowser/utility/xmlstorage.h @@ -4,7 +4,7 @@ // // xmlstorage.h // - // Copyright (c) 2004, 2005 Martin Fuchs + // Copyright (c) 2004, 2005, 2006 Martin Fuchs // @@ -38,19 +38,107 @@ #ifndef _XMLSTORAGE_H + +#if _MSC_VER>=1400 +#ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES +#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 +#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1 +#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1 +#endif +#endif + + +#ifdef XS_USE_XERCES + +#ifndef UNICODE +#ifndef XS_STRING_UTF8 +#define XS_STRING_UTF8 +#endif +#endif + +#include +#include + +using XERCES_CPP_NAMESPACE_QUALIFIER Locator; +using XERCES_CPP_NAMESPACE_QUALIFIER SAXParser; +using XERCES_CPP_NAMESPACE_QUALIFIER HandlerBase; +using XERCES_CPP_NAMESPACE_QUALIFIER InputSource; +using XERCES_CPP_NAMESPACE_QUALIFIER AttributeList; +using XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException; + +typedef XMLCh XML_Char; + +#elif defined(XS_USE_EXPAT) + #include -#ifdef _MSC_VER -#pragma comment(lib, "libexpat.lib") -#pragma warning(disable: 4786) #endif -#include // for LPCTSTR +#ifdef _MSC_VER +#pragma warning(disable: 4786) + +#ifndef XS_NO_COMMENT + +#ifdef XS_USE_XERCES +#ifdef _DEBUG +#pragma comment(lib, "xerces-c_2D") +#else +#pragma comment(lib, "xerces-c_2") +#endif +#elif defined(XS_USE_EXPAT) +#ifdef XML_STATIC +#ifndef _DEBUG +#pragma comment(lib, "libexpatMT") +#endif +#else +#pragma comment(lib, "libexpat") +#endif +#endif + +#ifndef _STRING_DEFINED // _STRING_DEFINED only allowed if using xmlstorage.cpp embedded in the project +#if defined(_DEBUG) && defined(_DLL) // DEBUG version only supported with MSVCRTD +#if _MSC_VER==1400 +#pragma comment(lib, "xmlstorage-vc8d") +#else +#pragma comment(lib, "xmlstorage-vc6d") +#endif +#else +#ifdef _DLL +#if _MSC_VER==1400 +#pragma comment(lib, "xmlstorage-vc8") +#else +#pragma comment(lib, "xmlstorage-vc6") +#endif +#elif defined(_MT) +#if _MSC_VER==1400 +#pragma comment(lib, "xmlstorage-vc8t") +#else +#pragma comment(lib, "xmlstorage-vc6t") +#endif +#else + // -ML is no more supported by VS2005. +#pragma comment(lib, "xmlstorage-vc6l") +#endif +#endif +#endif // _STRING_DEFINED + +#endif // XS_NO_COMMENT + +#endif // _MSC_VER + #ifdef UNICODE +#ifndef _UNICODE #define _UNICODE #endif +#else +#ifdef _UNICODE +#define UNICODE +#endif +#endif + +#include // for LPCTSTR #include #include @@ -78,25 +166,48 @@ namespace XMLStorage { #define XS_TEXT(x) x #define LPXSSTR LPSTR #define LPCXSSTR LPCSTR +#define XS_cmp strcmp #define XS_icmp stricmp +#define XS_ncmp strncmp #define XS_nicmp strnicmp #define XS_toi atoi +#define XS_tod strtod #define XS_len strlen -#define XS_sprintf sprintf -#define XS_vsprintf vsprintf +#define XS_snprintf _snprintf +#define XS_vsnprintf _vsnprintf +#define XS_strstr strstr #else #define XS_CHAR TCHAR #define XS_TEXT(x) TEXT(x) #define LPXSSTR LPTSTR #define LPCXSSTR LPCTSTR +#define XS_cmp _tcscmp #define XS_icmp _tcsicmp +#define XS_ncmp _tcsncmp #define XS_nicmp _tcsnicmp #define XS_toi _ttoi +#define XS_tod _tcstod #define XS_len _tcslen -#define XS_sprintf _stprintf -#define XS_vsprintf _vstprintf +#define XS_snprintf _sntprintf +#define XS_vsnprintf _vsntprintf +#define XS_strstr _tcsstr #endif +#ifndef COUNTOF +#if _MSC_VER>=1400 +#define COUNTOF _countof +#else +#define COUNTOF(b) (sizeof(b)/sizeof(b[0])) +#endif +#endif + + +int inline isxmlsym(unsigned char c) +{ + return isalnum(c) || c=='_' || c=='-'; +} + + #if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8) #define XS_String String @@ -121,46 +232,46 @@ struct XS_String XS_String() {} XS_String(LPCXSSTR s) {if (s) super::assign(s);} - XS_String(LPCXSSTR s, int l) : super(s, l) {} + XS_String(LPCXSSTR s, size_t l) : super(s, l) {} XS_String(const super& other) : super(other) {} XS_String(const XS_String& other) : super(other) {} #if defined(UNICODE) && !defined(XS_STRING_UTF8) XS_String(LPCSTR s) {assign(s);} - XS_String(LPCSTR s, int l) {assign(s, l);} + XS_String(LPCSTR s, size_t l) {assign(s, l);} XS_String(const std::string& other) {assign(other.c_str());} XS_String& operator=(LPCSTR s) {assign(s); return *this;} - void assign(LPCSTR s) {if (s) {int bl=strlen(s); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, bl, b, bl));} else erase();} - void assign(LPCSTR s, int l) {if (s) {int bl=l; LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, l, b, bl));} else erase();} + void assign(LPCSTR s) {if (s) {size_t bl=strlen(s); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, bl, b, bl));} else erase();} + void assign(LPCSTR s, size_t l) {if (s) {size_t bl=l; LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, l, b, bl));} else erase();} #else XS_String(LPCWSTR s) {assign(s);} - XS_String(LPCWSTR s, int l) {assign(s, l);} + XS_String(LPCWSTR s, size_t l) {assign(s, l);} XS_String(const std::wstring& other) {assign(other.c_str());} XS_String& operator=(LPCWSTR s) {assign(s); return *this;} #ifdef XS_STRING_UTF8 void assign(const XS_String& s) {assign(s.c_str());} - void assign(LPCWSTR s) {if (s) {int bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, bl, b, bl, 0, 0));} else erase();} - void assign(LPCWSTR s, int l) {int bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, l, b, bl, 0, 0));} else erase();} + void assign(LPCWSTR s) {if (s) {size_t bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, (int)bl, b, (int)bl, 0, 0));} else erase();} + void assign(LPCWSTR s, size_t l) {size_t bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, (int)l, b, (int)bl, 0, 0));} else erase();} #else // if !UNICODE && !XS_STRING_UTF8 - void assign(LPCWSTR s) {if (s) {int bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, bl, b, bl, 0, 0));} else erase();} - void assign(LPCWSTR s, int l) {int bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, l, b, bl, 0, 0));} else erase();} + void assign(LPCWSTR s) {if (s) {size_t bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, (int)bl, b, (int)bl, 0, 0));} else erase();} + void assign(LPCWSTR s, size_t l) {size_t bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, (int)l, b, (int)bl, 0, 0));} else erase();} #endif #endif XS_String& operator=(LPCXSSTR s) {if (s) super::assign(s); else erase(); return *this;} XS_String& operator=(const super& s) {super::assign(s); return *this;} void assign(LPCXSSTR s) {super::assign(s);} - void assign(LPCXSSTR s, int l) {super::assign(s, l);} + void assign(LPCXSSTR s, size_t l) {super::assign(s, l);} operator LPCXSSTR() const {return c_str();} #ifdef XS_STRING_UTF8 - operator std::wstring() const {int bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_UTF8, 0, c_str(), bl, b, bl));} + operator std::wstring() const {size_t bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_UTF8, 0, c_str(), bl, b, bl));} #elif defined(UNICODE) - operator std::string() const {int bl=length(); LPSTR b=(LPSTR)alloca(bl); return std::string(b, WideCharToMultiByte(CP_ACP, 0, c_str(), bl, b, bl, 0, 0));} + operator std::string() const {size_t bl=length(); LPSTR b=(LPSTR)alloca(bl); return std::string(b, WideCharToMultiByte(CP_ACP, 0, c_str(), bl, b, bl, 0, 0));} #else - operator std::wstring() const {int bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_ACP, 0, c_str(), bl, b, bl));} + operator std::wstring() const {size_t bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_ACP, 0, c_str(), (int)bl, b, (int)bl));} #endif XS_String& printf(LPCXSSTR fmt, ...) @@ -169,7 +280,7 @@ struct XS_String XS_CHAR b[BUFFER_LEN]; va_start(l, fmt); - super::assign(b, XS_vsprintf(b, fmt, l)); + super::assign(b, XS_vsnprintf(b, COUNTOF(b), fmt, l)); va_end(l); return *this; @@ -179,7 +290,7 @@ struct XS_String { XS_CHAR b[BUFFER_LEN]; - super::assign(b, XS_vsprintf(b, fmt, l)); + super::assign(b, XS_vsnprintf(b, COUNTOF(b), fmt, l)); return *this; } @@ -190,7 +301,7 @@ struct XS_String XS_CHAR b[BUFFER_LEN]; va_start(l, fmt); - super::append(b, XS_vsprintf(b, fmt, l)); + super::append(b, XS_vsnprintf(b, COUNTOF(b), fmt, l)); va_end(l); return *this; @@ -200,7 +311,7 @@ struct XS_String { XS_CHAR b[BUFFER_LEN]; - super::append(b, XS_vsprintf(b, fmt, l)); + super::append(b, XS_vsnprintf(b, COUNTOF(b), fmt, l)); return *this; } @@ -211,12 +322,33 @@ struct XS_String #endif // XS_String +#define XS_EMPTY_STR XS_TEXT("") +#define XS_TRUE_STR XS_TEXT("true") +#define XS_FALSE_STR XS_TEXT("false") +#define XS_INTFMT_STR XS_TEXT("%d") +#define XS_FLOATFMT_STR XS_TEXT("%f") + + // work around GCC's wide string constant bug +#ifdef __GNUC__ +extern const LPCXSSTR XS_EMPTY; +extern const LPCXSSTR XS_TRUE; +extern const LPCXSSTR XS_FALSE; +extern const LPCXSSTR XS_INTFMT; +extern const LPCXSSTR XS_FLOATFMT; +#else +#define XS_EMPTY XS_EMPTY_STR +#define XS_TRUE XS_TRUE_STR +#define XS_FALSE XS_FALSE_STR +#define XS_INTFMT XS_INTFMT_STR +#define XS_FLOATFMT XS_FLOATFMT_STR +#endif + + #ifndef XS_STRING_UTF8 -inline void assign_utf8(XS_String& s, const char* str) + // from UTF-8 to XS internal string encoding +inline void assign_utf8(XS_String& s, const char* str, int lutf8) { - int lutf8 = strlen(str); - #ifdef UNICODE LPTSTR buffer = (LPTSTR)alloca(sizeof(TCHAR)*lutf8); int l = MultiByteToWideChar(CP_UTF8, 0, str, lutf8, buffer, lutf8); @@ -231,22 +363,44 @@ inline void assign_utf8(XS_String& s, const char* str) s.assign(buffer, l); } -inline std::string get_utf8(LPCTSTR s, int l) + // from UTF-8 to XS internal string encoding +inline void assign_utf8(XS_String& s, const char* str) +{ + assign_utf8(s, str, strlen(str)); +} + + // from XS internal string encoding to UTF-8 +inline std::string get_utf8(LPCTSTR s, size_t l) { #ifdef UNICODE - int bl=2*l; LPSTR buffer = (LPSTR)alloca(bl); - l = WideCharToMultiByte(CP_UTF8, 0, s, l, buffer, bl, 0, 0); + size_t bl=2*l; LPSTR buffer = (LPSTR)alloca(bl); + l = WideCharToMultiByte(CP_UTF8, 0, s, (int)l, buffer, (int)bl, 0, 0); #else LPWSTR wbuffer = (LPWSTR)alloca(sizeof(WCHAR)*l); - l = MultiByteToWideChar(CP_ACP, 0, s, l, wbuffer, l); + l = MultiByteToWideChar(CP_ACP, 0, s, (int)l, wbuffer, (int)l); - int bl=2*l; LPSTR buffer = (LPSTR)alloca(bl); - l = WideCharToMultiByte(CP_UTF8, 0, wbuffer, l, buffer, bl, 0, 0); + size_t bl=2*l; LPSTR buffer = (LPSTR)alloca(bl); + l = WideCharToMultiByte(CP_UTF8, 0, wbuffer, (int)l, buffer, (int)bl, 0, 0); #endif return std::string(buffer, l); } +#ifdef UNICODE + // from XS internal string encoding to UTF-8 +inline std::string get_utf8(const char* s, size_t l) +{ + LPWSTR wbuffer = (LPWSTR)alloca(sizeof(WCHAR)*l); + l = MultiByteToWideChar(CP_ACP, 0, s, (int)l, wbuffer, (int)l); + + size_t bl=2*l; LPSTR buffer = (LPSTR)alloca(bl); + l = WideCharToMultiByte(CP_UTF8, 0, wbuffer, (int)l, buffer, (int)bl, 0, 0); + + return std::string(buffer, l); +} +#endif + + // from XS internal string encoding to UTF-8 inline std::string get_utf8(const XS_String& s) { return get_utf8(s.c_str(), s.length()); @@ -265,23 +419,19 @@ typedef __gnu_cxx::stdio_filebuf STDIO_FILEBUF; typedef std::filebuf STDIO_FILEBUF; #endif - /// input file stream with ANSI/UNICODE file names -struct tifstream : public std::istream +struct FileHolder { - typedef std::istream super; - - tifstream(LPCTSTR path) - : super(&_buf), - _pfile(_tfopen(path, TEXT("r"))), -#ifdef __GNUC__ - _buf(_pfile, ios::in) -#else - _buf(_pfile) -#endif + FileHolder(LPCTSTR path, LPCTSTR mode) { +#ifdef __STDC_WANT_SECURE_LIB__ // secure CRT functions using VS 2005 + if (_tfopen_s(&_pfile, path, mode) != 0) + _pfile = NULL; +#else + _pfile = _tfopen(path, mode); +#endif } - ~tifstream() + ~FileHolder() { if (_pfile) fclose(_pfile); @@ -289,19 +439,38 @@ struct tifstream : public std::istream protected: FILE* _pfile; +}; + + /// input file stream with ANSI/UNICODE file names +struct tifstream : public std::istream, FileHolder +{ + typedef std::istream super; + + tifstream(LPCTSTR path) + : super(&_buf), + FileHolder(path, TEXT("rb")), // binary mode is important for XMLReader::read_buffer() with MinGW libraries +#ifdef __GNUC__ + _buf(_pfile, std::ios::in) +#else + _buf(_pfile) +#endif + { + } + +protected: STDIO_FILEBUF _buf; }; /// output file stream with ANSI/UNICODE file names -struct tofstream : public std::ostream +struct tofstream : public std::ostream, FileHolder { typedef std::ostream super; tofstream(LPCTSTR path) : super(&_buf), - _pfile(_tfopen(path, TEXT("w"))), + FileHolder(path, TEXT("wb")), #ifdef __GNUC__ - _buf(_pfile, ios::out) + _buf(_pfile, std::ios::out) #else _buf(_pfile) #endif @@ -311,13 +480,9 @@ struct tofstream : public std::ostream ~tofstream() { flush(); - - if (_pfile) - fclose(_pfile); } protected: - FILE* _pfile; STDIO_FILEBUF _buf; }; @@ -326,16 +491,17 @@ protected: #define XML_INDENT_SPACE " " -#ifdef XML_UNICODE // Are XML_Char strings UTF-16 encoded? +#if defined(XS_USE_XERCES) || defined(XS_USE_EXPAT) +#if defined(XML_UNICODE)/*Expat*/ || defined(XS_USE_XERCES)/*Xerces*/ // Are Expat/Xerces XML strings UTF-16 encoded? typedef XS_String String_from_XML_Char; #elif defined(XS_STRING_UTF8) - typedef XS_String String_from_XML_Char; #else + /// converter from Expat/Xerces strings to XMLStorage internal strings struct String_from_XML_Char : public XS_String { String_from_XML_Char(const XML_Char* str) @@ -346,6 +512,8 @@ struct String_from_XML_Char : public XS_String #endif +#endif // defined(XS_USE_XERCES) || defined(XS_USE_EXPAT) + #if defined(UNICODE) && !defined(XS_STRING_UTF8) @@ -365,6 +533,152 @@ inline bool operator==(const XS_String& s1, const char* s2) #endif + /// XML Error with message and location +struct XMLError +{ + XMLError() + : _line(0), + _column(0), + _error_code(0) + { + } + + std::string str() const; + friend std::ostream& operator<<(std::ostream&, const XMLError& err); + + XS_String _message; + XS_String _systemId; + int _line; + int _column; + int _error_code; +}; + +struct XMLErrorList : public std::list +{ + XS_String str() const; +}; + + +#ifdef XMLNODE_LOCATION + /// location of XML Node including XML file name +struct XMLLocation +{ + XMLLocation() + : _pdisplay_path(NULL), + _line(0), + _column(0) + { + } + + XMLLocation(const char* display_path, int line, int column) + : _pdisplay_path(display_path), + _line(line), + _column(column) + { + } + + std::string str() const; + +protected: + const char* _pdisplay_path; // character pointer for fast reference + int _line; + int _column; +}; +#endif + + +enum PRETTY_FLAGS { + PRETTY_PLAIN = 0, + PRETTY_LINEFEED = 1, + PRETTY_INDENT = 2 +}; + + +struct StyleSheet +{ + std::string _href; // CDATA #REQUIRED + std::string _type; // CDATA #REQUIRED + std::string _title; // CDATA #IMPLIED + std::string _media; // CDATA #IMPLIED + std::string _charset; // CDATA #IMPLIED + bool _alternate; // (yes|no) "no" + + StyleSheet() : _alternate(false) {} + + StyleSheet(const std::string& href, const std::string& type="text/xsl", bool alternate=false) + : _href(href), + _type(type), + _alternate(alternate) + { + } + + bool empty() const {return _href.empty();} + void print(std::ostream& out) const; +}; + +struct StyleSheetList : public std::list +{ + void set(const StyleSheet& stylesheet) + { + clear(); + push_back(stylesheet); + } +}; + + +struct DocType +{ + std::string _name; + + // External Document Types are noted, but not parsed. + std::string _public; + std::string _system; + + // Internal DTDs are not supported. + + void parse(const char* str); + bool empty() const {return _name.empty();} +}; + + /// Management of XML file headers and formating +struct XMLFormat +{ + XMLFormat(PRETTY_FLAGS pretty=PRETTY_INDENT, const std::string& xml_version="1.0", const std::string& encoding="utf-8", const DocType& doctype=DocType()) + : _pretty(pretty), + _endl("\n"), + _version(xml_version), + _encoding(encoding), + _doctype(doctype), + _standalone(-1) + { + } + + void print_header(std::ostream& out, bool lf=true) const; + + PRETTY_FLAGS _pretty; + const char* _endl; // line ending string: "\n" or "\r\n" + + std::string _version; + std::string _encoding; + + DocType _doctype; + + StyleSheetList _stylesheets; + +// std::string _additional; + + int _standalone; +}; + + +enum WRITE_MODE { + FORMAT_PLAIN, /// write XML without any white space + FORMAT_SMART, /// preserve original white space and comments if present; pretty print otherwise + FORMAT_ORIGINAL, /// write XML stream preserving original white space and comments + FORMAT_PRETTY /// pretty print node to stream without preserving original white space +}; + + /// in memory representation of an XML node struct XMLNode : public XS_String { @@ -392,11 +706,33 @@ struct XMLNode : public XS_String { return super::find(x); } + + XS_String get(const char* x, LPXSSTR def=XS_EMPTY_STR) const + { + const_iterator found = find(x); + + if (found != end()) + return found->second; + else + return def; + } }; #else - typedef std::map AttributeMap; + struct AttributeMap : public std::map + { + XS_String get(const char* x, LPXSSTR def=XS_EMPTY_STR) const + { + const_iterator found = find(x); + + if (found != end()) + return found->second; + else + return def; + } + }; #endif + /// internal children node list struct Children : public std::list { void assign(const Children& other) @@ -436,17 +772,21 @@ struct XMLNode : public XS_String } XMLNode(const XMLNode& other) - : _attributes(other._attributes), + : XS_String(other), + _attributes(other._attributes), _leading(other._leading), _content(other._content), _end_leading(other._end_leading), _trailing(other._trailing) +#ifdef XMLNODE_LOCATION + , _location(other._location) +#endif { for(Children::const_iterator it=other._children.begin(); it!=other._children.end(); ++it) _children.push_back(new XMLNode(**it)); } - ~XMLNode() + virtual ~XMLNode() { while(!_children.empty()) { delete _children.back(); @@ -500,14 +840,14 @@ struct XMLNode : public XS_String } /// read only access to an attribute - template XS_String get(const T& attr_name) const + template XS_String get(const T& attr_name, LPXSSTR def=XS_EMPTY_STR) const { AttributeMap::const_iterator found = _attributes.find(attr_name); if (found != _attributes.end()) return found->second; else - return XS_String(); + return def; } /// convenient value access in children node @@ -570,13 +910,23 @@ struct XMLNode : public XS_String return _children; } + const AttributeMap& get_attributes() const + { + return _attributes; + } + + AttributeMap& get_attributes() + { + return _attributes; + } + XS_String get_content() const { #ifdef XS_STRING_UTF8 const XS_String& ret = _content; #else XS_String ret; - assign_utf8(ret, _content.c_str()); + assign_utf8(ret, _content.c_str(), _content.length()); #endif return DecodeXMLString(ret.c_str()); @@ -587,18 +937,20 @@ struct XMLNode : public XS_String _content.assign(EncodeXMLString(s.c_str())); } - enum WRITE_MODE { - FORMAT_SMART = 0, /// preserve original white space and comments if present; pretty print otherwise - FORMAT_ORIGINAL = 1, /// write XML stream preserving original white space and comments - FORMAT_PRETTY = 2 /// pretty print node to stream without preserving original white space - }; +#ifdef XMLNODE_LOCATION + const XMLLocation& get_location() const {return _location;} +#endif /// write node with children tree to output stream - std::ostream& write(std::ostream& out, WRITE_MODE mode=FORMAT_SMART, int indent=0) const + std::ostream& write(std::ostream& out, const XMLFormat& format, WRITE_MODE mode=FORMAT_SMART, int indent=0) const { switch(mode) { + case FORMAT_PLAIN: + plain_write_worker(out); + break; + case FORMAT_PRETTY: - pretty_write_worker(out, indent); + pretty_write_worker(out, format, indent); break; case FORMAT_ORIGINAL: @@ -606,7 +958,7 @@ struct XMLNode : public XS_String break; default: // FORMAT_SMART - smart_write_worker(out, indent); + smart_write_worker(out, format, indent); } return out; @@ -616,10 +968,14 @@ protected: Children _children; AttributeMap _attributes; - std::string _leading; - std::string _content; - std::string _end_leading; - std::string _trailing; + std::string _leading; // UTF-8 encoded + std::string _content; // UTF-8 and entity encoded, may contain CDATA sections; decode with DecodeXMLString() + std::string _end_leading; // UTF-8 encoded + std::string _trailing; // UTF-8 encoded + +#ifdef XMLNODE_LOCATION + XMLLocation _location; +#endif XMLNode* get_first_child() const { @@ -678,18 +1034,20 @@ protected: } #endif - /// XPath find functions + /// XPath find function (const) const XMLNode* find_relative(const char* path) const; + /// XPath find function XMLNode* find_relative(const char* path) {return const_cast(const_cast(this)->find_relative(path));} /// relative XPath create function XMLNode* create_relative(const char* path); - void write_worker(std::ostream& out, int indent) const; - void pretty_write_worker(std::ostream& out, int indent) const; - void smart_write_worker(std::ostream& out, int indent) const; + void write_worker(std::ostream& out, int indent) const; + void plain_write_worker(std::ostream& out) const; + void pretty_write_worker(std::ostream& out, const XMLFormat& format, int indent) const; + void smart_write_worker(std::ostream& out, const XMLFormat& format, int indent) const; }; @@ -708,6 +1066,7 @@ struct XMLChildrenFilter { } + /// internal iterator class struct iterator { typedef XMLNode::Children::iterator BaseIterator; @@ -806,6 +1165,7 @@ struct const_XMLChildrenFilter { } + /// internal iterator class struct const_iterator { typedef XMLNode::Children::const_iterator BaseIterator; @@ -954,6 +1314,7 @@ struct XMLPos return _cur->get(attr_name); } + /// attribute setting void put(const XS_String& attr_name, const XS_String& value) { _cur->put(attr_name, value); @@ -1218,18 +1579,7 @@ protected: }; - // work around GCC's wide string constant bug -#ifdef __GNUC__ -extern const LPCXSSTR XS_TRUE; -extern const LPCXSSTR XS_FALSE; -extern const LPCXSSTR XS_NUMBERFMT; -#else -#define XS_TRUE XS_TEXT("true") -#define XS_FALSE XS_TEXT("false") -#define XS_NUMBERFMT XS_TEXT("%d") -#endif - - + /// type converter for boolean data struct XMLBool { XMLBool(bool value=false) @@ -1277,6 +1627,7 @@ private: void operator=(const XMLBool&); // disallow assignment operations }; + /// type converter for boolean data with write access struct XMLBoolRef { XMLBoolRef(XMLNode* node, const XS_String& attr_name, bool def=false) @@ -1318,6 +1669,7 @@ protected: }; + /// type converter for integer data struct XMLInt { XMLInt(int value) @@ -1351,7 +1703,7 @@ struct XMLInt operator XS_String() const { XS_CHAR buffer[32]; - XS_sprintf(buffer, XS_NUMBERFMT, _value); + XS_snprintf(buffer, COUNTOF(buffer), XS_INTFMT, _value); return buffer; } @@ -1362,6 +1714,7 @@ private: void operator=(const XMLInt&); // disallow assignment operations }; + /// type converter for integer data with write access struct XMLIntRef { XMLIntRef(XMLNode* node, const XS_String& attr_name, int def=0) @@ -1386,7 +1739,7 @@ struct XMLIntRef void assign(int value) { XS_CHAR buffer[32]; - XS_sprintf(buffer, XS_NUMBERFMT, value); + XS_snprintf(buffer, COUNTOF(buffer), XS_INTFMT, value); _ref.assign(buffer); } @@ -1395,6 +1748,90 @@ protected: }; + /// type converter for numeric data +struct XMLDouble +{ + XMLDouble(double value) + : _value(value) + { + } + + XMLDouble(LPCXSSTR value, double def=0.) + { + LPTSTR end; + + if (value && *value) + _value = XS_tod(value, &end); + else + _value = def; + } + + XMLDouble(const XMLNode* node, const XS_String& attr_name, double def=0.) + { + LPTSTR end; + const XS_String& value = node->get(attr_name); + + if (!value.empty()) + _value = XS_tod(value.c_str(), &end); + else + _value = def; + } + + operator double() const + { + return _value; + } + + operator XS_String() const + { + XS_CHAR buffer[32]; + XS_snprintf(buffer, COUNTOF(buffer), XS_FLOATFMT, _value); + return buffer; + } + +protected: + double _value; + +private: + void operator=(const XMLDouble&); // disallow assignment operations +}; + + /// type converter for numeric data with write access +struct XMLDoubleRef +{ + XMLDoubleRef(XMLNode* node, const XS_String& attr_name, double def=0.) + : _ref((*node)[attr_name]) + { + if (_ref.empty()) + assign(def); + } + + XMLDoubleRef& operator=(double value) + { + assign(value); + + return *this; + } + + operator double() const + { + LPTSTR end; + return XS_tod(_ref.c_str(), &end); + } + + void assign(double value) + { + XS_CHAR buffer[32]; + XS_snprintf(buffer, COUNTOF(buffer), XS_FLOATFMT, value); + _ref.assign(buffer); + } + +protected: + XS_String& _ref; +}; + + + /// type converter for string data struct XMLString { XMLString(const XS_String& value) @@ -1402,7 +1839,7 @@ struct XMLString { } - XMLString(LPCXSSTR value, LPCXSSTR def=XS_TEXT("")) + XMLString(LPCXSSTR value, LPCXSSTR def=XS_EMPTY) { if (value && *value) _value = value; @@ -1410,7 +1847,7 @@ struct XMLString _value = def; } - XMLString(const XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_TEXT("")) + XMLString(const XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_EMPTY) { const XS_String& value = node->get(attr_name); @@ -1437,16 +1874,17 @@ private: void operator=(const XMLString&); // disallow assignment operations }; + /// type converter for string data with write access struct XMStringRef { - XMStringRef(XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_TEXT("")) + XMStringRef(XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_EMPTY) : _ref((*node)[attr_name]) { if (_ref.empty()) assign(def); } - XMStringRef(XMLNode* node, const XS_String& node_name, const XS_String& attr_name, LPCXSSTR def=XS_TEXT("")) + XMStringRef(XMLNode* node, const XS_String& node_name, const XS_String& attr_name, LPCXSSTR def=XS_EMPTY) : _ref(node->subvalue(node_name, attr_name)) { if (_ref.empty()) @@ -1500,65 +1938,151 @@ template<> /// XML reader base class struct XMLReaderBase +#ifdef XS_USE_XERCES + : public HandlerBase +#endif { - XMLReaderBase(XMLNode* node) - : _pos(node), - _parser(XML_ParserCreate(NULL)) - { - XML_SetUserData(_parser, this); - XML_SetXmlDeclHandler(_parser, XML_XmlDeclHandler); - XML_SetElementHandler(_parser, XML_StartElementHandler, XML_EndElementHandler); - XML_SetDefaultHandler(_parser, XML_DefaultHandler); +#ifdef XS_USE_XERCES - _last_tag = TAG_NONE; - } + XMLReaderBase(XMLNode* node, InputSource* source, bool adoptSource=false); + virtual ~XMLReaderBase(); - virtual ~XMLReaderBase() - { - XML_ParserFree(_parser); - } - - XML_Status read(); - - virtual int read_buffer(char* buffer, int len) = 0; - - std::string get_position() const - { - int line = XML_GetCurrentLineNumber(_parser); - int column = XML_GetCurrentColumnNumber(_parser); - - std::ostringstream out; - out << "(" << line << ") : [column " << column << "]"; - - return out.str(); - } - - std::string get_instructions() const {return _instructions;} - - XML_Error get_error_code() {return XML_GetErrorCode(_parser);} - std::string get_error_string() const; + void read(); + +protected: + SAXParser* _parser; + InputSource* _source; + bool _deleteSource; + + virtual void XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr, + const XMLCh* const standaloneStr, const XMLCh* const actualEncodingStr); + + // Handlers for the SAX DocumentHandler interface + virtual void setDocumentLocator(const Locator* const locator); + virtual void startElement(const XMLCh* const name, AttributeList& attributes); + virtual void endElement(const XMLCh* const name); + virtual void characters(const XMLCh* const chars, const unsigned int length); + virtual void ignorableWhitespace(const XMLCh* const chars, const unsigned int length); + + // Handlers for the SAX ErrorHandler interface + virtual void error(const SAXParseException& e); + virtual void fatalError(const SAXParseException& e); + virtual void warning(const SAXParseException& e); + virtual void resetErrors(); + +#elif defined(XS_USE_EXPAT) // !XS_USE_XERCES + + XMLReaderBase(XMLNode* node); + virtual ~XMLReaderBase(); protected: - XMLPos _pos; XML_Parser _parser; - std::string _xml_version; - std::string _encoding; - std::string _instructions; - std::string _content; - enum {TAG_NONE, TAG_START, TAG_END} _last_tag; - - static void XMLCALL XML_XmlDeclHandler(void* userData, const XML_Char* version, const XML_Char* encoding, int standalone); + static void XMLCALL XML_XmlDeclHandler(void* userData, const XML_Char* version, const XML_Char* encoding, int standalone=-1); static void XMLCALL XML_StartElementHandler(void* userData, const XML_Char* name, const XML_Char** atts); static void XMLCALL XML_EndElementHandler(void* userData, const XML_Char* name); static void XMLCALL XML_DefaultHandler(void* userData, const XML_Char* s, int len); + + static std::string get_expat_error_string(XML_Error error_code); + +#else // XS_USE_EXPAT + + XMLReaderBase(XMLNode* node) + : _pos(node), + _endl_defined(false), + _utf8(false) + { + _last_tag = TAG_NONE; + } + + virtual ~XMLReaderBase(); + + bool parse(); + +#endif + +public: +#ifndef XS_USE_XERCES + void read(); + + std::string get_position() const; +#endif + const XMLFormat& get_format() const {return _format;} + const char* get_endl() const {return _endl_defined? _format._endl: "\n";} + + const XMLErrorList& get_errors() const {return _errors;} + const XMLErrorList& get_warnings() const {return _warnings;} + + void clear_errors() {_errors.clear(); _warnings.clear();} + +#ifdef XMLNODE_LOCATION + const char* _display_path; // character pointer for fast reference in XMLLocation + +#ifdef XS_USE_XERCES + const Locator* _locator; +#endif + + XMLLocation get_location() const; +#endif + +protected: + XMLPos _pos; + + std::string _content; // UTF-8 encoded + enum {TAG_NONE, TAG_START, TAG_END} _last_tag; + + XMLErrorList _errors; + XMLErrorList _warnings; + + XMLFormat _format; + bool _endl_defined; + +#ifdef XS_USE_XERCES + //@@ +#elif defined(XS_USE_EXPAT) + virtual int read_buffer(char* buffer, int len) = 0; +#else + virtual int get() = 0; + int eat_endl(); + + bool _utf8; +#endif + + void finish_read(); + + virtual void XmlDeclHandler(const char* version, const char* encoding, int standalone); + virtual void StartElementHandler(const XS_String& name, const XMLNode::AttributeMap& attributes); + virtual void EndElementHandler(); +#if defined(XS_USE_XERCES) || defined(XS_USE_EXPAT) + virtual void DefaultHandler(const XML_Char* s, int len); +#else + virtual void DefaultHandler(const std::string& s); +#endif }; /// XML file reader -struct XMLReader : public XMLReaderBase + +#ifdef XS_USE_XERCES + +struct XercesXMLReader : public XMLReaderBase { - XMLReader(XMLNode* node, std::istream& in) + XercesXMLReader(XMLNode* node, InputSource* source, bool adoptSource=false) + : XMLReaderBase(node, source, adoptSource) + { + } + + XercesXMLReader(XMLNode* node, LPCTSTR path); + XercesXMLReader(XMLNode* node, const XMLByte* buffer, size_t bytes, const std::string& system_id=std::string()); +}; + +#define XMLReader XercesXMLReader + +#elif defined(XS_USE_EXPAT) + +struct ExpatXMLReader : public XMLReaderBase +{ + ExpatXMLReader(XMLNode* node, std::istream& in) : XMLReaderBase(node), _in(in) { @@ -1579,112 +2103,122 @@ protected: std::istream& _in; }; +#define XMLReader ExpatXMLReader -struct XMLHeader +#else // XS_USE_XERCES, XS_USE_EXPAT + +struct XMLReader : public XMLReaderBase { - XMLHeader(const std::string& xml_version="1.0", const std::string& encoding="UTF-8", const std::string& doctype="") - : _version(xml_version), - _encoding(encoding), - _doctype(doctype) + XMLReader(XMLNode* node, std::istream& in) + : XMLReaderBase(node), + _in(in) { } - void print(std::ostream& out) const + /// read one character from XML stream + int get() { - out << "\n"; - - if (!_doctype.empty()) - out << _doctype << '\n'; - if (!_additional.empty()) - out << _additional << '\n'; + return _in.get(); } - std::string _version; - std::string _encoding; - std::string _doctype; - std::string _additional; +protected: + std::istream& _in; }; +#endif // XS_USE_XERCES + + /// XML document holder struct XMLDoc : public XMLNode { XMLDoc() - : XMLNode(""), - _last_error(XML_ERROR_NONE) + : XMLNode("") { } XMLDoc(LPCTSTR path) - : XMLNode(""), - _last_error(XML_ERROR_NONE) + : XMLNode("") { read(path); } - std::istream& read(std::istream& in) +#ifdef XS_USE_XERCES + bool read(LPCTSTR path) { - XMLReader reader(this, in); + XMLReader reader(this, path); - read(reader); - - return in; +#if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8) + return read(reader, std::string(ANS(path))); +#else + return read(reader, XS_String(path)); +#endif } + bool read(const char* buffer, size_t len, const std::string& system_id=std::string()) + { + XMLReader reader(this, (const XMLByte*)buffer, len, system_id); + + return read(reader, system_id); + } + +#else // XS_USE_XERCES + bool read(LPCTSTR path) { tifstream in(path); XMLReader reader(this, in); -//#if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8) -// return read(reader, std::string(ANS(path))); -//#else +#if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8) + return read(reader, std::string(ANS(path))); +#else return read(reader, XS_String(path)); -//#endif +#endif } - bool read(XMLReaderBase& reader) + bool read(const char* buffer, size_t len, const std::string& system_id=std::string()) { - XML_Status status = reader.read(); + std::istringstream in(std::string(buffer, len)); - _header._additional = reader.get_instructions(); - - if (status == XML_STATUS_ERROR) { - std::ostringstream out; - - out << "input stream" << reader.get_position() << " " << reader.get_error_string(); - - _last_error = reader.get_error_code(); - _last_error_msg = out.str(); - } - - return status != XML_STATUS_ERROR; + return read(in, system_id); } + bool read(std::istream& in, const std::string& system_id=std::string()) + { + XMLReader reader(this, in); + + return read(reader, system_id); + } +#endif // XS_USE_XERCES + bool read(XMLReaderBase& reader, const std::string& display_path) { - XML_Status status = reader.read(); +#ifdef XMLNODE_LOCATION + // make a string copy to handle temporary string objects + _display_path = display_path; + reader._display_path = _display_path.c_str(); +#endif - _header._additional = reader.get_instructions(); + reader.clear_errors(); + reader.read(); - if (status == XML_STATUS_ERROR) { - std::ostringstream out; + _format = reader.get_format(); + _format._endl = reader.get_endl(); - out << display_path << reader.get_position() << " " << reader.get_error_string(); - - _last_error = reader.get_error_code(); - _last_error_msg = out.str(); + if (!reader.get_errors().empty()) { + _errors = reader.get_errors(); + return false; } - return status != XML_STATUS_ERROR; + return true; } /// write XML stream preserving previous white space and comments std::ostream& write(std::ostream& out, WRITE_MODE mode=FORMAT_SMART) const { - _header.print(out); + _format.print_header(out, mode!=FORMAT_PLAIN); if (!_children.empty()) - _children.front()->write(out); + _children.front()->write(out, _format, mode); return out; } @@ -1695,26 +2229,30 @@ struct XMLDoc : public XMLNode return write(out, FORMAT_PRETTY); } - void write(LPCTSTR path, WRITE_MODE mode=FORMAT_SMART) const + bool write(LPCTSTR path, WRITE_MODE mode=FORMAT_SMART) const { tofstream out(path); - write(out, mode); + return write(out, mode).good(); } - void write_formating(LPCTSTR path) const + bool write_formating(LPCTSTR path) const { tofstream out(path); - write_formating(out); + return write_formating(out).good(); } - XMLHeader _header; - XML_Error _last_error; - std::string _last_error_msg; + XMLFormat _format; + XMLErrorList _errors; + +#ifdef XMLNODE_LOCATION + std::string _display_path; +#endif }; + /// XML message wrapper struct XMLMessage : public XMLDoc { XMLMessage(const char* name) @@ -1723,7 +2261,212 @@ struct XMLMessage : public XMLDoc _pos.create(name); } + std::string toString() const + { + std::ostringstream out; + + write(out); + + return out.str(); + } + XMLPos _pos; + +protected: + XMLMessage() + : _pos(this) + { + } +}; + + +struct XMLMessageFromString : public XMLMessage +{ + XMLMessageFromString(const std::string& xml_str, const std::string& system_id=std::string()) + { + read(xml_str.c_str(), xml_str.length(), system_id); + } +}; + + + /// Reader for XML Messages +struct XMLMessageReader : public XMLPos +{ + XMLMessageReader(const std::string& xml_str, const std::string& system_id=std::string()) + : XMLPos(&_msg) + { + _msg.read(xml_str.c_str(), xml_str.length(), system_id); + } + + const XMLDoc& get_document() + { + return _msg; + } + +protected: + XMLDoc _msg; +}; + + +struct XMLWriter +{ + XMLWriter(std::ostream& out, const XMLFormat& format=XMLFormat()) + : _pofstream(NULL), + _out(out), + _format(format) + { + format.print_header(_out, false); // _format._endl is printed in write_pre() + } + + XMLWriter(LPCTSTR path, const XMLFormat& format=XMLFormat()) + : _pofstream(new tofstream(path)), + _out(*_pofstream), + _format(format) + { + format.print_header(_out, false); // _format._endl is printed in write_pre() + } + + ~XMLWriter() + { + _out << _format._endl; + delete _pofstream; + } + + /// create node and move to it + void create(const XS_String& name) + { + if (!_stack.empty()) { + StackEntry& last = _stack.top(); + + if (last._state < PRE_CLOSED) { + write_attributes(last); + close_pre(last); + } + + ++last._children; + } + + StackEntry entry; + entry._node_name = name; + _stack.push(entry); + + write_pre(entry); + } + + /// go back to previous position + bool back() + { + if (!_stack.empty()) { + write_post(_stack.top()); + + _stack.pop(); + return true; + } else + return false; + } + + /// attribute setting + void put(const XS_String& attr_name, const XS_String& value) + { + if (!_stack.empty()) + _stack.top()._attributes[attr_name] = value; + } + + /// C++ write access to an attribute + XS_String& operator[](const XS_String& attr_name) + { + if (_stack.empty()) + return s_empty_attr; + + return _stack.top()._attributes[attr_name]; + } + + void set_content(const XS_String& s) + { + if (!_stack.empty()) + _stack.top()._content = EncodeXMLString(s.c_str()); + } + + // public for access in StackEntry + enum WRITESTATE { + NOTHING, /*PRE,*/ ATTRIBUTES, PRE_CLOSED, /*CONTENT,*/ POST + }; + +protected: + tofstream* _pofstream; + std::ostream& _out; + const XMLFormat&_format; + + typedef XMLNode::AttributeMap AttrMap; + + struct StackEntry { + XS_String _node_name; + AttrMap _attributes; + std::string _content; + WRITESTATE _state; + bool _children; + + StackEntry() : _state(NOTHING), _children(false) {} + }; + + std::stack _stack; + + static XS_String s_empty_attr; + + void close_pre(StackEntry& entry) + { + _out << '>'; + + entry._state = PRE_CLOSED; + } + + void write_pre(StackEntry& entry) + { + if (_format._pretty >= PRETTY_LINEFEED) + _out << _format._endl; + + if (_format._pretty == PRETTY_INDENT) + for(size_t i=_stack.size(); --i>0; ) + _out << XML_INDENT_SPACE; + + _out << '<' << EncodeXMLString(entry._node_name); + //entry._state = PRE; + } + + void write_attributes(StackEntry& entry) + { + for(AttrMap::const_iterator it=entry._attributes.begin(); it!=entry._attributes.end(); ++it) + _out << ' ' << EncodeXMLString(it->first) << "=\"" << EncodeXMLString(it->second) << "\""; + + entry._state = ATTRIBUTES; + } + + void write_post(StackEntry& entry) + { + if (entry._state < ATTRIBUTES) + write_attributes(entry); + + if (entry._children || !entry._content.empty()) { + if (entry._state < PRE_CLOSED) + close_pre(entry); + + _out << entry._content; + //entry._state = CONTENT; + + if (_format._pretty>=PRETTY_LINEFEED && entry._content.empty()) + _out << _format._endl; + + if (_format._pretty==PRETTY_INDENT && entry._content.empty()) + for(size_t i=_stack.size(); --i>0; ) + _out << XML_INDENT_SPACE; + + _out << ""; + } else { + _out << "/>"; + } + + entry._state = POST; + } }; diff --git a/reactos/base/applications/ibrowser/utility/xs-native.cpp b/reactos/base/applications/ibrowser/utility/xs-native.cpp new file mode 100644 index 00000000000..90f5bea5852 --- /dev/null +++ b/reactos/base/applications/ibrowser/utility/xs-native.cpp @@ -0,0 +1,438 @@ + + // + // XML storage classes + // + // xs-native.cpp + // + // Copyright (c) 2006 Martin Fuchs + // + + +/* + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef XS_NO_COMMENT +#define XS_NO_COMMENT // no #pragma comment(lib, ...) statements in .lib files to enable static linking +#endif + +//#include "xmlstorage.h" +#include + + +#if !defined(XS_USE_EXPAT) && !defined(XS_USE_XERCES) + +namespace XMLStorage { + + +XMLReaderBase::~XMLReaderBase() +{ +} + + /// read XML stream into XML tree below _pos +void XMLReaderBase::read() +{ + if (!parse()) { + XMLError error; + + error._message = "XML parsing error"; + //error._line = ; + //error._column = ; + + _errors.push_back(error); + } + + finish_read(); +} + + +struct Buffer +{ + Buffer() + { + _buffer = (char*) malloc(BUFFER_LEN); + _len = BUFFER_LEN; + + reset(); + } + + ~Buffer() + { + free(_buffer); + } + + void reset() + { + _wptr = _buffer; + _buffer_str.erase(); + } + + void append(char c) + { + size_t wpos = _wptr-_buffer; + + if (wpos >= _len) { + _len <<= 1; + _buffer = (char*) realloc(_buffer, _len); + _wptr = _buffer + wpos; + } + + *_wptr++ = c; + } + + const std::string& str(bool utf8) // returns UTF-8 encoded buffer content + { + if (utf8) + _buffer_str.assign(_buffer, _wptr-_buffer); + else + _buffer_str = get_utf8(_buffer, _wptr-_buffer); + + return _buffer_str; + } + + size_t len() const + { + return _wptr - _buffer; + } + + bool has_CDEnd() const + { + //if (_wptr-_buffer < 3) + // return false; + + return !strncmp(_wptr-3, "]]>", 3); + } + + XS_String get_tag() const + { + const char* p = _buffer_str.c_str(); + + if (*p == '<') + ++p; + + if (*p == '/') + ++p; + + const char* q = p; + + if (*q == '?') + ++q; + + while(isxmlsym(*q)) + ++q; + +#ifdef XS_STRING_UTF8 + return XS_String(p, q-p); +#else + XS_String tag; + assign_utf8(tag, p, q-p); + return tag; +#endif + } + + /// read attributes and values + void get_attributes(XMLNode::AttributeMap& attributes) const + { + const char* p = _buffer_str.c_str(); + + // find end of tag name + if (*p == '<') + ++p; + + if (*p == '/') + ++p; + else if (*p == '?') + ++p; + + while(isxmlsym(*p)) + ++p; + + // read attributes from buffer + while(*p && *p!='>' && *p!='/') { + while(isspace((unsigned char)*p)) + ++p; + + const char* attr_name = p; + + while(isxmlsym(*p)) + ++p; + + if (*p != '=') + break; //@TODO error handling + + size_t attr_len = p - attr_name; + + if (*++p!='"' && *p!='\'') + break; //@TODO error handling + + char delim = *p; + const char* value = ++p; + + while(*p && *p!=delim) + ++p; + + size_t value_len = p - value; + + if (*p) + ++p; // '"' + +#ifdef XS_STRING_UTF8 + XS_String name_str(attr_name, attr_len); + XS_String value_str(value, value_len); +#else + XS_String name_str, value_str; + assign_utf8(name_str, attr_name, attr_len); + assign_utf8(value_str, value, value_len); +#endif + + attributes[name_str] = DecodeXMLString(value_str); + } + } + +protected: + char* _buffer; + char* _wptr; + size_t _len; + std::string _buffer_str; // UF-8 encoded +}; + +bool XMLReaderBase::parse() +{ + Buffer buffer; + int c = get(); + bool in_comment = false; + + while(c != EOF) { + if (in_comment || c=='<') { + buffer.append(c); + + // read start or end tag + for(;;) { + c = get(); + + if (c == EOF) + break; + + buffer.append(c); + + if (c == '>') + break; + } + + const std::string& b = buffer.str(_utf8); + const char* str = b.c_str(); + + if (in_comment || !strncmp(str+1, "!--", 3)) { + // XML comment + DefaultHandler(b); + + if (strcmp(str+b.length()-3, "-->")) + in_comment = true; + else + in_comment = false; + + c = get(); + } else if (str[1] == '/') { + // end tag + + /*@TODO error handling + const XS_String& tag = buffer.get_tag(); + + if (tag != last_opened_tag) { + ERROR + } + */ + + EndElementHandler(); + + c = get(); + } else if (str[1] == '?') { + // XML declaration + const XS_String& tag = buffer.get_tag(); + + if (tag == "?xml") { + XMLNode::AttributeMap attributes; + buffer.get_attributes(attributes); + + const std::string& version = attributes.get("version"); + const std::string& encoding = attributes.get("encoding"); + + int standalone; + XMLNode::AttributeMap::const_iterator found = // const_cast for ISO C++ compatibility error of GCC + const_cast(attributes).find("standalone"); + if (found != attributes.end()) + standalone = !XS_icmp(found->second.c_str(), XS_TEXT("yes")); + else + standalone = -1; + + XmlDeclHandler(version.empty()?NULL:version.c_str(), encoding.empty()?NULL:encoding.c_str(), standalone); + + if (!encoding.empty() && !_stricmp(encoding.c_str(), "utf-8")) + _utf8 = true; + + c = eat_endl(); + } else if (tag == "?xml-stylesheet") { + XMLNode::AttributeMap attributes; + buffer.get_attributes(attributes); + + StyleSheet stylesheet(attributes.get("href"), attributes.get("type"), !XS_icmp(attributes.get("alternate"), XS_TEXT("yes"))); + stylesheet._title = attributes.get("title"); + stylesheet._media = attributes.get("media"); + stylesheet._charset = attributes.get("charset"); + + _format._stylesheets.push_back(stylesheet); + + c = eat_endl(); + } else { + DefaultHandler(b); + c = get(); + } + } else if (str[1] == '!') { + if (!strncmp(str+2, "DOCTYPE ", 8)) { + _format._doctype.parse(str+10); + + c = eat_endl(); + } else if (!strncmp(str+2, "[CDATA[", 7)) { + // parse strings + while(!buffer.has_CDEnd()) { + c = get(); + + if (c == EOF) + break; + + buffer.append(c); + } + + DefaultHandler(buffer.str(_utf8)); + + c = get(); + } + } else { + // start tag + const XS_String& tag = buffer.get_tag(); + + if (!tag.empty()) { + XMLNode::AttributeMap attributes; + buffer.get_attributes(attributes); + + StartElementHandler(tag, attributes); + + if (str[b.length()-2] == '/') + EndElementHandler(); + } + + c = get(); + } + } else { + buffer.append(c); + + // read white space + for(;;) { + // check for the encoding of the first line end + if (!_endl_defined) + if (c == '\n') { + _format._endl = "\n"; + _endl_defined = true; + } else if (c == '\r') { + _format._endl = "\r\n"; + _endl_defined = true; + } + + c = get(); + + if (c == EOF) + break; + + if (c == '<') + break; + + buffer.append(c); + } + + DefaultHandler(buffer.str(_utf8)); + } + + buffer.reset(); + } + + return true; +} + +int XMLReaderBase::eat_endl() +{ + int c = get(); + + if (c == '\r') + c = get(); + + if (c == '\n') + c = get(); + + return c; +} + + /// return current parser position as string +std::string XMLReaderBase::get_position() const +{ +/*@TODO display parser position in case of errors + int line = XML_GetCurrentLineNumber(_parser); + int column = XML_GetCurrentColumnNumber(_parser); + + std::ostringstream out; + out << "(" << line << ") : [column " << column << "]"; + + return out.str(); +*/ + return ""; +} + + +#ifdef XMLNODE_LOCATION + +XMLLocation XMLReaderBase::get_location() const +{ + return XMLLocation(); //@TODO XMLLocation for XS-native +} + +std::string XMLLocation::str() const +{ + return ""; //TODO +} + +#endif + + + /// store content, white space and comments +void XMLReaderBase::DefaultHandler(const std::string& s) +{ + _content.append(s); +} + + +} // namespace XMLStorage + +#endif // !defined(XS_USE_EXPAT) && !defined(XS_USE_XERCES) diff --git a/reactos/base/applications/imagesoft/floatwindow.c b/reactos/base/applications/imagesoft/floatwindow.c index 1012d4f367c..cca17faafad 100644 --- a/reactos/base/applications/imagesoft/floatwindow.c +++ b/reactos/base/applications/imagesoft/floatwindow.c @@ -49,7 +49,7 @@ ShowHideWindow(PFLT_WND FltInfo) } -VOID +BOOL FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info) { HWND hTb; @@ -67,39 +67,45 @@ FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info) NULL, hInstance, NULL); + if (hTb != NULL) + { + SendMessage(hTb, + TB_SETEXTENDEDSTYLE, + 0, + TBSTYLE_EX_HIDECLIPPEDBUTTONS); - SendMessage(hTb, - TB_SETEXTENDEDSTYLE, - 0, - TBSTYLE_EX_HIDECLIPPEDBUTTONS); + SendMessage(hTb, + TB_BUTTONSTRUCTSIZE, + sizeof(ToolsButtons[0]), + 0); - SendMessage(hTb, - TB_BUTTONSTRUCTSIZE, - sizeof(ToolsButtons[0]), - 0); + SendMessage(hTb, + TB_SETBITMAPSIZE, + 0, + (LPARAM)MAKELONG(16, 16)); - SendMessage(hTb, - TB_SETBITMAPSIZE, - 0, - (LPARAM)MAKELONG(16, 16)); + hImageList = InitImageList(NumButtons, + IDB_TOOLSRECTSEL); - hImageList = InitImageList(NumButtons, - IDB_TOOLSRECTSEL); + ImageList_Destroy((HIMAGELIST)SendMessage(hTb, + TB_SETIMAGELIST, + 0, + (LPARAM)hImageList)); - ImageList_Destroy((HIMAGELIST)SendMessage(hTb, - TB_SETIMAGELIST, - 0, - (LPARAM)hImageList)); + SendMessage(hTb, + TB_ADDBUTTONS, + NumButtons, + (LPARAM)ToolsButtons); - SendMessage(hTb, - TB_ADDBUTTONS, - NumButtons, - (LPARAM)ToolsButtons); + SendMessage(hTb, + TB_AUTOSIZE, + 0, + 0); - SendMessage(hTb, - TB_AUTOSIZE, - 0, - 0); + return TRUE; + } + + return FALSE; } @@ -158,7 +164,7 @@ FloatWindowPaintHueSlider(HWND hHueSlider) } -VOID +BOOL FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info) { HWND hColorPicker; @@ -183,6 +189,8 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info) NULL, hInstance, NULL); + if (hColorPicker == NULL) + return FALSE; hHueSlider = CreateWindowEx(0, WC_STATIC, @@ -196,6 +204,8 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info) NULL, hInstance, NULL); + if (hHueSlider == NULL) + return FALSE; hMouseButton = CreateWindowEx(0, WC_COMBOBOX, @@ -206,16 +216,16 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info) NULL, hInstance, NULL); + if (hMouseButton == NULL) + return FALSE; + //MakeFlatCombo(hMouseButton); /* temp, just testing */ - if (hMouseButton != NULL) - { - SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Primary")); - SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Secondary")); - SendMessage(hMouseButton, CB_SETCURSEL, 0, 0); + SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Primary")); + SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Secondary")); + SendMessage(hMouseButton, CB_SETCURSEL, 0, 0); - } hMore = CreateWindowEx(WS_EX_STATICEDGE, WC_BUTTON, @@ -228,6 +238,8 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info) NULL, hInstance, NULL); + if (hMore == NULL) + return FALSE; hMoreBitmap = (HBITMAP)LoadImage(hInstance, MAKEINTRESOURCE(IDB_COLORSMORE), @@ -255,10 +267,12 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info) ReleaseDC(hColorPicker, hDc); } + return TRUE; + } -VOID +BOOL FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info) { HWND hList; @@ -275,6 +289,8 @@ FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info) NULL, hInstance, NULL); + if (hList == NULL) + return FALSE; NumButtons = sizeof(HistoryButtons) / sizeof(HistoryButtons[0]); hButtons = CreateWindowEx(0, @@ -286,34 +302,40 @@ FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info) NULL, hInstance, NULL); + if (hButtons != NULL) + { + SendMessage(hButtons, + TB_BUTTONSTRUCTSIZE, + sizeof(ToolsButtons[0]), + 0); - SendMessage(hButtons, - TB_BUTTONSTRUCTSIZE, - sizeof(ToolsButtons[0]), - 0); + SendMessage(hButtons, + TB_SETBITMAPSIZE, + 0, + (LPARAM)MAKELONG(10, 10)); - SendMessage(hButtons, - TB_SETBITMAPSIZE, - 0, - (LPARAM)MAKELONG(10, 10)); + hImageList = InitImageList(NumButtons, + IDB_HISTBACK); - hImageList = InitImageList(NumButtons, - IDB_HISTBACK); + ImageList_Destroy((HIMAGELIST)SendMessage(hButtons, + TB_SETIMAGELIST, + 0, + (LPARAM)hImageList)); - ImageList_Destroy((HIMAGELIST)SendMessage(hButtons, - TB_SETIMAGELIST, - 0, - (LPARAM)hImageList)); + SendMessage(hButtons, + TB_SETBUTTONSIZE, + 0, + MAKELONG(18, 16)); - SendMessage(hButtons, - TB_SETBUTTONSIZE, - 0, - MAKELONG(18, 16)); + SendMessage(hButtons, + TB_ADDBUTTONS, + NumButtons, + (LPARAM)HistoryButtons); - SendMessage(hButtons, - TB_ADDBUTTONS, - NumButtons, - (LPARAM)HistoryButtons); + return TRUE; + } + + return FALSE; } LRESULT CALLBACK diff --git a/reactos/base/applications/imagesoft/imagesoft.c b/reactos/base/applications/imagesoft/imagesoft.c index 19ed215d8b5..5b5dcf580a4 100644 --- a/reactos/base/applications/imagesoft/imagesoft.c +++ b/reactos/base/applications/imagesoft/imagesoft.c @@ -29,19 +29,28 @@ WinMain(HINSTANCE hThisInstance, if (!AllocAndLoadString(&lpAppName, hInstance, IDS_APPNAME) || !AllocAndLoadString(&lpVersion, hInstance, IDS_VERSION) ) { - return 1; + return Ret; } len = (int)_tcslen(lpAppName) + (int)_tcslen(lpVersion); lpTitle = HeapAlloc(ProcessHeap, 0, (len + 2) * sizeof(TCHAR)); + if (lpTitle == NULL) + { + LocalFree((HLOCAL)lpAppName); + LocalFree((HLOCAL)lpVersion); + return Ret; + } wsprintf(lpTitle, _T("%s %s"), lpAppName, lpVersion); + LocalFree((HLOCAL)lpAppName); + LocalFree((HLOCAL)lpVersion); + if (TbdInitImpl()) { if (InitMainWindowImpl()) @@ -62,7 +71,6 @@ WinMain(HINSTANCE hThisInstance, { if (bRet != (BOOL)-1) { - //if (Msg.message == WM_SIZE) MessageBox(NULL, _T("Got it"), NULL, 0); if (!MainWndTranslateMDISysAccel(hMainWnd, &Msg)) { @@ -87,7 +95,9 @@ WinMain(HINSTANCE hThisInstance, TbdUninitImpl(); } - LocalFree((HLOCAL)lpAppName); + HeapFree(GetProcessHeap(), + 0, + lpTitle); return Ret; } diff --git a/reactos/base/applications/imagesoft/imagesoft.rc b/reactos/base/applications/imagesoft/imagesoft.rc index 4ff065e4e4b..4892fdce134 100644 --- a/reactos/base/applications/imagesoft/imagesoft.rc +++ b/reactos/base/applications/imagesoft/imagesoft.rc @@ -11,12 +11,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 1 24 DISCARDABLE "manifest.xml" -STRINGTABLE DISCARDABLE -BEGIN - IDS_APPNAME "ImageSoft" - IDS_VERSION "v0.1" -END - IDI_IMAGESOFTICON ICON "res/imagesoft.ico" /* main toolbar icons */ @@ -77,6 +71,6 @@ IDB_COLORSLESS BITMAP DISCARDABLE "res/icons/color/ColorLess.bmp" IDC_PAINTBRUSHCURSOR CURSOR DISCARDABLE "res/cursors/PaintBrushToolCursor.cur" IDC_PAINTBRUSHCURSORMOUSEDOWN CURSOR DISCARDABLE "res/cursors/PaintBrushToolCursorMouseDown.cur" -#include "En.rc" -/* please do not add any other languages whilst this is being developed */ +#include "rsrc.rc" + diff --git a/reactos/base/applications/imagesoft/En.rc b/reactos/base/applications/imagesoft/lang/En.rc similarity index 93% rename from reactos/base/applications/imagesoft/En.rc rename to reactos/base/applications/imagesoft/lang/En.rc index 04bcd4e78c7..a11b8e27b06 100644 --- a/reactos/base/applications/imagesoft/En.rc +++ b/reactos/base/applications/imagesoft/lang/En.rc @@ -1,3 +1,11 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ImageSoft" + IDS_VERSION "v0.1" +END + IDR_MAINMENU MENU BEGIN POPUP "&File" @@ -32,10 +40,10 @@ BEGIN END POPUP "&View" BEGIN - MENUITEM "&Tools", ID_TOOLS, CHECKED - MENUITEM "&Colors", ID_COLOR, CHECKED - MENUITEM "&History", ID_HISTORY, CHECKED - MENUITEM "&Status Bar", ID_STATUSBAR, CHECKED + MENUITEM "&Tools", ID_TOOLS + MENUITEM "&Colors", ID_COLOR + MENUITEM "&History", ID_HISTORY + MENUITEM "&Status Bar", ID_STATUSBAR END POPUP "&Image" BEGIN diff --git a/reactos/base/applications/imagesoft/lang/No.rc b/reactos/base/applications/imagesoft/lang/No.rc new file mode 100644 index 00000000000..ad738a5d7f0 --- /dev/null +++ b/reactos/base/applications/imagesoft/lang/No.rc @@ -0,0 +1,206 @@ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ImageSoft" + IDS_VERSION "v0.1" +END + +IDR_MAINMENU MENU +BEGIN + POPUP "&Fil" + BEGIN + MENUITEM "&Ny...", ID_NEW + MENUITEM "&Åpne...", ID_OPEN + MENUITEM SEPARATOR + MENUITEM "&Lukk\tCtrl+F4", ID_CLOSE, GRAYED + MENUITEM "L&ukk alt", ID_CLOSEALL, GRAYED + MENUITEM SEPARATOR + MENUITEM "&Lagre", ID_SAVE, GRAYED + MENUITEM "Lagre &som...", ID_SAVEAS, GRAYED + MENUITEM SEPARATOR + MENUITEM "Utskrift &Forhåndsvisning", ID_PRINTPRE, GRAYED + MENUITEM "&Utskrift...", ID_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "E&genskaper...", ID_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "A&vslutt\tAlt+F4", ID_EXIT + END + POPUP "&Rediger" + BEGIN + MENUITEM "&Angre", ID_UNDO, GRAYED + MENUITEM "&Gjenta", ID_REDO, GRAYED + MENUITEM SEPARATOR + MENUITEM "Klipp &ut", ID_CUT, GRAYED + MENUITEM "&Kopier", ID_COPY, GRAYED + MENUITEM "&Lim inn", ID_PASTE, GRAYED + MENUITEM "lim inn som ny &bilde", ID_PASTENEWIMAGE, GRAYED + MENUITEM SEPARATOR + MENUITEM "&Velg Alt", ID_SELALL, GRAYED + END + POPUP "&Vis" + BEGIN + MENUITEM "&Vertøy", ID_TOOLS, CHECKED + MENUITEM "&Farger", ID_COLOR, CHECKED + MENUITEM "&Historie", ID_HISTORY, CHECKED + MENUITEM "&Statuslinje", ID_STATUSBAR, CHECKED + END + POPUP "&Bilde" + BEGIN + MENUITEM "&Crop...", -1, GRAYED + MENUITEM "&Endre størrelse ...", -1, GRAYED + MENUITEM "R&oter ...", -1, GRAYED + MENUITEM "&Flip...", -1, GRAYED + MENUITEM "&Strekk...", -1, GRAYED + MENUITEM "S&kew...", -1, GRAYED + MENUITEM "&Inverter Farger", -1, GRAYED + MENUITEM SEPARATOR + MENUITEM "&Attributter...", -1, GRAYED + END + POPUP "&Farger" + BEGIN + MENUITEM "&Rediger farger...", ID_EDITCOLOURS + END + POPUP "&vindu" + BEGIN + MENUITEM "&Cascade", ID_WINDOW_CASCADE + MENUITEM "Sorter &horisontalt", ID_WINDOW_TILE_HORZ + MENUITEM "Sorter &vertikalt", ID_WINDOW_TILE_VERT + MENUITEM "&Ordne Ikoner", ID_WINDOW_ARRANGE + MENUITEM SEPARATOR + MENUITEM "Nes&te\tCtrl+F6", ID_WINDOW_NEXT + END + POPUP "&Hjelp" + BEGIN + MENUITEM "&Om...", ID_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + + MENUITEM SEPARATOR + + END +END + + +IDD_ABOUTBOX DIALOGEX 22,16,210,182 +CAPTION "Om ImageSoft" +FONT 8,"Tahoma",0,0 +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +//EXSTYLE WS_EX_LAYERED +BEGIN + LTEXT "ImageSoft v0.1\nCopyright (C) 2006\nThomas Weidenmueller (w3seek@reactos.org)\nGed Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 150, 36 + PUSHBUTTON "Lukk", IDOK, 75, 162, 44, 15 + ICON IDI_IMAGESOFTICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 194, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + + +IDD_IMAGE_PROP DIALOGEX 6, 5, 156, 163 +CAPTION "Bilde egenskaper" +FONT 8,"MS Sans Serif",0,0 +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Navn:", IDC_STATIC, 12, 5, 38, 9 + EDITTEXT IDC_IMAGE_NAME_EDIT, 58, 3, 94, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "maleri egenskaper", IDC_STATIC, 4, 22, 148, 98 + LTEXT "bilde type:", IDC_STATIC, 12, 36, 42, 9 + CONTROL "", IDC_IMAGETYPE, "ComboBox", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST, 58, 35, 88, 54 + LTEXT "Lengde:", IDC_STATIC, 12, 51, 42, 9 + EDITTEXT IDC_WIDTH_EDIT, 58, 49, 32, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER + LTEXT "", IDC_WIDTH_STAT, 94, 51, 40, 9 + LTEXT "Høyde:", IDC_STATIC, 12, 68, 42, 9 + EDITTEXT IDC_HEIGHT_EDIT, 58, 66, 32, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER + LTEXT "", IDC_HEIGHT_STAT, 94, 68, 40, 9 + LTEXT "Oppløsning:", IDC_STATIC, 12, 84, 42, 9 + EDITTEXT IDC_RES_EDIT, 58, 83, 32, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER + LTEXT "", IDC_RES_STAT, 94, 84, 40, 9 + LTEXT "Enhet:", IDC_STATIC, 12, 99, 42, 9 + CONTROL "", IDC_UNIT, "ComboBox", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST, 58, 99, 54, 50 + LTEXT "bilde størrelse:", IDC_STATIC, 12, 125, 42, 9 + LTEXT "", IDC_IMAGE_SIZE, 58, 125, 54, 9 + PUSHBUTTON "OK", IDOK, 50, 144, 48, 13 + PUSHBUTTON "Avbryt", IDCANCEL, 102, 144, 48, 13 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." + IDS_READY " Klart." + IDS_TOOLBAR_STANDARD "Standard" + IDS_TOOLBAR_TEST "Test" + IDS_IMAGE_NAME "Bilde %1!u!" + IDS_FLT_TOOLS "Verktøy" + IDS_FLT_COLORS "Farger" + IDS_FLT_HISTORY "Historie" +END + +/* imageprop.c */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_IMAGE_MONOCHROME "Monokromt (1 bit)" + IDS_IMAGE_GREYSCALE "Gråverdiskala (8 bit)" + IDS_IMAGE_PALETTE "Palett eller 256 farger (8 bit)" + IDS_IMAGE_TRUECOLOR "Nøyaktig farger (24 bit)" + + IDS_UNIT_PIXELS "pikseler" + IDS_UNIT_CM "Cm" + IDS_UNIT_INCHES "tommer" + IDS_UNIT_DOTSCM "Tommer / Cm" + IDS_UNIT_DPI "DPI" + IDS_UNIT_KB "%d KB" + IDS_UNIT_MB "%d MB" +END + +/* Tooltips */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_NEW "Ny" + IDS_TOOLTIP_OPEN "Åpne" + IDS_TOOLTIP_SAVE "Lagre" + IDS_TOOLTIP_PRINTPRE "Utskrift &Forhåndsvisning" + IDS_TOOLTIP_PRINT "Utskrift" + IDS_TOOLTIP_CUT "Klipp ut" + IDS_TOOLTIP_COPY "Kopier" + IDS_TOOLTIP_PASTE "Lim inn" + IDS_TOOLTIP_UNDO "Angre" + IDS_TOOLTIP_REDO "Gjenta" +END + + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_HINT_BLANK " " + IDS_HINT_NEW " Åpne et nytt dokument." + IDS_HINT_OPEN " Åpene en eksisterende dokument." + IDS_HINT_CLOSE " Lukk dette vinduet." + IDS_HINT_CLOSEALL " Lukk alle vinduer." + IDS_HINT_SAVE " Lagre aktive dokument." + IDS_HINT_SAVEAS " Lagre aktive dokument med nytt navn." + IDS_HINT_PRINTPRE " Forhåndsvis utskrift." + IDS_HINT_PRINT " Skriv ut aktive dokument." + IDS_HINT_PROP " Vis egenskaper for aktive bilde." + IDS_HINT_EXIT " Avslutt denne applikasjonen." + + IDS_HINT_TOOLS " Vis eller skjul verktøy floating vindu." + IDS_HINT_COLORS " Vis eller skjul fargene floating vindu." + IDS_HINT_HISTORY " Vis eller skjul historie floating vindu." + IDS_HINT_STATUS " Vis eller skjul statuslinje." + + IDS_HINT_CASCADE " Ordne vinduer så de overlapper." + IDS_HINT_TILE_HORZ " Ordne vinduer så ingen-overlapper tittelen." + IDS_HINT_TILE_VERT " Ordne vinduer så ingen-overlapper tittelen." + IDS_HINT_ARRANGE " Ordne ikoner ved knappen av vinduet." + IDS_HINT_NEXT " Aktivere neste vinduet." + + IDS_HINT_SYS_RESTORE " Endre vinduet til normal størrelse." + IDS_HINT_SYS_MOVE " Flytt vinduet." + IDS_HINT_SYS_SIZE " Endre størrelse på dette vinduet." + IDS_HINT_SYS_MINIMIZE " Minimer vinduet til en ikon." + IDS_HINT_SYS_MAXIMIZE " Expands dette vindu for å fylle skjermen." +END diff --git a/reactos/base/applications/imagesoft/mainwnd.c b/reactos/base/applications/imagesoft/mainwnd.c index 7a650acdf5c..7f72ecc10b4 100644 --- a/reactos/base/applications/imagesoft/mainwnd.c +++ b/reactos/base/applications/imagesoft/mainwnd.c @@ -528,6 +528,7 @@ static VOID MainWndCreateFloatWindows(PMAIN_WND_INFO Info) { RECT rect; + HMENU hMenu; UINT Res; PFLT_WND WndArr[NUM_FLT_WND]; /* temp array for looping */ INT i; @@ -595,19 +596,45 @@ MainWndCreateFloatWindows(PMAIN_WND_INFO Info) } + hMenu = GetMenu(Info->hSelf); + if (Info->fltTools->hSelf != NULL) { - FloatToolbarCreateToolsGui(Info); + if (FloatToolbarCreateToolsGui(Info)) + { + //CheckMenuItem(hMenu, + // ID_TOOLS, + // MF_CHECKED); + + /* temp disable windows until they are useful */ + ShowHideWindow(Info->fltTools); + } } if (Info->fltColors->hSelf != NULL) { - FloatToolbarCreateColorsGui(Info); + if (FloatToolbarCreateColorsGui(Info)) + { + //CheckMenuItem(hMenu, + // ID_COLOR, + // MF_CHECKED); + + /* temp disable windows until they are useful */ + ShowHideWindow(Info->fltColors); + } } if (Info->fltHistory->hSelf != NULL) { - FloatToolbarCreateHistoryGui(Info); + if (FloatToolbarCreateHistoryGui(Info)) + { + //CheckMenuItem(hMenu, + // ID_HISTORY, + // MF_CHECKED); + + /* temp disable windows until they are useful */ + ShowHideWindow(Info->fltHistory); + } } } diff --git a/reactos/base/applications/imagesoft/precomp.h b/reactos/base/applications/imagesoft/precomp.h index ef4e9e10724..21c1cb78238 100644 --- a/reactos/base/applications/imagesoft/precomp.h +++ b/reactos/base/applications/imagesoft/precomp.h @@ -384,9 +384,9 @@ typedef struct _FLT_WND BOOL bOpaque; } FLT_WND, *PFLT_WND; -VOID FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info); -VOID FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info); -VOID FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info); +BOOL FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info); +BOOL FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info); +BOOL FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info); BOOL InitFloatWndClass(VOID); VOID UninitFloatWndImpl(VOID); BOOL ShowHideWindow(PFLT_WND FltInfo); diff --git a/reactos/base/applications/imagesoft/rsrc.rc b/reactos/base/applications/imagesoft/rsrc.rc new file mode 100644 index 00000000000..55c9c574544 --- /dev/null +++ b/reactos/base/applications/imagesoft/rsrc.rc @@ -0,0 +1,13 @@ + + +#include +#include "resource.h" + +/* define language neutral resources */ + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +/* include localised resources */ +#include "lang/En.rc" +#include "lang/No.rc" + diff --git a/reactos/base/applications/msconfig/freeldrpage.c b/reactos/base/applications/msconfig/freeldrpage.c index 094d5eb85e9..3646cd87d3d 100644 --- a/reactos/base/applications/msconfig/freeldrpage.c +++ b/reactos/base/applications/msconfig/freeldrpage.c @@ -15,15 +15,14 @@ HWND hFreeLdrDialog; INT_PTR CALLBACK FreeLdrPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - UNREFERENCED_PARAMETER(lParam) - UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(wParam); switch (message) { case WM_INITDIALOG: hFreeLdrDialog = hDlg; - SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); - return TRUE; - } - - return 0; + SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); + return TRUE; + } + return 0; } diff --git a/reactos/base/applications/msconfig/generalpage.c b/reactos/base/applications/msconfig/generalpage.c index 9aee271efde..8554be3ba26 100644 --- a/reactos/base/applications/msconfig/generalpage.c +++ b/reactos/base/applications/msconfig/generalpage.c @@ -15,15 +15,14 @@ HWND hGeneralDialog; INT_PTR CALLBACK GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - UNREFERENCED_PARAMETER(lParam) - UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(wParam); switch (message) { case WM_INITDIALOG: hGeneralDialog = hDlg; - SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); - return TRUE; - } - - return 0; + SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); + return TRUE; + } + return 0; } diff --git a/reactos/base/applications/msconfig/De.rc b/reactos/base/applications/msconfig/lang/De.rc similarity index 100% rename from reactos/base/applications/msconfig/De.rc rename to reactos/base/applications/msconfig/lang/De.rc diff --git a/reactos/base/applications/msconfig/En.rc b/reactos/base/applications/msconfig/lang/En.rc similarity index 100% rename from reactos/base/applications/msconfig/En.rc rename to reactos/base/applications/msconfig/lang/En.rc diff --git a/reactos/base/applications/msconfig/Fr.rc b/reactos/base/applications/msconfig/lang/Fr.rc similarity index 100% rename from reactos/base/applications/msconfig/Fr.rc rename to reactos/base/applications/msconfig/lang/Fr.rc diff --git a/reactos/base/applications/msconfig/Hu.rc b/reactos/base/applications/msconfig/lang/Hu.rc similarity index 96% rename from reactos/base/applications/msconfig/Hu.rc rename to reactos/base/applications/msconfig/lang/Hu.rc index fc8ed8aceb3..a234d29ce6f 100644 --- a/reactos/base/applications/msconfig/Hu.rc +++ b/reactos/base/applications/msconfig/lang/Hu.rc @@ -1,6 +1,6 @@ // Hungarian resources, by Robert Horvath (Talley at cubeclub.hu) -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_MSCONFIG_DIALOG DIALOG DISCARDABLE 0, 0, 378, 220 STYLE DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | diff --git a/reactos/base/applications/msconfig/Nl.rc b/reactos/base/applications/msconfig/lang/Nl.rc similarity index 100% rename from reactos/base/applications/msconfig/Nl.rc rename to reactos/base/applications/msconfig/lang/Nl.rc diff --git a/reactos/base/applications/msconfig/No.rc b/reactos/base/applications/msconfig/lang/No.rc similarity index 100% rename from reactos/base/applications/msconfig/No.rc rename to reactos/base/applications/msconfig/lang/No.rc diff --git a/reactos/base/applications/msconfig/msconfig.c b/reactos/base/applications/msconfig/msconfig.c index d1ee95f85af..1ffcc865d2c 100644 --- a/reactos/base/applications/msconfig/msconfig.c +++ b/reactos/base/applications/msconfig/msconfig.c @@ -17,10 +17,10 @@ void MsConfig_OnTabWndSelChange(void); BOOL OnCreate(HWND hWnd) { - TCHAR szTemp[256]; - TCITEM item; + TCHAR szTemp[256]; + TCITEM item; - hTabWnd = GetDlgItem(hWnd, IDC_TAB); + hTabWnd = GetDlgItem(hWnd, IDC_TAB); hGeneralPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_GENERAL_PAGE), hWnd, (DLGPROC) GeneralPageWndProc); hSystemPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_SYSTEM_PAGE), hWnd, (DLGPROC) SystemPageWndProc); hFreeLdrPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_FREELDR_PAGE), hWnd, (DLGPROC) FreeLdrPageWndProc); @@ -31,38 +31,38 @@ BOOL OnCreate(HWND hWnd) LoadString(hInst, IDS_MSCONFIG, szTemp, 256); SetWindowText(hWnd, szTemp); - // Insert Tab Pages - LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256); + // Insert Tab Pages + LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256); memset(&item, 0, sizeof(TCITEM)); item.mask = TCIF_TEXT; item.pszText = szTemp; (void)TabCtrl_InsertItem(hTabWnd, 0, &item); - LoadString(hInst, IDS_TAB_SYSTEM, szTemp, 256); + LoadString(hInst, IDS_TAB_SYSTEM, szTemp, 256); memset(&item, 0, sizeof(TCITEM)); item.mask = TCIF_TEXT; item.pszText = szTemp; (void)TabCtrl_InsertItem(hTabWnd, 1, &item); - LoadString(hInst, IDS_TAB_FREELDR, szTemp, 256); + LoadString(hInst, IDS_TAB_FREELDR, szTemp, 256); memset(&item, 0, sizeof(TCITEM)); item.mask = TCIF_TEXT; item.pszText = szTemp; (void)TabCtrl_InsertItem(hTabWnd, 2, &item); - LoadString(hInst, IDS_TAB_SERVICES, szTemp, 256); + LoadString(hInst, IDS_TAB_SERVICES, szTemp, 256); memset(&item, 0, sizeof(TCITEM)); item.mask = TCIF_TEXT; item.pszText = szTemp; (void)TabCtrl_InsertItem(hTabWnd, 3, &item); - LoadString(hInst, IDS_TAB_STARTUP, szTemp, 256); + LoadString(hInst, IDS_TAB_STARTUP, szTemp, 256); memset(&item, 0, sizeof(TCITEM)); item.mask = TCIF_TEXT; item.pszText = szTemp; (void)TabCtrl_InsertItem(hTabWnd, 4, &item); - LoadString(hInst, IDS_TAB_TOOLS, szTemp, 256); + LoadString(hInst, IDS_TAB_TOOLS, szTemp, 256); memset(&item, 0, sizeof(TCITEM)); item.mask = TCIF_TEXT; item.pszText = szTemp; @@ -70,7 +70,7 @@ BOOL OnCreate(HWND hWnd) MsConfig_OnTabWndSelChange(); - return TRUE; + return TRUE; } @@ -80,58 +80,58 @@ void MsConfig_OnTabWndSelChange(void) case 0: //General ShowWindow(hGeneralPage, SW_SHOW); ShowWindow(hSystemPage, SW_HIDE); - ShowWindow(hFreeLdrPage, SW_HIDE); - ShowWindow(hServicesPage, SW_HIDE); - ShowWindow(hStartupPage, SW_HIDE); + ShowWindow(hFreeLdrPage, SW_HIDE); + ShowWindow(hServicesPage, SW_HIDE); + ShowWindow(hStartupPage, SW_HIDE); ShowWindow(hToolsPage, SW_HIDE); BringWindowToTop(hGeneralPage); - break; + break; case 1: //SYSTEM.INI ShowWindow(hGeneralPage, SW_HIDE); ShowWindow(hSystemPage, SW_SHOW); ShowWindow(hToolsPage, SW_HIDE); - ShowWindow(hStartupPage, SW_HIDE); - ShowWindow(hFreeLdrPage, SW_HIDE); - ShowWindow(hServicesPage, SW_HIDE); + ShowWindow(hStartupPage, SW_HIDE); + ShowWindow(hFreeLdrPage, SW_HIDE); + ShowWindow(hServicesPage, SW_HIDE); BringWindowToTop(hSystemPage); break; case 2: //Freeldr ShowWindow(hGeneralPage, SW_HIDE); ShowWindow(hSystemPage, SW_HIDE); - ShowWindow(hFreeLdrPage, SW_SHOW); - ShowWindow(hServicesPage, SW_HIDE); - ShowWindow(hStartupPage, SW_HIDE); + ShowWindow(hFreeLdrPage, SW_SHOW); + ShowWindow(hServicesPage, SW_HIDE); + ShowWindow(hStartupPage, SW_HIDE); ShowWindow(hToolsPage, SW_HIDE); BringWindowToTop(hFreeLdrPage); - break; + break; case 3: //Services ShowWindow(hGeneralPage, SW_HIDE); ShowWindow(hSystemPage, SW_HIDE); - ShowWindow(hFreeLdrPage, SW_HIDE); - ShowWindow(hServicesPage, SW_SHOW); - ShowWindow(hStartupPage, SW_HIDE); + ShowWindow(hFreeLdrPage, SW_HIDE); + ShowWindow(hServicesPage, SW_SHOW); + ShowWindow(hStartupPage, SW_HIDE); ShowWindow(hToolsPage, SW_HIDE); BringWindowToTop(hServicesPage); - break; + break; case 4: //startup ShowWindow(hGeneralPage, SW_HIDE); ShowWindow(hSystemPage, SW_HIDE); - ShowWindow(hFreeLdrPage, SW_HIDE); - ShowWindow(hServicesPage, SW_HIDE); - ShowWindow(hStartupPage, SW_SHOW); + ShowWindow(hFreeLdrPage, SW_HIDE); + ShowWindow(hServicesPage, SW_HIDE); + ShowWindow(hStartupPage, SW_SHOW); ShowWindow(hToolsPage, SW_HIDE); BringWindowToTop(hStartupPage); - break; - case 5: //Tools + break; + case 5: //Tools ShowWindow(hGeneralPage, SW_HIDE); ShowWindow(hSystemPage, SW_HIDE); - ShowWindow(hFreeLdrPage, SW_HIDE); - ShowWindow(hServicesPage, SW_HIDE); - ShowWindow(hStartupPage, SW_HIDE); + ShowWindow(hFreeLdrPage, SW_HIDE); + ShowWindow(hServicesPage, SW_HIDE); + ShowWindow(hStartupPage, SW_HIDE); ShowWindow(hToolsPage, SW_SHOW); BringWindowToTop(hToolsPage); - break; - } + break; + } } @@ -142,43 +142,44 @@ MsConfigWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) int idctrl; LPNMHDR pnmh; - switch (message) { - case WM_INITDIALOG: - hMainWnd = hDlg; - return OnCreate(hDlg); + switch (message) + { + case WM_INITDIALOG: + hMainWnd = hDlg; + return OnCreate(hDlg); - case WM_COMMAND: + case WM_COMMAND: - if (LOWORD(wParam) == IDOK) { - //MsConfig_OnSaveChanges(); - } + if (LOWORD(wParam) == IDOK) + { + //MsConfig_OnSaveChanges(); + } - if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { - EndDialog(hDlg, LOWORD(wParam)); - return TRUE; - } - break; + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { + EndDialog(hDlg, LOWORD(wParam)); + return TRUE; + } + break; - case WM_NOTIFY: - idctrl = (int)wParam; - pnmh = (LPNMHDR)lParam; - if ((pnmh->hwndFrom == hTabWnd) && - (pnmh->idFrom == IDC_TAB) && - (pnmh->code == TCN_SELCHANGE)) - { - MsConfig_OnTabWndSelChange(); - } - break; - - case WM_DESTROY: - DestroyWindow(hToolsPage); - DestroyWindow(hGeneralPage); - DestroyWindow(hServicesPage); - DestroyWindow(hStartupPage); - DestroyWindow(hFreeLdrPage); - DestroyWindow(hSystemPage); - return DefWindowProc(hDlg, message, wParam, lParam); + case WM_NOTIFY: + idctrl = (int)wParam; + pnmh = (LPNMHDR)lParam; + if ((pnmh->hwndFrom == hTabWnd) && + (pnmh->idFrom == IDC_TAB) && + (pnmh->code == TCN_SELCHANGE)) + { + MsConfig_OnTabWndSelChange(); + } + break; + case WM_DESTROY: + DestroyWindow(hToolsPage); + DestroyWindow(hGeneralPage); + DestroyWindow(hServicesPage); + DestroyWindow(hStartupPage); + DestroyWindow(hFreeLdrPage); + DestroyWindow(hSystemPage); + return DefWindowProc(hDlg, message, wParam, lParam); } return 0; @@ -192,9 +193,9 @@ int APIENTRY WinMain(HINSTANCE hInstance, INITCOMMONCONTROLSEX InitControls; - UNREFERENCED_PARAMETER(hPrevInstance) - UNREFERENCED_PARAMETER(lpCmdLine) - UNREFERENCED_PARAMETER(nCmdShow) + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + UNREFERENCED_PARAMETER(nCmdShow); InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX); InitControls.dwICC = ICC_TAB_CLASSES | ICC_LISTVIEW_CLASSES; diff --git a/reactos/base/applications/msconfig/msconfig.rc b/reactos/base/applications/msconfig/msconfig.rc index ebecf854b9e..741414254f8 100644 --- a/reactos/base/applications/msconfig/msconfig.rc +++ b/reactos/base/applications/msconfig/msconfig.rc @@ -13,10 +13,5 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #include -#include "De.rc" -#include "En.rc" -#include "Fr.rc" -#include "Hu.rc" -#include "Nl.rc" -#include "No.rc" +#include "rsrc.rc" diff --git a/reactos/base/applications/msconfig/precomp.h b/reactos/base/applications/msconfig/precomp.h index 056a48ededd..d7e9be8abb2 100644 --- a/reactos/base/applications/msconfig/precomp.h +++ b/reactos/base/applications/msconfig/precomp.h @@ -3,6 +3,7 @@ #include #include #include +#include #include "resource.h" #include "msconfig.h" diff --git a/reactos/base/applications/msconfig/rsrc.rc b/reactos/base/applications/msconfig/rsrc.rc new file mode 100644 index 00000000000..d94e6ae9ac4 --- /dev/null +++ b/reactos/base/applications/msconfig/rsrc.rc @@ -0,0 +1,17 @@ + + +#include +#include "resource.h" + +/* define language neutral resources */ + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +/* include localised resources */ + +#include "lang/De.rc" +#include "lang/En.rc" +#include "lang/Fr.rc" +#include "lang/Hu.rc" +#include "lang/Nl.rc" +#include "lang/No.rc" diff --git a/reactos/base/applications/msconfig/srvpage.c b/reactos/base/applications/msconfig/srvpage.c index ef343ee1e0f..44b34884651 100644 --- a/reactos/base/applications/msconfig/srvpage.c +++ b/reactos/base/applications/msconfig/srvpage.c @@ -18,12 +18,12 @@ void GetServices ( void ); INT_PTR CALLBACK ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - LV_COLUMN column; - TCHAR szTemp[256]; - DWORD dwStyle; + LV_COLUMN column; + TCHAR szTemp[256]; + DWORD dwStyle; - UNREFERENCED_PARAMETER(lParam) - UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(wParam); switch (message) { case WM_INITDIALOG: @@ -35,7 +35,7 @@ ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES; SendMessage(hServicesListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle); - SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); + SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); // Initialize the application page's controls column.mask = LVCF_TEXT | LVCF_WIDTH; @@ -64,10 +64,10 @@ ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) (void)ListView_InsertColumn(hServicesListCtrl, 3, &column); GetServices(); - return TRUE; - } + return TRUE; + } - return 0; + return 0; } void @@ -106,7 +106,7 @@ GetServices ( void ) /* reserve memory for service info array */ pServiceStatus = (ENUM_SERVICE_STATUS_PROCESS *) HeapAlloc(GetProcessHeap(), 0, BytesNeeded); if (!pServiceStatus) - return; + return; /* fill array with service info */ if (EnumServicesStatusEx(ScHandle, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, (LPBYTE)pServiceStatus, BytesNeeded, &BytesNeeded, &NumServices, &ResumeHandle, 0) == 0) @@ -146,7 +146,7 @@ GetServices ( void ) { pServiceFailureActions = (LPSERVICE_FAILURE_ACTIONS) HeapAlloc(GetProcessHeap(), 0, BytesNeeded); if (pServiceFailureActions == NULL) - return; + return; if (!QueryServiceConfig2(hService, SERVICE_CONFIG_FAILURE_ACTIONS, (LPBYTE)pServiceFailureActions, BytesNeeded, &BytesNeeded)) { @@ -170,11 +170,11 @@ GetServices ( void ) } } - if (pServiceFailureActions != NULL) - { - HeapFree(GetProcessHeap(), 0, pServiceFailureActions); - pServiceFailureActions = NULL; - } + if (pServiceFailureActions != NULL) + { + HeapFree(GetProcessHeap(), 0, pServiceFailureActions); + pServiceFailureActions = NULL; + } /* get vendor of service binary */ BytesNeeded = 0; @@ -184,7 +184,7 @@ GetServices ( void ) { pServiceConfig = (LPQUERY_SERVICE_CONFIG) HeapAlloc(GetProcessHeap(), 0, BytesNeeded); if (pServiceConfig == NULL) - return; + return; if (!QueryServiceConfig(hService, pServiceConfig, BytesNeeded, &BytesNeeded)) { @@ -208,20 +208,21 @@ GetServices ( void ) _tcscpy(FileName, pServiceConfig->lpBinaryPathName); } - HeapFree(GetProcessHeap(), 0, pServiceConfig); - pServiceConfig = NULL; + HeapFree(GetProcessHeap(), 0, pServiceConfig); + pServiceConfig = NULL; - dwLen = GetFileVersionInfoSize(FileName, &dwHandle); + dwLen = GetFileVersionInfoSize(FileName, &dwHandle); if (dwLen) { lpData = (TCHAR*) HeapAlloc(GetProcessHeap(), 0, dwLen); if (lpData == NULL) - return; + return; - if (!GetFileVersionInfo (FileName, dwHandle, dwLen, lpData)) { - HeapFree(GetProcessHeap(), 0, lpData); - return; - } + if (!GetFileVersionInfo (FileName, dwHandle, dwLen, lpData)) + { + HeapFree(GetProcessHeap(), 0, lpData); + return; + } if (VerQueryValue(lpData, _T("\\VarFileInfo\\Translation"), &pvData, (PUINT) &BufLen)) { @@ -230,12 +231,13 @@ GetServices ( void ) wsprintf(szStrFileInfo, _T("StringFileInfo\\%04X%04X\\CompanyName"), wCodePage, wLangID); } - if (VerQueryValue (lpData, szStrFileInfo, (LPVOID) &lpBuffer, (PUINT) &BufLen)) { + if (VerQueryValue (lpData, szStrFileInfo, (LPVOID) &lpBuffer, (PUINT) &BufLen)) + { item.pszText = lpBuffer; item.iSubItem = 2; SendMessage(hServicesListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); } - HeapFree(GetProcessHeap(), 0, lpData); + HeapFree(GetProcessHeap(), 0, lpData); } else { @@ -259,5 +261,4 @@ GetServices ( void ) CloseServiceHandle(ScHandle); } - } diff --git a/reactos/base/applications/msconfig/startuppage.c b/reactos/base/applications/msconfig/startuppage.c index b440e777659..4382a31d927 100644 --- a/reactos/base/applications/msconfig/startuppage.c +++ b/reactos/base/applications/msconfig/startuppage.c @@ -14,6 +14,7 @@ HWND hStartupListCtrl; HWND hStartupDialog; void GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName ); +void GetDisabledAutostartEntriesFromRegistry (); INT_PTR CALLBACK StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) @@ -22,8 +23,8 @@ StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) TCHAR szTemp[256]; DWORD dwStyle; - UNREFERENCED_PARAMETER(lParam) - UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(wParam); switch (message) { case WM_INITDIALOG: @@ -59,6 +60,9 @@ StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) GetAutostartEntriesFromRegistry(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run")); GetAutostartEntriesFromRegistry(HKEY_CURRENT_USER, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run")); + GetDisabledAutostartEntriesFromRegistry (_T("SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\\startupreg")); + GetDisabledAutostartEntriesFromRegistry (_T("SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\\startupfolder")); + //FIXME: What about HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit //FIXME: Common Startup (startmenu) @@ -68,6 +72,83 @@ StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) return 0; } + + void +GetDisabledAutostartEntriesFromRegistry (TCHAR * szBasePath) +{ + HKEY hKey, hSubKey; + DWORD Index, SubIndex, dwValues, dwSubValues, retVal; + DWORD dwValueLength, dwDataLength = MAX_VALUE_NAME; + LV_ITEM item; + TCHAR* Data; + TCHAR szValueName[MAX_KEY_LENGTH]; + TCHAR szSubValueName[MAX_KEY_LENGTH]; + TCHAR szSubPath[MAX_KEY_LENGTH]; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, szBasePath, 0, KEY_READ | KEY_ENUMERATE_SUB_KEYS, &hKey) == ERROR_SUCCESS) + { + if (RegQueryInfoKey(hKey, NULL, NULL, NULL, &dwValues, NULL, NULL, NULL, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) + { + for (Index = 0, retVal = ERROR_SUCCESS; Index < dwValues; Index++) + { + dwValueLength = MAX_KEY_LENGTH; + dwDataLength = MAX_VALUE_NAME; + Data = (TCHAR*) HeapAlloc(GetProcessHeap(), 0, MAX_VALUE_NAME * sizeof(TCHAR)); + if (Data == NULL) + break; + + retVal = RegEnumKeyEx(hKey, Index, szValueName, &dwValueLength, NULL, NULL, NULL, NULL); + _stprintf(szSubPath, _T("%s\\%s"), szBasePath, szValueName); + memset(&item, 0, sizeof(LV_ITEM)); + item.mask = LVIF_TEXT; + item.iImage = 0; + item.pszText = szValueName; + item.iItem = ListView_GetItemCount(hStartupListCtrl); + item.lParam = 0; + (void)ListView_InsertItem(hStartupListCtrl, &item); + if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, szSubPath, 0, KEY_READ | KEY_ENUMERATE_SUB_KEYS, &hSubKey) == ERROR_SUCCESS) + { + if (RegQueryInfoKey(hSubKey, NULL, NULL, NULL, NULL, NULL, NULL, &dwSubValues, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) + { + for(SubIndex = 0; SubIndex < dwSubValues; SubIndex++) + { + dwValueLength = MAX_KEY_LENGTH; + dwDataLength = MAX_VALUE_NAME; + if(RegEnumValue(hSubKey, SubIndex, szSubValueName, &dwValueLength, NULL, NULL, (LPBYTE)Data, &dwDataLength) == ERROR_SUCCESS) + { + if (!_tcscmp(szSubValueName, _T("command"))) + { + GetLongPathName(Data, Data, (DWORD) _tcsclen(Data)); + item.pszText = Data; + item.iSubItem = 1; + SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); + } + else if (!_tcscmp(szSubValueName, _T("key")) || !_tcscmp(szSubValueName, _T("location"))) + { + GetLongPathName(Data, Data, (DWORD) _tcsclen(Data)); + item.pszText = Data; + item.iSubItem = 2; + SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); + } + else if (!_tcscmp(szSubValueName, _T("item"))) + { + GetLongPathName(Data, Data, (DWORD) _tcsclen(Data)); + item.pszText = Data; + item.iSubItem = 0; + SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); + } + } + } + } + } + RegCloseKey(hSubKey); + HeapFree(GetProcessHeap(), 0, Data); + } + } + RegCloseKey(hKey); + } +} + void GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName ) { @@ -100,6 +181,7 @@ GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName ) item.iItem = ListView_GetItemCount(hStartupListCtrl); item.lParam = 0; (void)ListView_InsertItem(hStartupListCtrl, &item); + ListView_SetCheckState(hStartupListCtrl, item.iItem, TRUE); if (dwType == REG_SZ) { diff --git a/reactos/base/applications/msconfig/systempage.c b/reactos/base/applications/msconfig/systempage.c index c972a54620d..e899c454bbe 100644 --- a/reactos/base/applications/msconfig/systempage.c +++ b/reactos/base/applications/msconfig/systempage.c @@ -14,14 +14,16 @@ HWND hSystemDialog; INT_PTR CALLBACK SystemPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - UNREFERENCED_PARAMETER(lParam) - UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(wParam); switch (message) { - case WM_INITDIALOG: - hSystemDialog = hDlg; - SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); - return TRUE; - } + case WM_INITDIALOG: + { + hSystemDialog = hDlg; + SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); + return TRUE; + } + } - return 0; + return 0; } diff --git a/reactos/base/applications/msconfig/toolspage.c b/reactos/base/applications/msconfig/toolspage.c index 1f5e9f8b8e5..81d6bdd9a2c 100644 --- a/reactos/base/applications/msconfig/toolspage.c +++ b/reactos/base/applications/msconfig/toolspage.c @@ -20,11 +20,11 @@ DWORD ListItems_Cmds[20]; DWORD ListItems_Params[20]; void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) { - TCHAR szTemp[256]; + TCHAR szTemp[256]; LV_ITEM item; - LoadString(hInst, name_id, szTemp, 256); - memset(&item, 0, sizeof(LV_ITEM)); + LoadString(hInst, name_id, szTemp, 256); + memset(&item, 0, sizeof(LV_ITEM)); item.mask = LVIF_TEXT; item.iImage = 0; item.pszText = szTemp; @@ -32,102 +32,114 @@ void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) { item.lParam = 0; (void)ListView_InsertItem(hToolsListCtrl, &item); - ListItems_Cmds[item.iItem] = cmd_id; - ListItems_Params[item.iItem] = param_id; + ListItems_Cmds[item.iItem] = cmd_id; + ListItems_Params[item.iItem] = param_id; - LoadString(hInst, descr_id, szTemp, 256); - item.pszText = szTemp; - item.iSubItem = 1; - SendMessage(hToolsListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); + LoadString(hInst, descr_id, szTemp, 256); + item.pszText = szTemp; + item.iSubItem = 1; + SendMessage(hToolsListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); } void FillListView ( void ) { - AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM); - AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM); - AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM); - AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM); + AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM); + AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM); + AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM); + AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM); } INT_PTR CALLBACK ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - LV_COLUMN column; - TCHAR szTemp[256]; - TCHAR szTemp2[256]; - LPNMITEMACTIVATE lpnmitem; - LPNMHDR nmh; - DWORD dwStyle; + LV_COLUMN column; + TCHAR szTemp[256]; + TCHAR szTemp2[256]; + LPNMITEMACTIVATE lpnmitem; + LPNMHDR nmh; + DWORD dwStyle; - switch (message) { - case WM_INITDIALOG: - - hToolsListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST); - hToolsDialog = hDlg; - - dwStyle = (DWORD) SendMessage(hToolsListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); - dwStyle = dwStyle | LVS_EX_FULLROWSELECT; - SendMessage(hToolsListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle); - - SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); - - // Initialize the application page's controls - column.mask = LVCF_TEXT | LVCF_WIDTH; - - LoadString(hInst, IDS_TOOLS_COLUMN_NAME, szTemp, 256); - column.pszText = szTemp; - column.cx = 150; - (void)ListView_InsertColumn(hToolsListCtrl, 0, &column); - - column.mask = LVCF_TEXT | LVCF_WIDTH; - LoadString(hInst, IDS_TOOLS_COLUMN_DESCR, szTemp, 256); - column.pszText = szTemp; - column.cx = 500; - (void)ListView_InsertColumn(hToolsListCtrl, 1, &column); - - FillListView(); - return TRUE; - - case WM_COMMAND: - switch (LOWORD(wParam)) + switch (message) + { + case WM_INITDIALOG: { - case IDC_BTN_RUN: - if (ListView_GetSelectionMark(hToolsListCtrl) != -1) { - LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], szTemp, 256); - LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256); - ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL); - } - } - break; + hToolsListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST); + hToolsDialog = hDlg; - case WM_NOTIFY: - nmh = (LPNMHDR) lParam; - if (nmh->hwndFrom == hToolsListCtrl) - { - switch (nmh->code) - { - case NM_CLICK: - lpnmitem = (LPNMITEMACTIVATE) lParam; - if (lpnmitem->iItem > -1) { - LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256); - LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); - _tcscat(szTemp, _T(" ")); - _tcscat(szTemp, szTemp2); - SendDlgItemMessage(hToolsDialog, IDC_TOOLS_CMDLINE, WM_SETTEXT, 0, (LPARAM) szTemp); - } - break; - case NM_DBLCLK: - lpnmitem = (LPNMITEMACTIVATE) lParam; - if (lpnmitem->iItem > -1) { - LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256); - LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); - ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL); - } - break; - } - } - break; - } + dwStyle = (DWORD) SendMessage(hToolsListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); + dwStyle = dwStyle | LVS_EX_FULLROWSELECT; + SendMessage(hToolsListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle); - return 0; + SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); + + // Initialize the application page's controls + column.mask = LVCF_TEXT | LVCF_WIDTH; + + LoadString(hInst, IDS_TOOLS_COLUMN_NAME, szTemp, 256); + column.pszText = szTemp; + column.cx = 150; + (void)ListView_InsertColumn(hToolsListCtrl, 0, &column); + + column.mask = LVCF_TEXT | LVCF_WIDTH; + LoadString(hInst, IDS_TOOLS_COLUMN_DESCR, szTemp, 256); + column.pszText = szTemp; + column.cx = 500; + (void)ListView_InsertColumn(hToolsListCtrl, 1, &column); + + FillListView(); + return TRUE; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_BTN_RUN: + { + if (ListView_GetSelectionMark(hToolsListCtrl) != -1) + { + LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], szTemp, 256); + LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256); + ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL); + } + } + } + break; + } + case WM_NOTIFY: + { + nmh = (LPNMHDR) lParam; + if (nmh->hwndFrom == hToolsListCtrl) + { + switch (nmh->code) + { + case NM_CLICK: + { + lpnmitem = (LPNMITEMACTIVATE) lParam; + if (lpnmitem->iItem > -1) + { + LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256); + LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); + _tcscat(szTemp, _T(" ")); + _tcscat(szTemp, szTemp2); + SendDlgItemMessage(hToolsDialog, IDC_TOOLS_CMDLINE, WM_SETTEXT, 0, (LPARAM) szTemp); + } + break; + } + case NM_DBLCLK: + { + lpnmitem = (LPNMITEMACTIVATE) lParam; + if (lpnmitem->iItem > -1) + { + LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256); + LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); + ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL); + } + break; + } + } + } + } + break; + } + return 0; } diff --git a/reactos/base/applications/network/finger/net.c b/reactos/base/applications/network/finger/net.c index 3362fb2d5df..7f932ef2b5d 100644 --- a/reactos/base/applications/network/finger/net.c +++ b/reactos/base/applications/network/finger/net.c @@ -33,17 +33,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ -#include -#include +#include #include #include #include #include "various.h" -int close(int); - void netfinger(char *name) { @@ -90,7 +87,7 @@ netfinger(char *name) (void)printf("[%s]\n", hp->h_name); if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) { fprintf(stderr, "finger: connect rc = %d", WSAGetLastError()); - (void)close(s); + (void)closesocket(s); return; } diff --git a/reactos/base/applications/network/ftp/ftp.rbuild b/reactos/base/applications/network/ftp/ftp.rbuild index 09e94576e93..7117e598aeb 100644 --- a/reactos/base/applications/network/ftp/ftp.rbuild +++ b/reactos/base/applications/network/ftp/ftp.rbuild @@ -1,11 +1,12 @@ - + . kernel32 ws2_32 + crtdll iphlpapi cmds.c cmdtab.c diff --git a/reactos/base/applications/network/ipconfig/En.rc b/reactos/base/applications/network/ipconfig/En.rc new file mode 100644 index 00000000000..17eb42e9d5a --- /dev/null +++ b/reactos/base/applications/network/ipconfig/En.rc @@ -0,0 +1,65 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE DISCARDABLE +BEGIN + IDS_BCAST "Broadcast" + IDS_P2P "Peer To Peer" + IDS_MIXED "Mixed" + IDS_HYBRID "Hybrid" + IDS_UNKNOWN "unknown" +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_OTHER "Other Type Of Adapter" + IDS_ETH "Ethernet Adapter" + IDS_TOKEN "Token Ring Adapter" + IDS_FDDI "FDDI Adapter" + IDS_PPP "PPP Adapter" + IDS_LOOP "Loopback Adapter" + IDS_SLIP "SLIP Adapter" +END + +STRINGTABLE DISCARDABLE +BEGIN +/* Please keep the spacing/formatting as per En.rc when translating */ + IDS_USAGE + "\nUSAGE:\n \ + ipconfig [/? | /all | /renew [adapter] | /release [adapter] |\n \ + /flushdns | /displaydns | /registerdns |\n \ + /showclassid adapter |\n \ + /setclassid adapter [classid] ]\n \ + \n \ + where\n \ + adapter Connection name\n \ + (wildcard characters * and ? allowed, see examples)\n \ + \n \ + Options:\n \ + /? Display this help message\n \ + /all Display full configuration information.\n \ + /release Release the IP address for the specified adapter.\n \ + /renew Renew the IP address for the specified adapter.\n \ + /flushdns Purges the DNS Resolver cache.\n \ + /registerdns Refreshes all DHCP leases and re-registers DNS names.\n \ + /displaydns Display the contents of the DNS Resolver Cache.\n \ + /showclassid Displays all the dhcp class IDs allowed for adapter.\n \ + /setclassid Modifies the dhcp class id.\n \ + \n \ + The default is to display only the IP address, subnet mask and\n \ + default gateway for each adapter bound to TCP/IP.\n \ + \n \ + For Release and Renew, if no adapter name is specified, then the IP address\n \ + leases for all adapters bound to TCP/IP will be released or renewed.\n \ + \n \ + For Setclassid, if no ClassId is specified, then the ClassId is removed.\n \ + \n \ + Examples:\n \ + > ipconfig ... Show information.\n \ + > ipconfig /all ... Show detailed information\n \ + > ipconfig /renew ... renew all adapters\n \ + > ipconfig /renew EL* ... renew any connection that has its\n \ + name starting with EL\n \ + > ipconfig /release *Con* ... release all matching connections,\n \ + eg. ""Local Area Connection 1"" or\n \ + ""Local Area Connection 2""\n" +END diff --git a/reactos/base/applications/network/ipconfig/ipconfig.c b/reactos/base/applications/network/ipconfig/ipconfig.c index 8c0c4125964..4d496d53d49 100644 --- a/reactos/base/applications/network/ipconfig/ipconfig.c +++ b/reactos/base/applications/network/ipconfig/ipconfig.c @@ -1,15 +1,9 @@ /* - * ReactOS Win32 Applications - * Copyright (C) 2005 ReactOS Team - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS arp utility + * PROJECT: ReactOS ipconfig utility + * LICENSE: GPL - See COPYING in the top level directory * FILE: apps/utils/net/ipconfig/ipconfig.c - * PURPOSE: - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * GM 14/09/05 Created - * + * PURPOSE: Display IP info for net adapters + * PROGRAMMERS: Copyright 2005 - 2006 Ged Murphy (gedmurphy@gmail.com) */ /* * TODO: @@ -17,47 +11,108 @@ * implement flushdns, registerdns, displaydns, showclassid, setclassid * allow globbing on adapter names */ + #define WIN32_LEAN_AND_MEAN #include #include -#include -#include #include -#include -#include -#include +#include #include +#include "resource.h" -#define UNICODE -#define _UNICODE +#define GUID_LEN 40 + +HINSTANCE hInstance; +HANDLE ProcessHeap; - -LPCTSTR GetNodeTypeName(UINT NodeType) +LPTSTR GetNodeTypeName(UINT NodeType) { - switch (NodeType) { - case 1: return _T("Broadcast"); - case 2: return _T("Peer To Peer"); - case 4: return _T("Mixed"); - case 8: return _T("Hybrid"); - default : return _T("unknown"); + static TCHAR szNode[14]; + + switch (NodeType) + { + case 1: + if (!LoadString(hInstance, IDS_BCAST, szNode, sizeof(szNode))) + return NULL; + break; + + case 2: + if (!LoadString(hInstance, IDS_P2P, szNode, sizeof(szNode))) + return NULL; + break; + + case 4: + if (!LoadString(hInstance, IDS_MIXED, szNode, sizeof(szNode))) + return NULL; + break; + + case 8: + if (!LoadString(hInstance, IDS_HYBRID, szNode, sizeof(szNode))) + return NULL; + break; + + default : + if (!LoadString(hInstance, IDS_UNKNOWN, szNode, sizeof(szNode))) + return NULL; + break; } + + return szNode; } -LPCTSTR GetInterfaceTypeName(UINT InterfaceType) + +LPTSTR GetInterfaceTypeName(UINT InterfaceType) { - switch (InterfaceType) { - case MIB_IF_TYPE_OTHER: return _T("Other Type Of Adapter"); - case MIB_IF_TYPE_ETHERNET: return _T("Ethernet Adapter"); - case MIB_IF_TYPE_TOKENRING: return _T("Token Ring Adapter"); - case MIB_IF_TYPE_FDDI: return _T("FDDI Adapter"); - case MIB_IF_TYPE_PPP: return _T("PPP Adapter"); - case MIB_IF_TYPE_LOOPBACK: return _T("Loopback Adapter"); - case MIB_IF_TYPE_SLIP: return _T("SLIP Adapter"); - default: return _T("unknown"); + static TCHAR szIntType[25]; + + switch (InterfaceType) + { + case MIB_IF_TYPE_OTHER: + if (!LoadString(hInstance, IDS_OTHER, szIntType, sizeof(szIntType))) + return NULL; + break; + + case MIB_IF_TYPE_ETHERNET: + if (!LoadString(hInstance, IDS_ETH, szIntType, sizeof(szIntType))) + return NULL; + break; + + case MIB_IF_TYPE_TOKENRING: + if (!LoadString(hInstance, IDS_TOKEN, szIntType, sizeof(szIntType))) + return NULL; + break; + + case MIB_IF_TYPE_FDDI: + if (!LoadString(hInstance, IDS_FDDI, szIntType, sizeof(szIntType))) + return NULL; + break; + + case MIB_IF_TYPE_PPP: + if (!LoadString(hInstance, IDS_PPP, szIntType, sizeof(szIntType))) + return NULL; + break; + + case MIB_IF_TYPE_LOOPBACK: + if (!LoadString(hInstance, IDS_LOOP, szIntType, sizeof(szIntType))) + return NULL; + break; + + case MIB_IF_TYPE_SLIP: + if (!LoadString(hInstance, IDS_SLIP, szIntType, sizeof(szIntType))) + return NULL; + break; + + default: + if (!LoadString(hInstance, IDS_UNKNOWN, szIntType, sizeof(szIntType))) + return NULL; + break; } + + return szIntType; } + /* print MAC address */ PTCHAR PrintMacAddr(PBYTE Mac) { @@ -69,84 +124,286 @@ PTCHAR PrintMacAddr(PBYTE Mac) return MacAddr; } -DWORD DoFormatMessage(DWORD ErrorCode) + +VOID DoFormatMessage(LONG ErrorCode) { LPVOID lpMsgBuf; - DWORD RetVal; + //DWORD ErrorCode; - if ((RetVal = FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - ErrorCode, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */ - (LPTSTR) &lpMsgBuf, - 0, - NULL ))) { + if (ErrorCode == 0) + ErrorCode = GetLastError(); + + if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + ErrorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */ + (LPTSTR) &lpMsgBuf, + 0, + NULL)) + { _tprintf(_T("%s"), (LPTSTR)lpMsgBuf); - LocalFree(lpMsgBuf); - /* return number of TCHAR's stored in output buffer - * excluding '\0' - as FormatMessage does*/ - return RetVal; } - else - return 0; } -INT ShowInfo(BOOL bAll) + +LPTSTR GetConnectionType(LPTSTR lpClass) +{ + HKEY hKey = NULL; + LPTSTR ConType = NULL; + TCHAR Path[256]; + LPTSTR PrePath = _T("SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\"); + LPTSTR PostPath = _T("\\Connection"); + DWORD PathSize; + DWORD dwType; + DWORD dwDataSize; + + /* don't overflow the buffer */ + PathSize = lstrlen(PrePath) + lstrlen(lpClass) + lstrlen(PostPath) + 1; + if (PathSize >= 255) + return NULL; + + wsprintf(Path, _T("%s%s%s"), PrePath, lpClass, PostPath); + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, + Path, + 0, + KEY_READ, + &hKey) == ERROR_SUCCESS) + { + if(RegQueryValueEx(hKey, + _T("Name"), + NULL, + &dwType, + NULL, + &dwDataSize) == ERROR_SUCCESS) + { + ConType = (LPTSTR)HeapAlloc(ProcessHeap, + 0, + dwDataSize); + if (ConType == NULL) + return NULL; + + if(RegQueryValueEx(hKey, + _T("Name"), + NULL, + &dwType, + (PBYTE)ConType, + &dwDataSize) != ERROR_SUCCESS) + { + ConType = NULL; + } + } + } + + if (hKey != NULL) + RegCloseKey(hKey); + + return ConType; +} + + +LPTSTR GetConnectionDescription(LPTSTR lpClass) +{ + HKEY hBaseKey = NULL; + HKEY hClassKey = NULL; + LPTSTR lpKeyClass = NULL; + LPTSTR lpConDesc = NULL; + LPTSTR lpPath = NULL; + TCHAR szPrePath[] = _T("SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}\\"); + DWORD dwType; + DWORD dwDataSize; + INT i; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, + szPrePath, + 0, + KEY_READ, + &hBaseKey) != ERROR_SUCCESS) + { + return NULL; + } + + for (i=0; ; i++) + { + DWORD PathSize; + LONG Status; + TCHAR szName[10]; + DWORD NameLen = 9; + + if ((Status = RegEnumKeyEx(hBaseKey, + i, + szName, + &NameLen, + NULL, + NULL, + NULL, + NULL)) != ERROR_SUCCESS) + { + if (Status == ERROR_NO_MORE_ITEMS) + { + DoFormatMessage(Status); + lpConDesc = NULL; + goto CLEANUP; + } + else + continue; + } + + PathSize = lstrlen(szPrePath) + lstrlen(szName) + 1; + lpPath = (LPTSTR)HeapAlloc(ProcessHeap, + 0, + PathSize * sizeof(TCHAR)); + if (lpPath == NULL) + goto CLEANUP; + + wsprintf(lpPath, _T("%s%s"), szPrePath, szName); + + //MessageBox(NULL, lpPath, NULL, 0); + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, + lpPath, + 0, + KEY_READ, + &hClassKey) != ERROR_SUCCESS) + { + goto CLEANUP; + } + + HeapFree(ProcessHeap, 0, lpPath); + lpPath = NULL; + + if(RegQueryValueEx(hClassKey, + _T("NetCfgInstanceId"), + NULL, + &dwType, + NULL, + &dwDataSize) == ERROR_SUCCESS) + { + lpKeyClass = (LPTSTR)HeapAlloc(ProcessHeap, + 0, + dwDataSize); + if (lpKeyClass == NULL) + goto CLEANUP; + + if(RegQueryValueEx(hClassKey, + _T("NetCfgInstanceId"), + NULL, + &dwType, + (PBYTE)lpKeyClass, + &dwDataSize) != ERROR_SUCCESS) + { + lpKeyClass = NULL; + HeapFree(ProcessHeap, 0, lpKeyClass); + continue; + } + } + else + continue; + + if (!lstrcmp(lpClass, lpKeyClass)) + { + HeapFree(ProcessHeap, 0, lpKeyClass); + lpKeyClass = NULL; + + if(RegQueryValueEx(hClassKey, + _T("DriverDesc"), + NULL, + &dwType, + NULL, + &dwDataSize) == ERROR_SUCCESS) + { + lpConDesc = (LPTSTR)HeapAlloc(ProcessHeap, + 0, + dwDataSize); + if (lpConDesc == NULL) + goto CLEANUP; + + if(RegQueryValueEx(hClassKey, + _T("DriverDesc"), + NULL, + &dwType, + (PBYTE)lpConDesc, + &dwDataSize) != ERROR_SUCCESS) + { + lpConDesc = NULL; + goto CLEANUP; + } + } + else + lpConDesc = NULL; + + break; + } + } + +CLEANUP: + if (hBaseKey != NULL) + RegCloseKey(hBaseKey); + if (hClassKey != NULL) + RegCloseKey(hClassKey); + if (lpConDesc != NULL) + HeapFree(ProcessHeap, 0, lpPath); + if (lpConDesc != NULL) + HeapFree(ProcessHeap, 0, lpKeyClass); + + return lpConDesc; +} + + +VOID ShowInfo(BOOL bAll) { PIP_ADAPTER_INFO pAdapterInfo = NULL; PIP_ADAPTER_INFO pAdapter = NULL; - ULONG adaptOutBufLen; + ULONG adaptOutBufLen = 0; + PFIXED_INFO pFixedInfo = NULL; + ULONG netOutBufLen = 0; - PFIXED_INFO pFixedInfo; - ULONG netOutBufLen; - PIP_ADDR_STRING pIPAddr = NULL; + /* call GetAdaptersInfo to obtain the adapter info */ + if (GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen) == ERROR_BUFFER_OVERFLOW) + { + pAdapterInfo = (IP_ADAPTER_INFO *)HeapAlloc(ProcessHeap, 0, adaptOutBufLen); + if (pAdapterInfo == NULL) + return; - DWORD ErrRet = 0; - - /* assign memory for call to GetNetworkParams */ - pFixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) ); - netOutBufLen = sizeof(FIXED_INFO); - - /* assign memory for call to GetAdapterInfo */ - pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) ); - adaptOutBufLen = sizeof(IP_ADAPTER_INFO); - - /* set required buffer size */ - if(GetNetworkParams(pFixedInfo, &netOutBufLen) == ERROR_BUFFER_OVERFLOW) - { - GlobalFree(pFixedInfo); - pFixedInfo = (FIXED_INFO *) GlobalAlloc(GPTR, netOutBufLen); + if (GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen) != NO_ERROR) + { + DoFormatMessage(0); + HeapFree(ProcessHeap, 0, pAdapterInfo); + return; + } + } + else + { + DoFormatMessage(0); + return; } - /* set required buffer size */ - if (GetAdaptersInfo( pAdapterInfo, &adaptOutBufLen) == ERROR_BUFFER_OVERFLOW) - { - free(pAdapterInfo); - pAdapterInfo = (IP_ADAPTER_INFO *) malloc (adaptOutBufLen); + /* call GetNetworkParams to obtain the network info */ + if(GetNetworkParams(pFixedInfo, &netOutBufLen) == ERROR_BUFFER_OVERFLOW) + { + pFixedInfo = (FIXED_INFO *)HeapAlloc(ProcessHeap, 0, netOutBufLen); + if (pFixedInfo == NULL) + return; + + if (GetNetworkParams(pFixedInfo, &netOutBufLen) != NO_ERROR) + { + DoFormatMessage(0); + HeapFree(ProcessHeap, 0, pFixedInfo); + return; + } + } + else + { + DoFormatMessage(0); + return; } - if ((ErrRet = GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen)) != NO_ERROR) - { - _tprintf(_T("GetAdaptersInfo failed : ")); - DoFormatMessage(ErrRet); - return EXIT_FAILURE; - } - - if ((ErrRet = GetNetworkParams(pFixedInfo, &netOutBufLen)) != NO_ERROR) - { - _tprintf(_T("GetNetworkParams failed : ")); - DoFormatMessage(ErrRet); - return EXIT_FAILURE; - } - pAdapter = pAdapterInfo; _tprintf(_T("\nReactOS IP Configuration\n\n")); - if (bAll) { _tprintf(_T("\tHost Name . . . . . . . . . . . . : %s\n"), pFixedInfo->HostName); @@ -163,11 +420,17 @@ INT ShowInfo(BOOL bAll) _tprintf(_T("\tDNS Suffix Search List. . . . . . : %s\n"), pFixedInfo->DomainName); } - while (pAdapter) - { + while (pAdapter) + { + LPTSTR IntType, myConType; + + IntType = GetInterfaceTypeName(pAdapter->Type); + myConType = GetConnectionType(pAdapter->AdapterName); + + _tprintf(_T("\n%s %s: \n\n"), IntType , myConType); + + if (myConType != NULL) HeapFree(ProcessHeap, 0, myConType); - _tprintf(_T("\n%s ...... : \n\n"), GetInterfaceTypeName(pAdapter->Type)); - /* check if the adapter is connected to the media */ if (_tcscmp(pAdapter->IpAddressList.IpAddress.String, "0.0.0.0") == 0) { @@ -175,12 +438,12 @@ INT ShowInfo(BOOL bAll) pAdapter = pAdapter->Next; continue; } - + _tprintf(_T("\tConnection-specific DNS Suffix. . : %s\n"), pFixedInfo->DomainName); if (bAll) { - _tprintf(_T("\tDescription . . . . . . . . . . . : %s\n"), pAdapter->Description); + _tprintf(_T("\tDescription . . . . . . . . . . . : %s\n"), GetConnectionDescription(pAdapter->AdapterName)); _tprintf(_T("\tPhysical Address. . . . . . . . . : %s\n"), PrintMacAddr(pAdapter->Address)); if (pAdapter->DhcpEnabled) _tprintf(_T("\tDHCP Enabled. . . . . . . . . . . : Yes\n")); @@ -195,22 +458,26 @@ INT ShowInfo(BOOL bAll) if (bAll) { + PIP_ADDR_STRING pIPAddr; + if (pAdapter->DhcpEnabled) _tprintf(_T("\tDHCP Server . . . . . . . . . . . : %s\n"), pAdapter->DhcpServer.IpAddress.String); _tprintf(_T("\tDNS Servers . . . . . . . . . . . : ")); _tprintf(_T("%s\n"), pFixedInfo->DnsServerList.IpAddress.String); - pIPAddr = pFixedInfo -> DnsServerList.Next; + pIPAddr = pFixedInfo->DnsServerList.Next; while (pIPAddr) { _tprintf(_T("\t\t\t\t\t %s\n"), pIPAddr ->IpAddress.String ); - pIPAddr = pIPAddr ->Next; + pIPAddr = pIPAddr->Next; } + if (pAdapter->HaveWins) { _tprintf(_T("\tPrimary WINS Server . . . . . . . : %s\n"), pAdapter->PrimaryWinsServer.IpAddress.String); _tprintf(_T("\tSecondard WINS Server . . . . . . : %s\n"), pAdapter->SecondaryWinsServer.IpAddress.String); } + if (pAdapter->DhcpEnabled) { _tprintf(_T("\tLease Obtained. . . . . . . . . . : %s"), _tasctime(localtime(&pAdapter->LeaseObtained))); @@ -218,51 +485,56 @@ INT ShowInfo(BOOL bAll) } } _tprintf(_T("\n")); - - pAdapter = pAdapter->Next; + + pAdapter = pAdapter->Next; } - - return 0; + + HeapFree(ProcessHeap, 0, pFixedInfo); + HeapFree(ProcessHeap, 0, pAdapterInfo); } -INT Release(TCHAR Index) +VOID Release(LPTSTR Index) { IP_ADAPTER_INDEX_MAP AdapterInfo; - DWORD dwRetVal = 0; + DWORD ret; /* if interface is not given, query GetInterfaceInfo */ - if (Index == (TCHAR)NULL) + if (Index == NULL) { - PIP_INTERFACE_INFO pInfo; - ULONG ulOutBufLen; - pInfo = (IP_INTERFACE_INFO *) malloc(sizeof(IP_INTERFACE_INFO)); - ulOutBufLen = 0; + PIP_INTERFACE_INFO pInfo = NULL; + ULONG ulOutBufLen = 0; - /* Make an initial call to GetInterfaceInfo to get - * the necessary size into the ulOutBufLen variable */ - if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) + if (GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) { - GlobalFree(pInfo); - pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen); - } + pInfo = (IP_INTERFACE_INFO *)HeapAlloc(ProcessHeap, 0, ulOutBufLen); + if (pInfo == NULL) + return; - /* Make a second call to GetInterfaceInfo to get the actual data we want */ - if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR ) - { - AdapterInfo = pInfo->Adapter[0]; - _tprintf(_T("name - %S\n"), pInfo->Adapter[0].Name); + if (GetInterfaceInfo(pInfo, &ulOutBufLen) == NO_ERROR ) + { + CopyMemory(&AdapterInfo, &pInfo->Adapter[0], sizeof(IP_ADAPTER_INDEX_MAP)); + _tprintf(_T("name - %S\n"), pInfo->Adapter[0].Name); + HeapFree(ProcessHeap, 0, pInfo); + } + else + { + DoFormatMessage(0); + HeapFree(ProcessHeap, 0, pInfo); + return; + } } else { - _tprintf(_T("\nGetInterfaceInfo failed : ")); - DoFormatMessage(dwRetVal); + DoFormatMessage(0); + return; } } else { ; - /* we need to be able to release connections by name with support for globbing + /* FIXME: + * we need to be able to release connections by name with support for globbing * i.e. ipconfig /release Eth* will release all cards starting with Eth... * ipconfig /release *con* will release all cards with 'con' in their name */ @@ -270,52 +542,66 @@ INT Release(TCHAR Index) /* Call IpReleaseAddress to release the IP address on the specified adapter. */ - if ((dwRetVal = IpReleaseAddress(&AdapterInfo)) != NO_ERROR) + if ((ret = IpReleaseAddress(&AdapterInfo)) != NO_ERROR) { - _tprintf(_T("\nAn error occured while releasing interface %s : "), _T("*name*")); - DoFormatMessage(dwRetVal); + _tprintf(_T("\nAn error occured while releasing interface %S : \n"), AdapterInfo.Name); + DoFormatMessage(ret); } - return 0; + } -INT Renew(TCHAR Index) +VOID Renew(LPTSTR Index) { IP_ADAPTER_INDEX_MAP AdapterInfo; - DWORD dwRetVal = 0; /* if interface is not given, query GetInterfaceInfo */ - if (Index == (TCHAR)NULL) + if (Index == NULL) { PIP_INTERFACE_INFO pInfo; - ULONG ulOutBufLen; - pInfo = (IP_INTERFACE_INFO *) malloc(sizeof(IP_INTERFACE_INFO)); - ulOutBufLen = 0; + ULONG ulOutBufLen = 0; + + pInfo = (IP_INTERFACE_INFO *)HeapAlloc(ProcessHeap, 0, sizeof(IP_INTERFACE_INFO)); + if (pInfo == NULL) + { + _tprintf(_T("memory allocation error")); + return; + } /* Make an initial call to GetInterfaceInfo to get * the necessary size into the ulOutBufLen variable */ if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) { - GlobalFree(pInfo); - pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen); + HeapFree(ProcessHeap, 0, pInfo); + pInfo = (IP_INTERFACE_INFO *)HeapAlloc(ProcessHeap, 0, ulOutBufLen); + if (pInfo == NULL) + { + _tprintf(_T("memory allocation error")); + return; + } } /* Make a second call to GetInterfaceInfo to get the actual data we want */ - if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR ) + if (GetInterfaceInfo(pInfo, &ulOutBufLen) == NO_ERROR ) { - AdapterInfo = pInfo->Adapter[0]; + CopyMemory(&AdapterInfo, &pInfo->Adapter[0], sizeof(IP_ADAPTER_INDEX_MAP)); _tprintf(_T("name - %S\n"), pInfo->Adapter[0].Name); - } else { - _tprintf(_T("\nGetInterfaceInfo failed : ")); - DoFormatMessage(dwRetVal); } + else + { + _tprintf(_T("\nGetInterfaceInfo failed : ")); + DoFormatMessage(0); + } + + HeapFree(ProcessHeap, 0, pInfo); } else { ; - /* we need to be able to renew connections by name with support for globbing + /* FIXME: + * we need to be able to renew connections by name with support for globbing * i.e. ipconfig /renew Eth* will renew all cards starting with Eth... * ipconfig /renew *con* will renew all cards with 'con' in their name */ @@ -323,95 +609,48 @@ INT Renew(TCHAR Index) /* Call IpRenewAddress to renew the IP address on the specified adapter. */ - if ((dwRetVal = IpRenewAddress(&AdapterInfo)) != NO_ERROR) + if (IpRenewAddress(&AdapterInfo) != NO_ERROR) { _tprintf(_T("\nAn error occured while renew interface %s : "), _T("*name*")); - DoFormatMessage(dwRetVal); - } - return 0; -} - -/* temp func for testing purposes */ -VOID Info() -{ - // Declare and initialize variables - PIP_INTERFACE_INFO pInfo; - ULONG ulOutBufLen; - DWORD dwRetVal; - - pInfo = (IP_INTERFACE_INFO *) malloc( sizeof(IP_INTERFACE_INFO) ); - ulOutBufLen = sizeof(IP_INTERFACE_INFO); - dwRetVal = 0; - - - // Make an initial call to GetInterfaceInfo to get - // the necessary size in the ulOutBufLen variable - if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER) - { - free(pInfo); - pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen); - } - - // Make a second call to GetInterfaceInfo to get - // the actual data we need - if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR ) - { - int i; - for (i=0; iNumAdapters; i++) - { - printf("\tAdapter Name: %S\n", pInfo->Adapter[i].Name); - printf("\tAdapter Index: %ld\n", pInfo->Adapter[i].Index); - printf("\tNum Adapters: %ld\n", pInfo->NumAdapters); - } - } - else - { - printf("GetInterfaceInfo failed.\n"); - DoFormatMessage(dwRetVal); + DoFormatMessage(0); } } + VOID Usage(VOID) { - _tprintf(_T("\nUSAGE:\n" - " ipconfig [/? | /all | /renew [adapter] | /release [adapter] |\n" - " /flushdns | /displaydns | /registerdns |\n" - " /showclassid adapter |\n" - " /setclassid adapter [classid] ]\n" - "\n" - "where\n" - " adapter Connection name\n" - " (wildcard characters * and ? allowed, see examples)\n" - "\n" - " Options:\n" - " /? Display this help message\n" - " /all Display full configuration information.\n" - " /release Release the IP address for the specified adapter.\n" - " /renew Renew the IP address for the specified adapter.\n" - " /flushdns Purges the DNS Resolver cache.\n" - " /registerdns Refreshes all DHCP leases and re-registers DNS names.\n" - " /displaydns Display the contents of the DNS Resolver Cache.\n" - " /showclassid Displays all the dhcp class IDs allowed for adapter.\n" - " /setclassid Modifies the dhcp class id.\n" - "\n" - "The default is to display only the IP address, subnet mask and\n" - "default gateway for each adapter bound to TCP/IP.\n" - "\n" - "For Release and Renew, if no adapter name is specified, then the IP address\n" - "leases for all adapters bound to TCP/IP will be released or renewed.\n" - "\n" - "For Setclassid, if no ClassId is specified, then the ClassId is removed.\n" - "\n" - "Examples:\n" - " > ipconfig ... Show information.\n" - " > ipconfig /all ... Show detailed information\n" - " > ipconfig /renew ... renew all adapters\n" - " > ipconfig /renew EL* ... renew any connection that has its\n" - " name starting with EL\n" - " > ipconfig /release *Con* ... release all matching connections,\n" - " eg. \"Local Area Connection 1\" or\n" - " \"Local Area Connection 2\"\n")); + HRSRC hRes; + LPTSTR lpUsage; + DWORD Size; + + LPTSTR lpName = (LPTSTR)MAKEINTRESOURCE((IDS_USAGE >> 4) + 1); + + hRes = FindResource(hInstance, + lpName, + RT_STRING); + if (hRes != NULL) + { + if ((Size = SizeofResource(hInstance, + hRes))) + { + lpUsage = (LPTSTR)HeapAlloc(ProcessHeap, + 0, + Size); + if (lpUsage == NULL) + return; + + if (LoadString(hInstance, + IDS_USAGE, + lpUsage, + Size)) + { + _tprintf(_T("%s"), lpUsage); + } + } + } + + } int main(int argc, char *argv[]) @@ -426,6 +665,9 @@ int main(int argc, char *argv[]) BOOL DoShowclassid=FALSE; BOOL DoSetclassid=FALSE; + hInstance = GetModuleHandle(NULL); + ProcessHeap = GetProcessHeap(); + /* Parse command line for options we have been given. */ if ( (argc > 1)&&(argv[1][0]=='/') ) { @@ -472,15 +714,15 @@ int main(int argc, char *argv[]) case 1: /* Default behaviour if no options are given*/ ShowInfo(FALSE); break; - case 2: /* Process all the options that take no paramiters */ + case 2: /* Process all the options that take no parameters */ if (DoUsage) Usage(); else if (DoAll) ShowInfo(TRUE); else if (DoRelease) - Release((TCHAR)NULL); + Release(NULL); else if (DoRenew) - Renew((TCHAR)NULL); + Renew(NULL); else if (DoFlushdns) _tprintf(_T("\nSorry /flushdns is not implemented yet\n")); else if (DoRegisterdns) @@ -490,7 +732,7 @@ int main(int argc, char *argv[]) else Usage(); break; - case 3: /* Process all the options that can have 1 paramiters */ + case 3: /* Process all the options that can have 1 parameter */ if (DoRelease) _tprintf(_T("\nSorry /release [adapter] is not implemented yet\n")); //Release(argv[2]); @@ -503,7 +745,7 @@ int main(int argc, char *argv[]) else Usage(); break; - case 4: /* Process all the options that can have 2 paramiters */ + case 4: /* Process all the options that can have 2 parameters */ if (DoSetclassid) _tprintf(_T("\nSorry /setclassid adapter [classid]is not implemented yet\n")); else @@ -515,3 +757,4 @@ int main(int argc, char *argv[]) return 0; } + diff --git a/reactos/base/applications/network/ipconfig/ipconfig.rbuild b/reactos/base/applications/network/ipconfig/ipconfig.rbuild index 425dc56db42..7cf80bb6976 100644 --- a/reactos/base/applications/network/ipconfig/ipconfig.rbuild +++ b/reactos/base/applications/network/ipconfig/ipconfig.rbuild @@ -1,11 +1,12 @@ - . - - kernel32 - user32 - iphlpapi - ipconfig.c - ipconfig.rc + . + + kernel32 + user32 + iphlpapi + advapi32 + ipconfig.c + ipconfig.rc diff --git a/reactos/base/applications/network/ipconfig/ipconfig.rc b/reactos/base/applications/network/ipconfig/ipconfig.rc index 15ce16298eb..5aa31a43b6c 100644 --- a/reactos/base/applications/network/ipconfig/ipconfig.rc +++ b/reactos/base/applications/network/ipconfig/ipconfig.rc @@ -1,5 +1,11 @@ -#define REACTOS_STR_FILE_DESCRIPTION "ReactOS TCP/IPv4 Win32 ipconfig\0" -#define REACTOS_STR_INTERNAL_NAME "ipconfig\0" -#define REACTOS_STR_ORIGINAL_FILENAME "ipconfig.exe\0" -#define REACTOS_STR_ORIGINAL_COPYRIGHT "Ged Murphy (gedmurphy@gmail.com)\0" +#include +#include +#include "resource.h" + +#define REACTOS_STR_FILE_DESCRIPTION "IP Configuration utility\0" +#define REACTOS_STR_INTERNAL_NAME "ipconfig\0" +#define REACTOS_STR_ORIGINAL_FILENAME "ipconfig.exe\0" +#define REACTOS_STR_ORIGINAL_COPYRIGHT "Ged Murphy \0" #include + +#include "En.rc" diff --git a/reactos/base/applications/network/ipconfig/resource.h b/reactos/base/applications/network/ipconfig/resource.h new file mode 100644 index 00000000000..fe99c936db7 --- /dev/null +++ b/reactos/base/applications/network/ipconfig/resource.h @@ -0,0 +1,18 @@ + +#define IDS_USAGE 100 + +#define IDS_UNKNOWN 101 + +#define IDS_BCAST 102 +#define IDS_P2P 103 +#define IDS_MIXED 104 +#define IDS_HYBRID 105 + +/* adapter types */ +#define IDS_OTHER 106 +#define IDS_ETH 107 +#define IDS_TOKEN 108 +#define IDS_FDDI 109 +#define IDS_PPP 110 +#define IDS_LOOP 111 +#define IDS_SLIP 112 diff --git a/reactos/base/applications/network/net/cmdStop.c b/reactos/base/applications/network/net/cmdStop.c new file mode 100644 index 00000000000..16f36690403 --- /dev/null +++ b/reactos/base/applications/network/net/cmdStop.c @@ -0,0 +1,107 @@ + +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS net command + * FILE: + * PURPOSE: + * + * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org) + */ + +#include "net.h" + +INT cmdStop(INT argc, CHAR **argv ) +{ + char *string; + long size = 100*sizeof(char); + + if (argc>4) + { + help(); + return 0; + } + + if (argc==2) + { + string = (char *) malloc(size); + if (string != NULL) + { + sprintf(string,"rpcclient -c \"service enum\""); + system(string); + free(string); + } + return 0; + } + + if (argc==3) + { + stop_service(argv[1]); + return 0; + } + + return 0; +} + + +INT stop_service(CHAR *service) +{ + + CHAR *srvlst; + LONG pos=0; + LONG old_pos=0; + LONG row_size=0; + LONG size=0; + + CHAR *row; /* we assume display name can max be 20 row and each row is 80 char */ + + + /* Get the size for srvlst */ + myCreateProcessStartGetSzie("rpcclient -c \"service enum\"", &size); + if (size==0) + { + return 0; + } + + srvlst = (CHAR *) malloc(size); + if (srvlst == NULL) + { + return 0; + } + /* Get the server list */ + myCreateProcessStart("rpcclient -c \"service enum\"", srvlst, size); + + + /* scan after display name */ + while (pos4) + { + help(); + return 0; + } + + if (argc==2) + { + string = (char *) malloc(size); + if (string != NULL) + { + sprintf(string,"rpcclient -c \"service enum\""); + system(string); + free(string); + } + return 0; + } + + if (argc==3) + { + start_service(argv[1]); + return 0; + } + + return 0; +} + + +INT start_service(CHAR *service) +{ + + CHAR *srvlst; + LONG pos=0; + LONG old_pos=0; + LONG row_size=0; + LONG size=0; + + CHAR *row; /* we assume display name can max be 20 row and each row is 80 char */ + + + /* Get the size for srvlst */ + myCreateProcessStartGetSzie("rpcclient -c \"service enum\"", &size); + if (size==0) + { + return 0; + } + + srvlst = (CHAR *) malloc(size); + if (srvlst == NULL) + { + return 0; + } + /* Get the server list */ + myCreateProcessStart("rpcclient -c \"service enum\"", srvlst, size); + + + /* scan after display name */ + while (pos3) + { + return 0; + } + + if (strcmp(argv[0],"ACCOUNTS")==0) + { + printf("ACCOUNTS\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"COMPUTER")==0) + { + printf("COMPUTER\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"CONFIG")==0) + { + printf("CONFIG\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"CONTINUE")==0) + { + printf("CONTINUE\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"FILE")==0) + { + printf("FILE\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"GROUP")==0) + { + printf("GROUP\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"HELP")==0) + { + printf("HELP\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"HELPMSG")==0) + { + printf("HELPMSG\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"LOCALGROUP")==0) + { + printf("LOCALGROUP\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"NAME")==0) + { + printf("NAME\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"PRINT")==0) + { + printf("PRINT\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"SEND")==0) + { + printf("SEND\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"SESSION")==0) + { + printf("SESSION\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"SHARE")==0) + { + printf("SHARE\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"START")==0) + { + printf("START\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"STATISTICS")==0) + { + printf("STATISTICS\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"STOP")==0) + { + printf("STOP\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"TIME")==0) + { + printf("TIME\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"USE")==0) + { + printf("USE\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"USER")==0) + { + printf("USER\n"); + printf("help text\n"); + return 0; + } + + if (strcmp(argv[0],"VIEW")==0) + { + printf("VIEW\n"); + printf("help text\n"); + return 0; + } + + help(); + return 0; +} + +void help() +{ + printf("NET ACCOUNTS\n"); + printf("NET COMPUTER\n"); + printf("NET CONFIG\n"); + printf("NET CONFIG SERVER\n"); + printf("NET CONFIG WORKSTATION\n"); + printf("NET CONTINUE\n"); + printf("NET FILE\n"); + printf("NET GROUP\n"); + + printf("NET HELP\n"); + printf("NET HELPMSG\n"); + printf("NET LOCALGROUP\n"); + printf("NET NAME\n"); + printf("NET PAUSE\n"); + printf("NET PRINT\n"); + printf("NET SEND\n"); + printf("NET SESSION\n"); + + printf("NET SHARE\n"); + printf("NET START\n"); + printf("NET STATISTICS\n"); + printf("NET STOP\n"); + printf("NET TIME\n"); + printf("NET USE\n"); + printf("NET USER\n"); + printf("NET VIEW\n"); +} diff --git a/reactos/base/applications/network/net/main.c b/reactos/base/applications/network/net/main.c new file mode 100644 index 00000000000..1bdd53b80de --- /dev/null +++ b/reactos/base/applications/network/net/main.c @@ -0,0 +1,138 @@ + +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS net command + * FILE: + * PURPOSE: + * + * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org) + */ + +#include "net.h" + + + +int main(int argc, char **argv) +{ + if (argc<2) + { + help(); + return 1; + } + + if (stricmp(argv[1],"ACCOUNTS")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"COMPUTER")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"CONFIG")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"CONTINUE")==0) + { + return unimplement(); + } + + if (stricmp(argv[1],"FILE")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"GROUP")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"HELP")==0) + { + return cmdHelp(argc,&argv[1]); + } + if (stricmp(argv[1],"HELPMSG")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"LOCALGROUP")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"NAME")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"PRINT")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"SEND")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"SESSION")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"SHARE")==0) + { + return unimplement(); + } + + if (stricmp(argv[1],"START")==0) + { + return cmdStart(argc, &argv[1]); + } + if (stricmp(argv[1],"STATISTICS")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"STOP")==0) + { + return cmdStop(argc, &argv[1]); + } + if (stricmp(argv[1],"TIME")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"USE")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"USER")==0) + { + return unimplement(); + } + if (stricmp(argv[1],"VIEW")==0) + { + return unimplement(); + } + + help(); + return 1; +} + + +int unimplement() +{ + printf("This command is not implement yet\n"); + return 1; +} + + + + + + + + + + + + + + + + + + + diff --git a/reactos/base/applications/network/net/net.h b/reactos/base/applications/network/net/net.h new file mode 100644 index 00000000000..e450dff1c51 --- /dev/null +++ b/reactos/base/applications/network/net/net.h @@ -0,0 +1,35 @@ + +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS net command + * FILE: + * PURPOSE: + * + * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org) + */ + +#include +#include +#include +#include + +void help(); +int unimplement(); + + +INT cmdHelp(INT argc, CHAR **argv); + +INT cmdStart(INT argc, CHAR **argv ); +INT start_service(CHAR *service); + +INT cmdStop(INT argc, CHAR **argv ); +INT stop_service(CHAR *service); + +/* Control and start rpcclient */ +BOOL myCreateProcessStartGetSzie(CHAR *cmdline, LONG *size); +BOOL myCreateProcessStart(CHAR *cmdline, CHAR *srvlst, LONG size); +BOOL myCreateProcess(HANDLE hChildStdoutWr, HANDLE hChildStdinRd, CHAR *cmdline); +LONG ReadPipe(HANDLE hStdoutWr, HANDLE hStdoutRd, CHAR *srvlst, LONG size); +LONG ReadPipeSize(HANDLE hStdoutWr, HANDLE hStdoutRd); +INT row_scanner_service(CHAR *buffer, LONG* pos, LONG size, CHAR *name,CHAR *save); + diff --git a/reactos/base/applications/network/net/net.rbuild b/reactos/base/applications/network/net/net.rbuild new file mode 100644 index 00000000000..17fd50f8b7c --- /dev/null +++ b/reactos/base/applications/network/net/net.rbuild @@ -0,0 +1,16 @@ + + + . + + + 0x600 + 0x501 + kernel32 + ws2_32 + main.c + cmdstart.c + cmdStop.c + help.c + process.c + + diff --git a/reactos/base/applications/network/net/process.c b/reactos/base/applications/network/net/process.c new file mode 100644 index 00000000000..9c21626ed3f --- /dev/null +++ b/reactos/base/applications/network/net/process.c @@ -0,0 +1,229 @@ + +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS net command + * FILE: + * PURPOSE: + * + * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org) + */ + +#include "net.h" + +BOOL myCreateProcessStartGetSzie(CHAR *cmdline, LONG *size) +{ + HANDLE hChildStdinRd; + HANDLE hChildStdinWr; + HANDLE hChildStdoutRd; + HANDLE hChildStdoutWr; + SECURITY_ATTRIBUTES saAttr; + + saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); + saAttr.bInheritHandle = TRUE; + saAttr.lpSecurityDescriptor = NULL; + + if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) + { + return FALSE; + } + + if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) + { + return FALSE; + } + + myCreateProcess(hChildStdoutWr, hChildStdinRd,"rpcclient -c \"service enum\""); + *size = ReadPipeSize(hChildStdoutWr, hChildStdoutRd); + return TRUE; +} + +BOOL myCreateProcessStart(CHAR *cmdline, CHAR *srvlst, LONG size) +{ + HANDLE hChildStdinRd; + HANDLE hChildStdinWr; + HANDLE hChildStdoutRd; + HANDLE hChildStdoutWr; + SECURITY_ATTRIBUTES saAttr; + + saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); + saAttr.bInheritHandle = TRUE; + saAttr.lpSecurityDescriptor = NULL; + + if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) + { + return FALSE; + } + + if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) + { + return FALSE; + } + + myCreateProcess(hChildStdoutWr, hChildStdinRd,"rpcclient -c \"service enum\""); + + return ReadPipe(hChildStdoutWr, hChildStdoutRd, srvlst, size); +} + +BOOL myCreateProcess(HANDLE hStdoutWr, HANDLE hStdinRd, CHAR *cmdline) +{ + PROCESS_INFORMATION piProcInfo; + STARTUPINFO siStartInfo; + BOOL status = FALSE; + + ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) ); + ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) ); + siStartInfo.cb = sizeof(STARTUPINFO); + siStartInfo.hStdError = hStdoutWr; + siStartInfo.hStdOutput = hStdoutWr; + siStartInfo.hStdInput = hStdinRd; + siStartInfo.dwFlags |= STARTF_USESTDHANDLES; + status = CreateProcess(NULL, cmdline, NULL, NULL, + TRUE, 0, NULL, NULL, &siStartInfo, &piProcInfo); + + if (status != 0) + { + CloseHandle(piProcInfo.hProcess); + CloseHandle(piProcInfo.hThread); + return status; + } + return status; +} + +LONG ReadPipeSize(HANDLE hStdoutWr, HANDLE hStdoutRd) +{ + CHAR chBuf[2]; + LONG pos=0; + + if (!CloseHandle(hStdoutWr)) + { + return 0; /* fail */ + } + + for (;;) + { + long dwRead; + if( !ReadFile( hStdoutRd, chBuf, 1, (LPDWORD)&dwRead, NULL) || dwRead == 0) + { + break; + } + else + { + pos+=dwRead; + } + } + return pos; +} + +LONG ReadPipe(HANDLE hStdoutWr, HANDLE hStdoutRd, CHAR *srvlst, LONG size) +{ + CHAR chBuf[2]; + LONG pos; + + pos=0; + + if (!CloseHandle(hStdoutWr)) + { + return 0; /* fail */ + } + + for (;;) + { + LONG dwRead; + if( !ReadFile( hStdoutRd, chBuf, 1, (LPDWORD)&dwRead, NULL) || dwRead == 0) + { + break; + } + else + { + srvlst[pos++] = chBuf[0] ; + } + } + return 0; +} + +INT row_scanner_service(CHAR *buffer, LONG* pos, LONG size, + CHAR *name,CHAR *save) +{ + LONG get_semi; + LONG t; + LONG row_size=0; + LONG start_pos; + + start_pos = *pos; + + if (*pos>=size) + { + return 0; + } + + + /* get row start */ + for (t=start_pos;t + + + diff --git a/reactos/base/applications/network/ping/ping.c b/reactos/base/applications/network/ping/ping.c index 6a9b679760c..758112493a7 100644 --- a/reactos/base/applications/network/ping/ping.c +++ b/reactos/base/applications/network/ping/ping.c @@ -489,7 +489,7 @@ static BOOL Ping(VOID) Packet->Icmp.Type = ICMPMSG_ECHOREQUEST; Packet->Icmp.Code = 0; Packet->Icmp.Id = (USHORT)GetCurrentProcessId(); - Packet->Icmp.SeqNum = (USHORT)CurrentSeqNum; + Packet->Icmp.SeqNum = htons((USHORT)CurrentSeqNum); Packet->Icmp.Checksum = 0; /* Timestamp is part of data area */ diff --git a/reactos/base/applications/network/telnet/telnet.rbuild b/reactos/base/applications/network/telnet/telnet.rbuild index 653c39a765a..bde5b87b925 100644 --- a/reactos/base/applications/network/telnet/telnet.rbuild +++ b/reactos/base/applications/network/telnet/telnet.rbuild @@ -1,6 +1,6 @@ - + . diff --git a/reactos/base/applications/network/tracert/tracert.c b/reactos/base/applications/network/tracert/tracert.c index e41269eebbd..13aeb8d971d 100644 --- a/reactos/base/applications/network/tracert/tracert.c +++ b/reactos/base/applications/network/tracert/tracert.c @@ -208,7 +208,7 @@ static INT Driver(VOID) /* if RecievePacket timed out we don't bother decoding */ if (iRecieveReturn != 1) { - iDecRes = DecodeResponse(iPacketSize, iSeqNum); + iDecRes = DecodeResponse(iPacketSize); switch (iDecRes) { @@ -570,7 +570,7 @@ static INT ReceivePacket(INT datasize) * It all is well, print the time taken for the round trip. * */ -static INT DecodeResponse(INT iPacketSize, USHORT iSeqNum) +static INT DecodeResponse(INT iPacketSize) { unsigned short header_len = recvpacket.h_len * 4; /* cast the recieved packet into an ECHO reply and a TTL Exceed so we can check the ID*/ diff --git a/reactos/base/applications/network/tracert/tracert.h b/reactos/base/applications/network/tracert/tracert.h index 67801f0f9b5..a1b2ae57ec9 100644 --- a/reactos/base/applications/network/tracert/tracert.h +++ b/reactos/base/applications/network/tracert/tracert.h @@ -77,7 +77,7 @@ static VOID ResolveHostname(void); static VOID PreparePacket(INT packetSize, USHORT seqNum); static INT SendPacket(INT datasize); static INT ReceivePacket(INT datasize); -static INT DecodeResponse(INT packetSize, USHORT seqNum); +static INT DecodeResponse(INT packetSize); static LONGLONG GetTime(void); static WORD CheckSum(PUSHORT data, UINT size); static VOID Usage(void); diff --git a/reactos/base/applications/notepad/dialog.c b/reactos/base/applications/notepad/dialog.c index eb5b80258cc..fa1c8aca6e2 100644 --- a/reactos/base/applications/notepad/dialog.c +++ b/reactos/base/applications/notepad/dialog.c @@ -322,6 +322,8 @@ static UINT_PTR CALLBACK DIALOG_FileSaveAs_Hook(HWND hDlg, UINT msg, WPARAM wPar HWND hCombo; OFNOTIFY *pNotify; + UNREFERENCED_PARAMETER(wParam); + switch(msg) { case WM_INITDIALOG: @@ -362,11 +364,11 @@ static UINT_PTR CALLBACK DIALOG_FileSaveAs_Hook(HWND hDlg, UINT msg, WPARAM wPar hCombo = GetDlgItem(hDlg, ID_ENCODING); if (hCombo) - Globals.iEncoding = SendMessage(hCombo, CB_GETCURSEL, 0, 0); + Globals.iEncoding = (int) SendMessage(hCombo, CB_GETCURSEL, 0, 0); hCombo = GetDlgItem(hDlg, ID_EOLN); if (hCombo) - Globals.iEoln = SendMessage(hCombo, CB_GETCURSEL, 0, 0); + Globals.iEoln = (int) SendMessage(hCombo, CB_GETCURSEL, 0, 0); } break; } @@ -453,7 +455,7 @@ VOID DIALOG_FilePrint(VOID) printer.nMinPage = 1; /* we really need to calculate number of pages to set nMaxPage and nToPage */ printer.nToPage = 0; - printer.nMaxPage = -1; + printer.nMaxPage = (WORD) -1; /* Let commdlg manage copy settings */ printer.nCopies = (WORD)PD_USEDEVMODECOPIES; @@ -772,7 +774,7 @@ VOID DIALOG_GoTo(VOID) SendMessage(Globals.hEdit, EM_GETSEL, (WPARAM) &dwStart, (LPARAM) &dwEnd); nLine = 1; - for (i = 0; pszText[i] && (i < dwStart); i++) + for (i = 0; pszText[i] && (i < (int) dwStart); i++) { if (pszText[i] == '\n') nLine++; @@ -803,10 +805,10 @@ VOID DIALOG_StatusBarUpdateCaretPos(VOID) TCHAR buff[MAX_PATH]; GetCaretPos(&point); - line = SendMessage(Globals.hEdit, EM_LINEFROMCHAR, (WPARAM)-1, (LPARAM)0); - ccol = SendMessage(Globals.hEdit, EM_CHARFROMPOS, (WPARAM)0, (LPARAM)MAKELPARAM(point.x, point.y)); + line = (int) SendMessage(Globals.hEdit, EM_LINEFROMCHAR, (WPARAM)-1, (LPARAM)0); + ccol = (int) SendMessage(Globals.hEdit, EM_CHARFROMPOS, (WPARAM)0, (LPARAM)MAKELPARAM(point.x, point.y)); ccol = LOWORD(ccol); - col = ccol - SendMessage(Globals.hEdit, EM_LINEINDEX, (WPARAM)line, (LPARAM)0); + col = ccol - (int) SendMessage(Globals.hEdit, EM_LINEINDEX, (WPARAM)line, (LPARAM)0); _stprintf(buff, TEXT("%S %d, %S %d"), Globals.szStatusBarLine, line+1, Globals.szStatusBarCol, col+1); SendMessage(Globals.hStatusBar, SB_SETTEXT, (WPARAM) SB_SIMPLEID, (LPARAM)buff); diff --git a/reactos/base/applications/notepad/res/Cs.rc b/reactos/base/applications/notepad/lang/Cs.rc similarity index 95% rename from reactos/base/applications/notepad/res/Cs.rc rename to reactos/base/applications/notepad/lang/Cs.rc index 6b0130c788a..6bf0fff227c 100644 --- a/reactos/base/applications/notepad/res/Cs.rc +++ b/reactos/base/applications/notepad/lang/Cs.rc @@ -1,149 +1,165 @@ -/* - * Notepad (Czech resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * Copyright 2004 David Kredba - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_CZECH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Soubor" - BEGIN - MENUITEM "&Nový...", CMD_NEW - MENUITEM "&Otevøít\tCtrl+O", CMD_OPEN - MENUITEM "&Ulo¾it\tCtrl+S", CMD_SAVE - MENUITEM "Ulo¾it j&ako...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Tisk", CMD_PRINT - MENUITEM "Nas&tavení stránky...", CMD_PAGE_SETUP - MENUITEM "Nastavení tiská&rny...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Konec", CMD_EXIT - END - POPUP "U&pravit" - BEGIN - MENUITEM "&Zpìt\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Vyjmou&t\tCtrl+X", CMD_CUT - MENUITEM "&Kopírovat\tCtrl+C", CMD_COPY - MENUITEM "&Vlo¾it\tCtrl+V", CMD_PASTE - MENUITEM "&Smazat\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Hledej\tCtrl+F", CMD_SEARCH - MENUITEM "&Najdi dal¹í\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Vybrat v¹&e\tCtrl+A", CMD_SELECT_ALL - MENUITEM "È&as/Datum\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "Zalo&mit dlouhé øádky", CMD_WRAP - MENUITEM "&Písmo...", CMD_FONT - END - POPUP "&Nápovìda" - BEGIN - MENUITEM "&Obsah", CMD_HELP_CONTENTS - MENUITEM "&Najít...", CMD_HELP_SEARCH - MENUITEM "&Pomoc k nápovìdì", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&o...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Nastavení stránky" -{ -LTEXT "Zá&hlaví:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Zápatí:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Okraje:", 0x144, 10, 43,160, 45 -LTEXT "&Levý:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Horní:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "P&ravý:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Dolní:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Storno", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Nápovìda", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Strana &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "CHYBA" -STRING_WARNING, "VAROVÁNÍ" -STRING_INFO, "Informace" - -STRING_UNTITLED, "(bez názvu)" - -STRING_ALL_FILES, "V¹echny soubory (*.*)" -STRING_TEXT_FILES_TXT, "Textové soubory (*.txt)" - -STRING_TOOLARGE, "Soubor '%s' je pro notepad pøíli¹ velký.\n \ -Pou¾ijte jiný editor, prosím." -STRING_NOTEXT, "Nebyl zadán ¾ádný text. \ -\nPlease type something and try again" -STRING_DOESNOTEXIST, "Soubor '%s'\nneexistuje.\n\n \ -Chcete ho vytvoøit ?" -STRING_NOTSAVED, "Soubor '%s'\nbyl zmìnìn.\n\n \ -Chcete ulo¾it zmìny ?" -STRING_NOTFOUND, "'%s' nebyl nalezen." -STRING_OUT_OF_MEMORY, "Není dost pamìti na dokonèení této úlohy. \ -\nUzavøete jednu èi více aplikací abyste získali více \nvolné \ -pamìti." - -} +/* + * Notepad (Czech resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * Copyright 2004 David Kredba + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_CZECH, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Soubor" + BEGIN + MENUITEM "&Nový...", CMD_NEW + MENUITEM "&Otevøít\tCtrl+O", CMD_OPEN + MENUITEM "&Ulo¾it\tCtrl+S", CMD_SAVE + MENUITEM "Ulo¾it j&ako...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Tisk", CMD_PRINT + MENUITEM "Nas&tavení stránky...", CMD_PAGE_SETUP + MENUITEM "Nastavení tiská&rny...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Konec", CMD_EXIT + END + POPUP "U&pravit" + BEGIN + MENUITEM "&Zpìt\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Vyjmou&t\tCtrl+X", CMD_CUT + MENUITEM "&Kopírovat\tCtrl+C", CMD_COPY + MENUITEM "&Vlo¾it\tCtrl+V", CMD_PASTE + MENUITEM "&Smazat\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Hledej\tCtrl+F", CMD_SEARCH + MENUITEM "&Najdi dal¹í\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Vybrat v¹&e\tCtrl+A", CMD_SELECT_ALL + MENUITEM "È&as/Datum\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "Zalo&mit dlouhé øádky", CMD_WRAP + MENUITEM "&Písmo...", CMD_FONT + END + POPUP "&Nápovìda" + BEGIN + MENUITEM "&Obsah", CMD_HELP_CONTENTS + MENUITEM "&Najít...", CMD_HELP_SEARCH + MENUITEM "&Pomoc k nápovìdì", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&o...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Nastavení stránky" +{ +LTEXT "Zá&hlaví:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Zápatí:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Okraje:", 0x144, 10, 43,160, 45 +LTEXT "&Levý:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Horní:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "P&ravý:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Dolní:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Storno", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Nápovìda", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Strana &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "CHYBA" +STRING_WARNING, "VAROVÁNÍ" +STRING_INFO, "Informace" + +STRING_UNTITLED, "(bez názvu)" + +STRING_ALL_FILES, "V¹echny soubory (*.*)" +STRING_TEXT_FILES_TXT, "Textové soubory (*.txt)" + +STRING_TOOLARGE, "Soubor '%s' je pro notepad pøíli¹ velký.\n \ +Pou¾ijte jiný editor, prosím." +STRING_NOTEXT, "Nebyl zadán ¾ádný text. \ +\nPlease type something and try again" +STRING_DOESNOTEXIST, "Soubor '%s'\nneexistuje.\n\n \ +Chcete ho vytvoøit ?" +STRING_NOTSAVED, "Soubor '%s'\nbyl zmìnìn.\n\n \ +Chcete ulo¾it zmìny ?" +STRING_NOTFOUND, "'%s' nebyl nalezen." +STRING_OUT_OF_MEMORY, "Není dost pamìti na dokonèení této úlohy. \ +\nUzavøete jednu èi více aplikací abyste získali více \nvolné \ +pamìti." + +} diff --git a/reactos/base/applications/notepad/res/Da.rc b/reactos/base/applications/notepad/lang/Da.rc similarity index 94% rename from reactos/base/applications/notepad/res/Da.rc rename to reactos/base/applications/notepad/lang/Da.rc index 32699cfa369..3f94cce81ad 100644 --- a/reactos/base/applications/notepad/res/Da.rc +++ b/reactos/base/applications/notepad/lang/Da.rc @@ -1,147 +1,163 @@ -/* - * Notepad (Danish resources) - * - * Copyright 1998 Henrik Olsen - * Copyright 2002 Sylvain Petreolle - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_DANISH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Fil" - BEGIN - MENUITEM "&Ny...", CMD_NEW - MENUITEM "Å&bn\tEnter", CMD_OPEN - MENUITEM "&Gem", CMD_SAVE - MENUITEM "Gem so&m...", CMD_SAVE_AS - MENUITEM "Side&opsætning...", CMD_PAGE_SETUP - MENUITEM "&Udskriv", CMD_PRINT - MENUITEM "&Indstil printer...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Afslut", CMD_EXIT - END - POPUP "&Rediger" - BEGIN - MENUITEM "&Fortryd\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Klip\tCtrl+X", CMD_CUT - MENUITEM "K&opier\tCtrl+C", CMD_COPY - MENUITEM "Sæt &ind\tCtrl+V", CMD_PASTE - MENUITEM "&Slet\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Marker &alt", CMD_SELECT_ALL - MENUITEM "&Dato/tid\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "Automatisk &linjeskift", CMD_WRAP - END - POPUP "&Søg" - BEGIN - MENUITEM "&Søg...", CMD_SEARCH - MENUITEM "&Find næste\tF3", CMD_SEARCH_NEXT - END - POPUP "&Hjælp" - BEGIN - MENUITEM "&Indhold", CMD_HELP_CONTENTS - MENUITEM "&Søg efter hjælp om...", CMD_HELP_SEARCH - MENUITEM "&Brug af Hjælp", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "&Om Notesblok", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Sideopsætning" -{ -LTEXT "&Sidehoved:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "Side&fod:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "Margener:", 0x144, 10, 43,160, 45 -LTEXT "&Venstre:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Højre:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Bund:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Annuller", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Hjælp", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Side &s" -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notesblok" -STRING_ERROR, "Fejl" -STRING_WARNING, "Advarsel" -STRING_INFO, "Information" - -STRING_UNTITLED, "(ikke-navngivet)" - -STRING_ALL_FILES, "Alle filer (*.*)" -STRING_TEXT_FILES_TXT, "Tekst filer (*.txt)" - -STRING_TOOLARGE, "Filen '%s' er for stor til Notesblok. \ -\nBrug en anden editor til at redigere filen." -STRING_NOTEXT, "Du har ikke skrevet noget tekst. \ -\nSkriv noget tekst, og prøv så igen" -STRING_DOESNOTEXIST, "Filen '%s'\neksistere ikke\n\n \ -Ønkser du at oprette en ny fil?" -STRING_NOTSAVED, "Filen '%s'\ner blevet ændret\n\n \ -Ønsker du at gemme ændringerne?" -STRING_NOTFOUND, "Kan ikke finde '%s'." -STRING_OUT_OF_MEMORY, "Der er ikke nok hukommelse til at udføre \ -denne operation. \nAfslut et eller flere aktive programmer for at frigøre \ -hukommelse, og prøv så igen." - -} +/* + * Notepad (Danish resources) + * + * Copyright 1998 Henrik Olsen + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_DANISH, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Fil" + BEGIN + MENUITEM "&Ny...", CMD_NEW + MENUITEM "Å&bn\tEnter", CMD_OPEN + MENUITEM "&Gem", CMD_SAVE + MENUITEM "Gem so&m...", CMD_SAVE_AS + MENUITEM "Side&opsætning...", CMD_PAGE_SETUP + MENUITEM "&Udskriv", CMD_PRINT + MENUITEM "&Indstil printer...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Afslut", CMD_EXIT + END + POPUP "&Rediger" + BEGIN + MENUITEM "&Fortryd\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Klip\tCtrl+X", CMD_CUT + MENUITEM "K&opier\tCtrl+C", CMD_COPY + MENUITEM "Sæt &ind\tCtrl+V", CMD_PASTE + MENUITEM "&Slet\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "Marker &alt", CMD_SELECT_ALL + MENUITEM "&Dato/tid\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "Automatisk &linjeskift", CMD_WRAP + END + POPUP "&Søg" + BEGIN + MENUITEM "&Søg...", CMD_SEARCH + MENUITEM "&Find næste\tF3", CMD_SEARCH_NEXT + END + POPUP "&Hjælp" + BEGIN + MENUITEM "&Indhold", CMD_HELP_CONTENTS + MENUITEM "&Søg efter hjælp om...", CMD_HELP_SEARCH + MENUITEM "&Brug af Hjælp", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "&Om Notesblok", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Sideopsætning" +{ +LTEXT "&Sidehoved:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "Side&fod:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "Margener:", 0x144, 10, 43,160, 45 +LTEXT "&Venstre:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Højre:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Bund:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Annuller", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Hjælp", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Side &s" +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notesblok" +STRING_ERROR, "Fejl" +STRING_WARNING, "Advarsel" +STRING_INFO, "Information" + +STRING_UNTITLED, "(ikke-navngivet)" + +STRING_ALL_FILES, "Alle filer (*.*)" +STRING_TEXT_FILES_TXT, "Tekst filer (*.txt)" + +STRING_TOOLARGE, "Filen '%s' er for stor til Notesblok. \ +\nBrug en anden editor til at redigere filen." +STRING_NOTEXT, "Du har ikke skrevet noget tekst. \ +\nSkriv noget tekst, og prøv så igen" +STRING_DOESNOTEXIST, "Filen '%s'\neksistere ikke\n\n \ +Ønkser du at oprette en ny fil?" +STRING_NOTSAVED, "Filen '%s'\ner blevet ændret\n\n \ +Ønsker du at gemme ændringerne?" +STRING_NOTFOUND, "Kan ikke finde '%s'." +STRING_OUT_OF_MEMORY, "Der er ikke nok hukommelse til at udføre \ +denne operation. \nAfslut et eller flere aktive programmer for at frigøre \ +hukommelse, og prøv så igen." + +} diff --git a/reactos/base/applications/notepad/res/De.rc b/reactos/base/applications/notepad/lang/De.rc similarity index 96% rename from reactos/base/applications/notepad/res/De.rc rename to reactos/base/applications/notepad/lang/De.rc index 4e1a841dae2..130ecadc0d3 100644 --- a/reactos/base/applications/notepad/res/De.rc +++ b/reactos/base/applications/notepad/lang/De.rc @@ -1,176 +1,192 @@ -/* - * Notepad (German resources) - * - * Copyright 1997,98 Marcel Baur - * Copyright 2002 Sylvain Petreolle - * - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN - -MAIN_MENU MENU -BEGIN - POPUP "&Datei" - BEGIN - MENUITEM "&Neu...", CMD_NEW - MENUITEM "Ö&ffnen...", CMD_OPEN - MENUITEM "&Speichern", CMD_SAVE - MENUITEM "Speichern &unter...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Seite ein&richten...", CMD_PAGE_SETUP - MENUITEM "&Drucken", CMD_PRINT - MENUITEM "Drucker&einrichtung...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Beenden", CMD_EXIT - END - POPUP "&Bearbeiten" - BEGIN - MENUITEM "&Rückgängig\tStrg+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Ausschneiden\tStrg+X", CMD_CUT - MENUITEM "&Kopieren\tStrg+C", CMD_COPY - MENUITEM "&Einfügen\tStrg+V", CMD_PASTE - MENUITEM "&Löschen\tEntf", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Suchen...", CMD_SEARCH - MENUITEM "&Weitersuchen\tF3", CMD_SEARCH_NEXT - MENUITEM "&Ersetzen\tCtrl+H", CMD_REPLACE - MENUITEM "Gehe zu...\tCtrl+G", CMD_GOTO - MENUITEM SEPARATOR - MENUITEM "Alles &markieren", CMD_SELECT_ALL - MENUITEM "&Uhrzeit/Datum\tF5", CMD_TIME_DATE - END - POPUP "F&ormat" - BEGIN - MENUITEM "&Zeilenumbruch", CMD_WRAP - MENUITEM "&Schriftart...", CMD_FONT - END - POPUP "&Anicht" - BEGIN - MENUITEM "Status&leiste", CMD_STATUSBAR - END - POPUP "&Hilfe" - BEGIN - MENUITEM "&Inhalt", CMD_HELP_CONTENTS - MENUITEM "&Suchen...", CMD_HELP_SEARCH - MENUITEM "&Hilfe benutzen", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&Über" CMD_ABOUT - MENUITEM "Inf&o", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Seite einrichten" -{ -LTEXT "&Kopfzeile:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Fußzeile:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "Ränder", 0x144, 10, 43,160, 45 -LTEXT "&Links:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Oben:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Unten:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Abbrechen", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Hilfe", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -/* Dialog 'Gehe zu...' */ -DIALOG_GOTO DIALOG 0,0,165,50 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Gehe zu Zeile" -{ -EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "Zeile Nummer:",0x155,5,12,45,12,WS_CHILD | WS_TABSTOP | ES_NUMBER -DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP -PUSHBUTTON "Abbrechen", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "Über ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL "", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Schließen",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "Dieses Programm ist kostenlos; Sie können es frei verteilen mit od. ohne Änderungen unter der GNU Lesser General Public License wie es von der Free Software Foundation veröffentlicht wurde; entweder Version 2.1 der Lizenz, oder eine spätere Version (ihrer Wahl).\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Seite &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Editor" -STRING_ERROR, "Fehler" -STRING_WARNING, "Achtung" -STRING_INFO, "Information" - -STRING_UNTITLED, "(unbenannt)" - -STRING_ALL_FILES, "Alle Dateien (*.*)" -STRING_TEXT_FILES_TXT, "Textdateien (*.txt)" - -STRING_TOOLARGE, "Die Datei '%s' ist zu groß für den Editor\n \ -Benutzen Sie bitte einen anderen Editor, um diese Datei zu bearbeiten." -STRING_NOTEXT, "Sie haben keinen Text eingegeben, der \ -gespeichert\n werden könnte. Geben Sie Text ein, und versuchen Sie es \ -\nerneut." -STRING_DOESNOTEXIST, "Die Datei '%s'\nexistiert nicht.\n\n \ -Möchten Sie eine neue Datei erstellen ?" -STRING_NOTSAVED, "Datei %s\n wurde geändert.\n\n \ -Möchten Sie die Änderungen speichern ?" -STRING_NOTFOUND, "'%s' kann nicht gefunden werden." -STRING_OUT_OF_MEMORY, "Nicht genügend Arbeitsspeicher, \ -um diese Funktion \nabzuschließen. Beenden Sie eine oder mehrere \ -\nAnwendungen, um den verfügbaren Arbeitsspeicher zu \nerhöhen." -STRING_CANNOTFIND "'%s' wurde nicht gefunden." -STRING_ANSI, "ANSI" -STRING_UNICODE, "Unicode" -STRING_UNICODE_BE, "Unicode (big endian)" -STRING_UTF8, "UTF-8" -STRING_CRLF, "Windows" -STRING_LF, "Unix" -STRING_CR, "Mac" -} +/* + * Notepad (German resources) + * + * Copyright 1997,98 Marcel Baur + * Copyright 2002 Sylvain Petreolle + * + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Datei" + BEGIN + MENUITEM "&Neu...", CMD_NEW + MENUITEM "Ö&ffnen...", CMD_OPEN + MENUITEM "&Speichern", CMD_SAVE + MENUITEM "Speichern &unter...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Seite ein&richten...", CMD_PAGE_SETUP + MENUITEM "&Drucken", CMD_PRINT + MENUITEM "Drucker&einrichtung...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Beenden", CMD_EXIT + END + POPUP "&Bearbeiten" + BEGIN + MENUITEM "&Rückgängig\tStrg+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Ausschneiden\tStrg+X", CMD_CUT + MENUITEM "&Kopieren\tStrg+C", CMD_COPY + MENUITEM "&Einfügen\tStrg+V", CMD_PASTE + MENUITEM "&Löschen\tEntf", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "Suchen...", CMD_SEARCH + MENUITEM "&Weitersuchen\tF3", CMD_SEARCH_NEXT + MENUITEM "&Ersetzen\tCtrl+H", CMD_REPLACE + MENUITEM "Gehe zu...\tCtrl+G", CMD_GOTO + MENUITEM SEPARATOR + MENUITEM "Alles &markieren", CMD_SELECT_ALL + MENUITEM "&Uhrzeit/Datum\tF5", CMD_TIME_DATE + END + POPUP "F&ormat" + BEGIN + MENUITEM "&Zeilenumbruch", CMD_WRAP + MENUITEM "&Schriftart...", CMD_FONT + END + POPUP "&Ansicht" + BEGIN + MENUITEM "Status&leiste", CMD_STATUSBAR + END + POPUP "&Hilfe" + BEGIN + MENUITEM "&Inhalt", CMD_HELP_CONTENTS + MENUITEM "&Suchen...", CMD_HELP_SEARCH + MENUITEM "&Hilfe benutzen", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&Über" CMD_ABOUT + MENUITEM "Inf&o", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Seite einrichten" +{ +LTEXT "&Kopfzeile:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Fußzeile:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "Ränder", 0x144, 10, 43,160, 45 +LTEXT "&Links:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Oben:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Unten:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Abbrechen", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Hilfe", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +/* Dialog 'Gehe zu...' */ +DIALOG_GOTO DIALOG 0,0,165,50 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Gehe zu Zeile" +{ +EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Zeile Nummer:",0x155,5,12,45,12,WS_CHILD | WS_TABSTOP | ES_NUMBER +DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP +PUSHBUTTON "Abbrechen", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "Über ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL "", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Schließen",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "Dieses Programm ist kostenlos; Sie können es frei verteilen mit od. ohne Änderungen unter der GNU Lesser General Public License wie es von der Free Software Foundation veröffentlicht wurde; entweder Version 2.1 der Lizenz, oder eine spätere Version (ihrer Wahl).\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Seite &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Editor" +STRING_ERROR, "Fehler" +STRING_WARNING, "Achtung" +STRING_INFO, "Information" + +STRING_UNTITLED, "(unbenannt)" + +STRING_ALL_FILES, "Alle Dateien (*.*)" +STRING_TEXT_FILES_TXT, "Textdateien (*.txt)" + +STRING_TOOLARGE, "Die Datei '%s' ist zu groß für den Editor\n \ +Benutzen Sie bitte einen anderen Editor, um diese Datei zu bearbeiten." +STRING_NOTEXT, "Sie haben keinen Text eingegeben, der \ +gespeichert\n werden könnte. Geben Sie Text ein, und versuchen Sie es \ +\nerneut." +STRING_DOESNOTEXIST, "Die Datei '%s'\nexistiert nicht.\n\n \ +Möchten Sie eine neue Datei erstellen ?" +STRING_NOTSAVED, "Datei %s\n wurde geändert.\n\n \ +Möchten Sie die Änderungen speichern ?" +STRING_NOTFOUND, "'%s' kann nicht gefunden werden." +STRING_OUT_OF_MEMORY, "Nicht genügend Arbeitsspeicher, \ +um diese Funktion \nabzuschließen. Beenden Sie eine oder mehrere \ +\nAnwendungen, um den verfügbaren Arbeitsspeicher zu \nerhöhen." +STRING_CANNOTFIND "'%s' wurde nicht gefunden." +STRING_ANSI, "ANSI" +STRING_UNICODE, "Unicode" +STRING_UNICODE_BE, "Unicode (big endian)" +STRING_UTF8, "UTF-8" +STRING_CRLF, "Windows" +STRING_LF, "Unix" +STRING_CR, "Mac" +} diff --git a/reactos/base/applications/notepad/res/En.rc b/reactos/base/applications/notepad/lang/En.rc similarity index 96% rename from reactos/base/applications/notepad/res/En.rc rename to reactos/base/applications/notepad/lang/En.rc index 628a0fdbd74..ab0145b767f 100644 --- a/reactos/base/applications/notepad/res/En.rc +++ b/reactos/base/applications/notepad/lang/En.rc @@ -1,188 +1,204 @@ -/* - * Notepad (English resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -MAIN_MENU MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "&New...", CMD_NEW - MENUITEM "&Open\tCtrl+O", CMD_OPEN - MENUITEM "&Save\tCtrl+S", CMD_SAVE - MENUITEM "Save &as...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Page Se&tup...", CMD_PAGE_SETUP - MENUITEM "&Print", CMD_PRINT - MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "E&xit", CMD_EXIT - END - POPUP "&Edit" - BEGIN - MENUITEM "&Undo\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Cu&t\tCtrl+X", CMD_CUT - MENUITEM "&Copy\tCtrl+C", CMD_COPY - MENUITEM "&Paste\tCtrl+V", CMD_PASTE - MENUITEM "&Delete\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Find...\tCtrl+F", CMD_SEARCH - MENUITEM "Find &next\tF3", CMD_SEARCH_NEXT - MENUITEM "Replace\tCtrl+H", CMD_REPLACE - MENUITEM "Go To...\tCtrl+G", CMD_GOTO - MENUITEM SEPARATOR - MENUITEM "Select &all\tCtrl+A", CMD_SELECT_ALL - MENUITEM "&Time/Date\tF5", CMD_TIME_DATE - END - POPUP "F&ormat" - BEGIN - MENUITEM "&Wrap long lines", CMD_WRAP - MENUITEM "&Font...", CMD_FONT - END - POPUP "&View" - BEGIN - MENUITEM "Status&bar", CMD_STATUSBAR - END - POPUP "&Help" - BEGIN - MENUITEM "&Contents", CMD_HELP_CONTENTS - MENUITEM "&Search...", CMD_HELP_SEARCH - MENUITEM "&Help on help", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&o", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Page Setup" -{ -LTEXT "&Header:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Footer:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Margins:", 0x144, 10, 43,160, 45 -LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Cancel", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -/* Dialog `Encoding' */ -DIALOG_ENCODING DIALOG 0, 0, 256, 44 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | - WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Encoding" -{ -COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP -LTEXT "Encoding:",0x155,5,2,41,12 -COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -LTEXT "Endlines:",0x156,5,20,41,12 -} - -/* Dialog 'Go To' */ -DIALOG_GOTO DIALOG 0,0,165,50 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Goto line" -{ -EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "Line number:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER -DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP -PUSHBUTTON "Cancel", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "ERROR" -STRING_WARNING, "WARNING" -STRING_INFO, "Information" - -STRING_UNTITLED, "(untitled)" - -STRING_ALL_FILES, "All files (*.*)" -STRING_TEXT_FILES_TXT, "Text files (*.txt)" - -STRING_TOOLARGE, "File '%s' is too large for notepad.\n \ -Please use a different editor." -STRING_NOTEXT, "You didn't enter any text. \ -\nPlease type something and try again" -STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ -Do you want to create a new file ?" -STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \ -Would you like to save the changes ?" -STRING_NOTFOUND, "'%s' can not be found." -STRING_OUT_OF_MEMORY, "Not enough memory to complete this \ -task. \nClose one or more applications to increase the amount of \nfree \ -memory." -STRING_CANNOTFIND "Cannot find '%s'" -STRING_ANSI, "ANSI" -STRING_UNICODE, "Unicode" -STRING_UNICODE_BE, "Unicode (big endian)" -STRING_UTF8, "UTF-8" -STRING_CRLF, "Windows" -STRING_LF, "Unix" -STRING_CR, "Mac" -} +/* + * Notepad (English resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&New...", CMD_NEW + MENUITEM "&Open\tCtrl+O", CMD_OPEN + MENUITEM "&Save\tCtrl+S", CMD_SAVE + MENUITEM "Save &as...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Page Se&tup...", CMD_PAGE_SETUP + MENUITEM "&Print", CMD_PRINT + MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "E&xit", CMD_EXIT + END + POPUP "&Edit" + BEGIN + MENUITEM "&Undo\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Cu&t\tCtrl+X", CMD_CUT + MENUITEM "&Copy\tCtrl+C", CMD_COPY + MENUITEM "&Paste\tCtrl+V", CMD_PASTE + MENUITEM "&Delete\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Find...\tCtrl+F", CMD_SEARCH + MENUITEM "Find &next\tF3", CMD_SEARCH_NEXT + MENUITEM "Replace\tCtrl+H", CMD_REPLACE + MENUITEM "Go To...\tCtrl+G", CMD_GOTO + MENUITEM SEPARATOR + MENUITEM "Select &all\tCtrl+A", CMD_SELECT_ALL + MENUITEM "&Time/Date\tF5", CMD_TIME_DATE + END + POPUP "F&ormat" + BEGIN + MENUITEM "&Wrap long lines", CMD_WRAP + MENUITEM "&Font...", CMD_FONT + END + POPUP "&View" + BEGIN + MENUITEM "Status&bar", CMD_STATUSBAR + END + POPUP "&Help" + BEGIN + MENUITEM "&Contents", CMD_HELP_CONTENTS + MENUITEM "&Search...", CMD_HELP_SEARCH + MENUITEM "&Help on help", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&o", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Page Setup" +{ +LTEXT "&Header:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Footer:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Margins:", 0x144, 10, 43,160, 45 +LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Cancel", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +/* Dialog `Encoding' */ +DIALOG_ENCODING DIALOG 0, 0, 256, 44 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | + WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Encoding" +{ +COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP +LTEXT "Encoding:",0x155,5,2,41,12 +COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +LTEXT "Endlines:",0x156,5,20,41,12 +} + +/* Dialog 'Go To' */ +DIALOG_GOTO DIALOG 0,0,165,50 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Goto line" +{ +EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Line number:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER +DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP +PUSHBUTTON "Cancel", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "ERROR" +STRING_WARNING, "WARNING" +STRING_INFO, "Information" + +STRING_UNTITLED, "(untitled)" + +STRING_ALL_FILES, "All files (*.*)" +STRING_TEXT_FILES_TXT, "Text files (*.txt)" + +STRING_TOOLARGE, "File '%s' is too large for notepad.\n \ +Please use a different editor." +STRING_NOTEXT, "You didn't enter any text. \ +\nPlease type something and try again" +STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ +Do you want to create a new file ?" +STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \ +Would you like to save the changes ?" +STRING_NOTFOUND, "'%s' can not be found." +STRING_OUT_OF_MEMORY, "Not enough memory to complete this \ +task. \nClose one or more applications to increase the amount of \nfree \ +memory." +STRING_CANNOTFIND "Cannot find '%s'" +STRING_ANSI, "ANSI" +STRING_UNICODE, "Unicode" +STRING_UNICODE_BE, "Unicode (big endian)" +STRING_UTF8, "UTF-8" +STRING_CRLF, "Windows" +STRING_LF, "Unix" +STRING_CR, "Mac" +} diff --git a/reactos/base/applications/notepad/res/Es.rc b/reactos/base/applications/notepad/lang/Es.rc similarity index 95% rename from reactos/base/applications/notepad/res/Es.rc rename to reactos/base/applications/notepad/lang/Es.rc index e7532b6d6d9..f9cba0ed267 100644 --- a/reactos/base/applications/notepad/res/Es.rc +++ b/reactos/base/applications/notepad/lang/Es.rc @@ -1,158 +1,174 @@ -/* - * Notepad (Spanish resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Proofread 1999 by Jose Marcos Lopez - * Copyright 2002 Sylvain Petreolle - * Copyright 2003,2004 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Archivo" - BEGIN - MENUITEM "&Nuevo...", CMD_NEW - MENUITEM "&Abrir\tCtrl+O", CMD_OPEN - MENUITEM "&Guardar\tCtrl+S", CMD_SAVE - MENUITEM "Guardar &como...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Imprimir", CMD_PRINT - MENUITEM "Configurar &página...", CMD_PAGE_SETUP - MENUITEM "Configuración &impresora...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Salir", CMD_EXIT - END - POPUP "&Editar" - BEGIN - MENUITEM "&Deshacer\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Cor&tar\tCtrl+X", CMD_CUT - MENUITEM "&Copiar\tCtrl+C", CMD_COPY - MENUITEM "&Pegar\tCtrl+V", CMD_PASTE - MENUITEM "&Borrar\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Buscar\tCtrl+F", CMD_SEARCH - MENUITEM "Buscar &siguiente\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Seleccionar t&odo\tCtrl+A", CMD_SELECT_ALL - MENUITEM "&Hora y fecha\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Ajuste de línea", CMD_WRAP - MENUITEM "Tipo de &letra...", CMD_FONT - END - POPUP "A&yuda" - BEGIN - MENUITEM "Í&ndice", CMD_HELP_CONTENTS - MENUITEM "&Buscar...", CMD_HELP_SEARCH - MENUITEM "A&yuda sobre la ayuda", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "&Información...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Ajuste de página" -{ -LTEXT "&Cabecera:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Pie:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Márgenes:", 0x144, 10, 43,160, 45 -LTEXT "&Izquierda:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "A&rriba:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Derecha:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "Aba&jo:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "Aceptar", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Ayuda", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Bloc de notas" -STRING_ERROR, "ERROR" -STRING_WARNING, "ADVERTENCIA" -STRING_INFO, "Información" - -STRING_UNTITLED, "(sin título)" - -STRING_ALL_FILES, "Todos los archivos (*.*)" -STRING_TEXT_FILES_TXT, "Documentos de texto (*.txt)" - -STRING_TOOLARGE, "El archivo '%s' es demasiado grande para el \ - bloc de notas.\n Use otro editor." -STRING_NOTEXT, "No escribió nada. \nPor favor escriba algo e \ - inténtelo de nuevo" -STRING_DOESNOTEXIST, "El archivo '%s'\nno existe\n\n ¿Desea crear \ - un nuevo archivo?" -STRING_NOTSAVED, "El texto en el archivo '%s' ha cambiado\n\n \ - ¿Desea guardar los cambios?" -STRING_NOTFOUND, "No se encontró '%s'." -STRING_OUT_OF_MEMORY, "No hay suficiente memoria para terminar esta \ - tarea. \nCierre una o más aplicaciones para \ - aumentar la cantidad \nde memoria libre." -STRING_CANNOTFIND "No pudo encontrar '%s'" -STRING_ANSI, "ANSI" -STRING_UNICODE, "Unicode" -STRING_UNICODE_BE, "Unicode (big endian)" -STRING_UTF8, "UTF-8" -STRING_CRLF, "Windows" -STRING_LF, "Unix" -STRING_CR, "Mac" - -} +/* + * Notepad (Spanish resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Proofread 1999 by Jose Marcos Lopez + * Copyright 2002 Sylvain Petreolle + * Copyright 2003,2004 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Archivo" + BEGIN + MENUITEM "&Nuevo...", CMD_NEW + MENUITEM "&Abrir\tCtrl+O", CMD_OPEN + MENUITEM "&Guardar\tCtrl+S", CMD_SAVE + MENUITEM "Guardar &como...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Imprimir", CMD_PRINT + MENUITEM "Configurar &página...", CMD_PAGE_SETUP + MENUITEM "Configuración &impresora...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Salir", CMD_EXIT + END + POPUP "&Editar" + BEGIN + MENUITEM "&Deshacer\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Cor&tar\tCtrl+X", CMD_CUT + MENUITEM "&Copiar\tCtrl+C", CMD_COPY + MENUITEM "&Pegar\tCtrl+V", CMD_PASTE + MENUITEM "&Borrar\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Buscar\tCtrl+F", CMD_SEARCH + MENUITEM "Buscar &siguiente\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Seleccionar t&odo\tCtrl+A", CMD_SELECT_ALL + MENUITEM "&Hora y fecha\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Ajuste de línea", CMD_WRAP + MENUITEM "Tipo de &letra...", CMD_FONT + END + POPUP "A&yuda" + BEGIN + MENUITEM "Í&ndice", CMD_HELP_CONTENTS + MENUITEM "&Buscar...", CMD_HELP_SEARCH + MENUITEM "A&yuda sobre la ayuda", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "&Información...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Ajuste de página" +{ +LTEXT "&Cabecera:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Pie:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Márgenes:", 0x144, 10, 43,160, 45 +LTEXT "&Izquierda:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "A&rriba:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Derecha:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Aba&jo:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "Aceptar", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Ayuda", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Bloc de notas" +STRING_ERROR, "ERROR" +STRING_WARNING, "ADVERTENCIA" +STRING_INFO, "Información" + +STRING_UNTITLED, "(sin título)" + +STRING_ALL_FILES, "Todos los archivos (*.*)" +STRING_TEXT_FILES_TXT, "Documentos de texto (*.txt)" + +STRING_TOOLARGE, "El archivo '%s' es demasiado grande para el \ + bloc de notas.\n Use otro editor." +STRING_NOTEXT, "No escribió nada. \nPor favor escriba algo e \ + inténtelo de nuevo" +STRING_DOESNOTEXIST, "El archivo '%s'\nno existe\n\n ¿Desea crear \ + un nuevo archivo?" +STRING_NOTSAVED, "El texto en el archivo '%s' ha cambiado\n\n \ + ¿Desea guardar los cambios?" +STRING_NOTFOUND, "No se encontró '%s'." +STRING_OUT_OF_MEMORY, "No hay suficiente memoria para terminar esta \ + tarea. \nCierre una o más aplicaciones para \ + aumentar la cantidad \nde memoria libre." +STRING_CANNOTFIND "No pudo encontrar '%s'" +STRING_ANSI, "ANSI" +STRING_UNICODE, "Unicode" +STRING_UNICODE_BE, "Unicode (big endian)" +STRING_UTF8, "UTF-8" +STRING_CRLF, "Windows" +STRING_LF, "Unix" +STRING_CR, "Mac" + +} diff --git a/reactos/base/applications/notepad/res/Fi.rc b/reactos/base/applications/notepad/lang/Fi.rc similarity index 94% rename from reactos/base/applications/notepad/res/Fi.rc rename to reactos/base/applications/notepad/lang/Fi.rc index b7157589c3d..6cea70b875a 100644 --- a/reactos/base/applications/notepad/res/Fi.rc +++ b/reactos/base/applications/notepad/lang/Fi.rc @@ -1,145 +1,161 @@ -/* - * Notepad (Finnish resources) - * - * Copyright 1999 by Jukka Iivonen - * Copyright 2002 Sylvain Petreolle - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_FINNISH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Tiedosto" - BEGIN - MENUITEM "&Uusi...", CMD_NEW - MENUITEM "&Avaa", CMD_OPEN - MENUITEM "Ta&lleta", CMD_SAVE - MENUITEM "Talleta &nimellä...", CMD_SAVE_AS - MENUITEM "T&ulosta", CMD_PRINT - MENUITEM "&Sivun asetukset...", CMD_PAGE_SETUP - MENUITEM "&Kirjoittimen asetukset...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Poistu", CMD_EXIT - END - POPUP "&Muokkaa" - BEGIN - MENUITEM "&Palauta\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Leikkaa\tCtrl+X", CMD_CUT - MENUITEM "&Kopioi\tCtrl+C", CMD_COPY - MENUITEM "L&iitä\tCtrl+V", CMD_PASTE - MENUITEM "P&oista\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Etsi...", CMD_SEARCH - MENUITEM "Etsi &seuraava\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "&Valitse kaikki", CMD_SELECT_ALL - MENUITEM "&Aika/Päivämäärä\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "Ka&tkaise pitkä rivi", CMD_WRAP - END - POPUP "&Apua" - BEGIN - MENUITEM "&Sisältö", CMD_HELP_CONTENTS - MENUITEM "&Etsi...", CMD_HELP_SEARCH - MENUITEM "Apua &Opastuksesta", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&o...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Sivun asetukset" -{ -LTEXT "&Yläotsikko:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "Alao&tsikko:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Marginaali:", 0x144, 10, 43,160, 45 -LTEXT "&Vasen:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "Y&lä:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Oikea:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Ala:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Peruuta", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Apua", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Sivu &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "VIRHE" -STRING_WARNING, "VAROITUS" -STRING_INFO, "Tiedoitus" - -STRING_UNTITLED, "(otsikoimaton)" - -STRING_ALL_FILES, "Kaikki tiedostot (*.*)" -STRING_TEXT_FILES_TXT, "Teksti tiedostot (*.txt)" - -STRING_TOOLARGE, "Tiedosto '%s' on liian suuri.\n \ -Please use a different editor." -STRING_NOTEXT, "Et syöttänyt lainkaan tekstiä. \ -\nKirjoita jotain ja yritä uudelleen" -STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ -Do you want to create a new file ?" -STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \ -Would you like to save the changes ?" -STRING_NOTFOUND, "'%s' ei löydy." -STRING_OUT_OF_MEMORY, "Muistia ei ole riittävästi tämän \ -\ntehtävän tekemiseksi. Sulje jokin sovellus vapauttaaksesi\n \ -muistia." - -} +/* + * Notepad (Finnish resources) + * + * Copyright 1999 by Jukka Iivonen + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Tiedosto" + BEGIN + MENUITEM "&Uusi...", CMD_NEW + MENUITEM "&Avaa", CMD_OPEN + MENUITEM "Ta&lleta", CMD_SAVE + MENUITEM "Talleta &nimellä...", CMD_SAVE_AS + MENUITEM "T&ulosta", CMD_PRINT + MENUITEM "&Sivun asetukset...", CMD_PAGE_SETUP + MENUITEM "&Kirjoittimen asetukset...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Poistu", CMD_EXIT + END + POPUP "&Muokkaa" + BEGIN + MENUITEM "&Palauta\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Leikkaa\tCtrl+X", CMD_CUT + MENUITEM "&Kopioi\tCtrl+C", CMD_COPY + MENUITEM "L&iitä\tCtrl+V", CMD_PASTE + MENUITEM "P&oista\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "Etsi...", CMD_SEARCH + MENUITEM "Etsi &seuraava\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "&Valitse kaikki", CMD_SELECT_ALL + MENUITEM "&Aika/Päivämäärä\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "Ka&tkaise pitkä rivi", CMD_WRAP + END + POPUP "&Apua" + BEGIN + MENUITEM "&Sisältö", CMD_HELP_CONTENTS + MENUITEM "&Etsi...", CMD_HELP_SEARCH + MENUITEM "Apua &Opastuksesta", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&o...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Sivun asetukset" +{ +LTEXT "&Yläotsikko:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "Alao&tsikko:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Marginaali:", 0x144, 10, 43,160, 45 +LTEXT "&Vasen:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Y&lä:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Oikea:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Ala:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Peruuta", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Apua", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Sivu &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "VIRHE" +STRING_WARNING, "VAROITUS" +STRING_INFO, "Tiedoitus" + +STRING_UNTITLED, "(otsikoimaton)" + +STRING_ALL_FILES, "Kaikki tiedostot (*.*)" +STRING_TEXT_FILES_TXT, "Teksti tiedostot (*.txt)" + +STRING_TOOLARGE, "Tiedosto '%s' on liian suuri.\n \ +Please use a different editor." +STRING_NOTEXT, "Et syöttänyt lainkaan tekstiä. \ +\nKirjoita jotain ja yritä uudelleen" +STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ +Do you want to create a new file ?" +STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \ +Would you like to save the changes ?" +STRING_NOTFOUND, "'%s' ei löydy." +STRING_OUT_OF_MEMORY, "Muistia ei ole riittävästi tämän \ +\ntehtävän tekemiseksi. Sulje jokin sovellus vapauttaaksesi\n \ +muistia." + +} diff --git a/reactos/base/applications/notepad/res/Fr.rc b/reactos/base/applications/notepad/lang/Fr.rc similarity index 95% rename from reactos/base/applications/notepad/res/Fr.rc rename to reactos/base/applications/notepad/lang/Fr.rc index 53e9d27908d..3f4584e1136 100644 --- a/reactos/base/applications/notepad/res/Fr.rc +++ b/reactos/base/applications/notepad/lang/Fr.rc @@ -1,148 +1,164 @@ -/* - * Notepad (French resources) - * - * Copyright 1997,98 Marcel Baur - * Translation by Laurent Buffler - * Copyright 2002 Sylvain Petreolle - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Fichier" - BEGIN - MENUITEM "&Nouveau...", CMD_NEW - MENUITEM "&Ouvrir\tCtrl+O", CMD_OPEN - MENUITEM "&Enregistrer\tCtrl+S", CMD_SAVE - MENUITEM "Enregistrer &sous...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Im&primer", CMD_PRINT - MENUITEM "&Mise en page...", CMD_PAGE_SETUP - MENUITEM "&Configuration de l'imprimante...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Quitter", CMD_EXIT - END - POPUP "&Edition" - BEGIN - MENUITEM "&Annuler\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Co&uper\tCtrl+X", CMD_CUT - MENUITEM "&Copier\tCtrl+C", CMD_COPY - MENUITEM "C&oller\tCtrl+V", CMD_PASTE - MENUITEM "&Effacer\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Rechercher\tCtrl+F", CMD_SEARCH - MENUITEM "&Suivant\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Tout &sélectionner\tCtrl+A", CMD_SELECT_ALL - MENUITEM "&Heure/Date\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Retour à la ligne", CMD_WRAP - MENUITEM "&Police...", CMD_FONT - END - POPUP "&Aide" - BEGIN - MENUITEM "&Sommaire", CMD_HELP_CONTENTS - MENUITEM "&Rechercher...", CMD_HELP_SEARCH - MENUITEM "&Utiliser l'aide", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&o...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Mise en page" -{ -LTEXT "&En-tête :", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Pied de page :", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Marges :", 0x144, 10, 43,160, 45 -LTEXT "&Gauche :", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Haut :", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Droite :", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Bas :", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Annuler", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Aide", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Bloc-notes" -STRING_ERROR, "ERREUR" -STRING_WARNING, "ATTENTION" -STRING_INFO, "Information" - -STRING_UNTITLED, "(sans-titre)" - -STRING_ALL_FILES, "Tous fichiers (*.*)" -STRING_TEXT_FILES_TXT, "Fichiers texte (*.txt)" - -STRING_TOOLARGE, "Le fichier '%s' est trop grand pour le bloc-notes.\n \ -Veuillez utiliser un autre éditeur." -STRING_NOTEXT, "Vous n'avez pas entré de texte. \ -Veuillez taper quelque chose et recommencer" -STRING_DOESNOTEXIST, "Le fichier '%s'\nn'existe pas.\n\n \ -Voulez-vous créer un nouveau fichier ?" -STRING_NOTSAVED, "Le fichier '%s'\na été modifié\n\n \ -Voulez-vous enregistrer vos modifications ?" -STRING_NOTFOUND, "'%s' non trouvé." -STRING_OUT_OF_MEMORY, "Pas assez de mémoire pour compléter cette \ -tâche. \nFermez une ou plusieurs applications pour libérer\n\ -de la mémoire." - -} +/* + * Notepad (French resources) + * + * Copyright 1997,98 Marcel Baur + * Translation by Laurent Buffler + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Fichier" + BEGIN + MENUITEM "&Nouveau...", CMD_NEW + MENUITEM "&Ouvrir\tCtrl+O", CMD_OPEN + MENUITEM "&Enregistrer\tCtrl+S", CMD_SAVE + MENUITEM "Enregistrer &sous...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Im&primer", CMD_PRINT + MENUITEM "&Mise en page...", CMD_PAGE_SETUP + MENUITEM "&Configuration de l'imprimante...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Quitter", CMD_EXIT + END + POPUP "&Edition" + BEGIN + MENUITEM "&Annuler\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Co&uper\tCtrl+X", CMD_CUT + MENUITEM "&Copier\tCtrl+C", CMD_COPY + MENUITEM "C&oller\tCtrl+V", CMD_PASTE + MENUITEM "&Effacer\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Rechercher\tCtrl+F", CMD_SEARCH + MENUITEM "&Suivant\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Tout &sélectionner\tCtrl+A", CMD_SELECT_ALL + MENUITEM "&Heure/Date\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Retour à la ligne", CMD_WRAP + MENUITEM "&Police...", CMD_FONT + END + POPUP "&Aide" + BEGIN + MENUITEM "&Sommaire", CMD_HELP_CONTENTS + MENUITEM "&Rechercher...", CMD_HELP_SEARCH + MENUITEM "&Utiliser l'aide", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&o...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Mise en page" +{ +LTEXT "&En-tête :", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Pied de page :", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Marges :", 0x144, 10, 43,160, 45 +LTEXT "&Gauche :", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Haut :", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Droite :", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Bas :", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Annuler", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Aide", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Bloc-notes" +STRING_ERROR, "ERREUR" +STRING_WARNING, "ATTENTION" +STRING_INFO, "Information" + +STRING_UNTITLED, "(sans-titre)" + +STRING_ALL_FILES, "Tous fichiers (*.*)" +STRING_TEXT_FILES_TXT, "Fichiers texte (*.txt)" + +STRING_TOOLARGE, "Le fichier '%s' est trop grand pour le bloc-notes.\n \ +Veuillez utiliser un autre éditeur." +STRING_NOTEXT, "Vous n'avez pas entré de texte. \ +Veuillez taper quelque chose et recommencer" +STRING_DOESNOTEXIST, "Le fichier '%s'\nn'existe pas.\n\n \ +Voulez-vous créer un nouveau fichier ?" +STRING_NOTSAVED, "Le fichier '%s'\na été modifié\n\n \ +Voulez-vous enregistrer vos modifications ?" +STRING_NOTFOUND, "'%s' non trouvé." +STRING_OUT_OF_MEMORY, "Pas assez de mémoire pour compléter cette \ +tâche. \nFermez une ou plusieurs applications pour libérer\n\ +de la mémoire." + +} diff --git a/reactos/base/applications/notepad/res/Gr.rc b/reactos/base/applications/notepad/lang/Gr.rc similarity index 95% rename from reactos/base/applications/notepad/res/Gr.rc rename to reactos/base/applications/notepad/lang/Gr.rc index 657949b62a6..71f9a5ca266 100644 --- a/reactos/base/applications/notepad/res/Gr.rc +++ b/reactos/base/applications/notepad/lang/Gr.rc @@ -1,187 +1,203 @@ -/* - * Notepad (Greek resources) - * - * Copyright 2005 Apostolos Alexiadis (djapal@gmail.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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_GREEK, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Áñ÷åßï" - BEGIN - MENUITEM "&ÍÝï...", CMD_NEW - MENUITEM "&¢íïéãìá\tCtrl+O", CMD_OPEN - MENUITEM "ÁðïèÞêåõ&óç\tCtrl+S", CMD_SAVE - MENUITEM "ÁðïèÞêåõóç &ùò...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Å&ðéëïãÝò óåëßäáò...", CMD_PAGE_SETUP - MENUITEM "&Åêôýðùóç", CMD_PRINT - MENUITEM "ÅðéëïãÝò åê&ôõðùôÞ ...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "¸&îïäïò", CMD_EXIT - END - POPUP "&Edit" - BEGIN - MENUITEM "Á&íáßñåóç\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Áðïêï&ðÞ\tCtrl+X", CMD_CUT - MENUITEM "&ÁíôéãñáöÞ\tCtrl+C", CMD_COPY - MENUITEM "&Åðéêüëëçóç\tCtrl+V", CMD_PASTE - MENUITEM "&ÄéáãñáöÞ\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Åýñåóç...\tCtrl+F", CMD_SEARCH - MENUITEM "Åýñåóç å&ðüìåíïõ\tF3", CMD_SEARCH_NEXT - MENUITEM "ÁíôéêáôÜóôáóç\tCtrl+H", CMD_REPLACE - MENUITEM "&ÌåôÜâáóç óôï...\tCtrl+G", CMD_GOTO - MENUITEM SEPARATOR - MENUITEM "ÅðéëïãÞ &¼ëùí\tCtrl+A", CMD_SELECT_ALL - MENUITEM "&¿ñá/Çìåñïìçíßá\tF5", CMD_TIME_DATE - END - POPUP "Ö&ïñìÜ" - BEGIN - MENUITEM "&ÅìöÜíéóç ìåãÜëùí ãñáììþí", CMD_WRAP - MENUITEM "&ÃñáììáôïóåéñÜ...", CMD_FONT - END - POPUP "&ÅìöÜíéóç" - BEGIN - MENUITEM "ÃñáììÞ &êáôÜóôáóçò", CMD_STATUSBAR - END - POPUP "&ÂïÞèåéá" - BEGIN - MENUITEM "&Ðåñéå÷üìåíá", CMD_HELP_CONTENTS - MENUITEM "&ÁíáæÞôçóç...", CMD_HELP_SEARCH - MENUITEM "&ÂïÞèåéá óôç âïÞèåéá", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Ðëçñï&öïñßåò", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "ÅðéëïãÝò Óåëßäáò" -{ -LTEXT "&ÊåöáëÞ:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&ÕðïóÝëéäï:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&¼ñéá:", 0x144, 10, 43,160, 45 -LTEXT "&ÁñéóôåñÜ:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&ÐÜíù:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&ÄåîéÜ:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&ÊÜôù:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Áêýñùóç", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&ÂïÞèåéá", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -/* Dialog `Encoding' */ -DIALOG_ENCODING DIALOG 0, 0, 256, 44 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | - WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Êùäéêïðïßçóç" -{ -COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP -LTEXT "Êùäéêïðïßçóç:",0x155,5,2,41,12 -COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -LTEXT "Endlines:",0x156,5,20,41,12 -} - -/* Dialog 'Go To' */ -DIALOG_GOTO DIALOG 0,0,165,50 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "ÌåôÜâáóç óôç ãñáììÞ" -{ -EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "Áñéèìüò ãñáììÞò:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER -DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP -PUSHBUTTON "Áêýñùóç", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP -} - - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Óåëßäá &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "ERROR" -STRING_WARNING, "WARNING" -STRING_INFO, "Ðëçñïöïñßåò" - -STRING_UNTITLED, "(×ùñßò ôßôëï)" - -STRING_ALL_FILES, "¼ëá ôá áñ÷åßá (*.*)" -STRING_TEXT_FILES_TXT, "Áñ÷åßá êåéìÝíïõ (*.txt)" - -STRING_TOOLARGE, "Ôï áñ÷åßï '%s' åßíáé ðïëý ìåãÜëï ãéá ôï notepad.\n \ -Ðáñáêáëþ ÷ñçóéìïðïéåßóôå Üëëï ðñüãñáììá åðåîåñãáóßáò êåéìÝíïõ." -STRING_NOTEXT, "Äåí ðëçêôñïëïãÞóáôå êÜôé. \ -\nÐáñáêáëþ ðëçêôñïëïãåßóôå êÜôé êáé ðñïóðáèåßóôå îáíÜ" -STRING_DOESNOTEXIST, "Ôï áñ÷åßï '%s'\näåí õðÜñ÷åé\n\n \ -ÈÝëåôå íá äçìéïõñãÞóåôå Ýíá íÝï áñ÷åßï;" -STRING_NOTSAVED, "Ôï áñ÷åßï '%s'\nÝ÷åé ôñïðïðïéçèåß\n\n \ -ÈÝëåôå íá áðïèçêåýóåôå ôéò áëëáãÝò;" -STRING_NOTFOUND, "Ôï áñ÷åßï '%s' äå ìðïñåß íá âñåèåß." -STRING_OUT_OF_MEMORY, "Äåí õðÜñ÷åé áñêåôÞ ìíÞìç ãéá íá ïëïêëçñùèåß áõôÞ ç \ -äéåñãáóßá. \nÊëåßóôå ìßá Þ ðåññéóüôåñåò åöáñìïãÝò ãéá íá áõîçèåß ç \nåëåýèåñç \ -ìíÞìç." -STRING_CANNOTFIND "Äå ìðïñåß íá âñåèåß ôï '%s'" -STRING_ANSI, "ANSI" -STRING_UNICODE, "Unicode" -STRING_UNICODE_BE, "Unicode (big endian)" -STRING_UTF8, "UTF-8" -STRING_CRLF, "Windows" -STRING_LF, "Unix" -STRING_CR, "Mac" -} +/* + * Notepad (Greek resources) + * + * Copyright 2005 Apostolos Alexiadis (djapal@gmail.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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_GREEK, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Áñ÷åßï" + BEGIN + MENUITEM "&ÍÝï...", CMD_NEW + MENUITEM "&¢íïéãìá\tCtrl+O", CMD_OPEN + MENUITEM "ÁðïèÞêåõ&óç\tCtrl+S", CMD_SAVE + MENUITEM "ÁðïèÞêåõóç &ùò...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Å&ðéëïãÝò óåëßäáò...", CMD_PAGE_SETUP + MENUITEM "&Åêôýðùóç", CMD_PRINT + MENUITEM "ÅðéëïãÝò åê&ôõðùôÞ ...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "¸&îïäïò", CMD_EXIT + END + POPUP "&Edit" + BEGIN + MENUITEM "Á&íáßñåóç\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Áðïêï&ðÞ\tCtrl+X", CMD_CUT + MENUITEM "&ÁíôéãñáöÞ\tCtrl+C", CMD_COPY + MENUITEM "&Åðéêüëëçóç\tCtrl+V", CMD_PASTE + MENUITEM "&ÄéáãñáöÞ\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Åýñåóç...\tCtrl+F", CMD_SEARCH + MENUITEM "Åýñåóç å&ðüìåíïõ\tF3", CMD_SEARCH_NEXT + MENUITEM "ÁíôéêáôÜóôáóç\tCtrl+H", CMD_REPLACE + MENUITEM "&ÌåôÜâáóç óôï...\tCtrl+G", CMD_GOTO + MENUITEM SEPARATOR + MENUITEM "ÅðéëïãÞ &¼ëùí\tCtrl+A", CMD_SELECT_ALL + MENUITEM "&¿ñá/Çìåñïìçíßá\tF5", CMD_TIME_DATE + END + POPUP "Ö&ïñìÜ" + BEGIN + MENUITEM "&ÅìöÜíéóç ìåãÜëùí ãñáììþí", CMD_WRAP + MENUITEM "&ÃñáììáôïóåéñÜ...", CMD_FONT + END + POPUP "&ÅìöÜíéóç" + BEGIN + MENUITEM "ÃñáììÞ &êáôÜóôáóçò", CMD_STATUSBAR + END + POPUP "&ÂïÞèåéá" + BEGIN + MENUITEM "&Ðåñéå÷üìåíá", CMD_HELP_CONTENTS + MENUITEM "&ÁíáæÞôçóç...", CMD_HELP_SEARCH + MENUITEM "&ÂïÞèåéá óôç âïÞèåéá", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Ðëçñï&öïñßåò", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "ÅðéëïãÝò Óåëßäáò" +{ +LTEXT "&ÊåöáëÞ:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&ÕðïóÝëéäï:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&¼ñéá:", 0x144, 10, 43,160, 45 +LTEXT "&ÁñéóôåñÜ:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&ÐÜíù:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&ÄåîéÜ:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&ÊÜôù:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Áêýñùóç", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&ÂïÞèåéá", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +/* Dialog `Encoding' */ +DIALOG_ENCODING DIALOG 0, 0, 256, 44 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | + WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Êùäéêïðïßçóç" +{ +COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP +LTEXT "Êùäéêïðïßçóç:",0x155,5,2,41,12 +COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +LTEXT "Endlines:",0x156,5,20,41,12 +} + +/* Dialog 'Go To' */ +DIALOG_GOTO DIALOG 0,0,165,50 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "ÌåôÜâáóç óôç ãñáììÞ" +{ +EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Áñéèìüò ãñáììÞò:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER +DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP +PUSHBUTTON "Áêýñùóç", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP +} + + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Óåëßäá &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "ERROR" +STRING_WARNING, "WARNING" +STRING_INFO, "Ðëçñïöïñßåò" + +STRING_UNTITLED, "(×ùñßò ôßôëï)" + +STRING_ALL_FILES, "¼ëá ôá áñ÷åßá (*.*)" +STRING_TEXT_FILES_TXT, "Áñ÷åßá êåéìÝíïõ (*.txt)" + +STRING_TOOLARGE, "Ôï áñ÷åßï '%s' åßíáé ðïëý ìåãÜëï ãéá ôï notepad.\n \ +Ðáñáêáëþ ÷ñçóéìïðïéåßóôå Üëëï ðñüãñáììá åðåîåñãáóßáò êåéìÝíïõ." +STRING_NOTEXT, "Äåí ðëçêôñïëïãÞóáôå êÜôé. \ +\nÐáñáêáëþ ðëçêôñïëïãåßóôå êÜôé êáé ðñïóðáèåßóôå îáíÜ" +STRING_DOESNOTEXIST, "Ôï áñ÷åßï '%s'\näåí õðÜñ÷åé\n\n \ +ÈÝëåôå íá äçìéïõñãÞóåôå Ýíá íÝï áñ÷åßï;" +STRING_NOTSAVED, "Ôï áñ÷åßï '%s'\nÝ÷åé ôñïðïðïéçèåß\n\n \ +ÈÝëåôå íá áðïèçêåýóåôå ôéò áëëáãÝò;" +STRING_NOTFOUND, "Ôï áñ÷åßï '%s' äå ìðïñåß íá âñåèåß." +STRING_OUT_OF_MEMORY, "Äåí õðÜñ÷åé áñêåôÞ ìíÞìç ãéá íá ïëïêëçñùèåß áõôÞ ç \ +äéåñãáóßá. \nÊëåßóôå ìßá Þ ðåññéóüôåñåò åöáñìïãÝò ãéá íá áõîçèåß ç \nåëåýèåñç \ +ìíÞìç." +STRING_CANNOTFIND "Äå ìðïñåß íá âñåèåß ôï '%s'" +STRING_ANSI, "ANSI" +STRING_UNICODE, "Unicode" +STRING_UNICODE_BE, "Unicode (big endian)" +STRING_UTF8, "UTF-8" +STRING_CRLF, "Windows" +STRING_LF, "Unix" +STRING_CR, "Mac" +} diff --git a/reactos/base/applications/notepad/res/Hu.rc b/reactos/base/applications/notepad/lang/Hu.rc similarity index 94% rename from reactos/base/applications/notepad/res/Hu.rc rename to reactos/base/applications/notepad/lang/Hu.rc index 4c439d67668..3ec88ba3b44 100644 --- a/reactos/base/applications/notepad/res/Hu.rc +++ b/reactos/base/applications/notepad/lang/Hu.rc @@ -1,147 +1,164 @@ -/* - * Notepad (Hungarian resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * Copyright 2002 Zoly Nagy - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -MAIN_MENU MENU LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL -BEGIN - POPUP "&Fájl" - BEGIN - MENUITEM "Ú&j", CMD_NEW - MENUITEM "Meg&nyitás...", CMD_OPEN - MENUITEM "&Mentés", CMD_SAVE - MENUITEM "Mentés má&sként...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Oldalbeállítás...", CMD_PAGE_SETUP - MENUITEM "Nyom&tatás...", CMD_PRINT - MENUITEM "Nyomtató &beállítás...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Kilépés", CMD_EXIT - END - POPUP "S&zerkesztés" - BEGIN - MENUITEM "&Visszavonás\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Kivá&gás\tCtrl+X", CMD_CUT - MENUITEM "&Másolás\tCtrl+C", CMD_COPY - MENUITEM "&Beillesztés\tCtrl+V", CMD_PASTE - MENUITEM "Tör&lés\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Keresés...", CMD_SEARCH - MENUITEM "Köve&tkezõ keresése\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "&Az összes kijelölése", CMD_SELECT_ALL - MENUITEM "&Idõ/dátum\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Hosszú sorok tördelése", CMD_WRAP - END - POPUP "&Súgó" - BEGIN - MENUITEM "&Témakörök", CMD_HELP_CONTENTS - MENUITEM "&Keresés...", CMD_HELP_SEARCH - MENUITEM "&Használat", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&ormáció...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Oldalbeállítás" -{ -LTEXT "&Fejléc:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Lábléc:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Margók:", 0x144, 10, 43,160, 45 -LTEXT "&Bal:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Felsõ:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Jobb:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Alsó:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Mégse", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Súgó", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Oldalszám: &s." /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Jegyzettömb" -STRING_ERROR, "HIBA" -STRING_WARNING, "FIGYELMEZTETÉS" -STRING_INFO, "Információ" - -STRING_UNTITLED, "(névtelen)" - -STRING_ALL_FILES, "Minden fájl (*.*)" -STRING_TEXT_FILES_TXT, "Szövegfájlok (*.txt)" - -STRING_TOOLARGE, "'%s' fájl túl nagy méretû.\n \ -Kérem használjon másik szövegszerkesztõ programot." -STRING_NOTEXT, "A szöveg nem tartalmaz karaktert! \ -\nKérem gépeljen be néhány karaktert és próbálja újra!" -STRING_DOESNOTEXIST, "A megadott '%s'\nfájl nem létezik!\n\n \ -Kíván létrehozni új fájlt?" -STRING_NOTSAVED, "'%s' fájl\nmódosult\n\n \ -Szeretné menteni a változásokat?" -STRING_NOTFOUND, "'%s' nem található!" -STRING_OUT_OF_MEMORY, "Nincs elegendõ szabad memória!\ -\nZárjon be néhány alkalmazást, ezzel növelve a szabad memória méretét\ -!" - -} +/* + * Notepad (Hungarian resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * Copyright 2002 Zoly Nagy + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Fájl" + BEGIN + MENUITEM "Ú&j", CMD_NEW + MENUITEM "Meg&nyitás...", CMD_OPEN + MENUITEM "&Mentés", CMD_SAVE + MENUITEM "Mentés má&sként...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Oldalbeállítás...", CMD_PAGE_SETUP + MENUITEM "Nyom&tatás...", CMD_PRINT + MENUITEM "Nyomtató &beállítás...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Kilépés", CMD_EXIT + END + POPUP "S&zerkesztés" + BEGIN + MENUITEM "&Visszavonás\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Kivá&gás\tCtrl+X", CMD_CUT + MENUITEM "&Másolás\tCtrl+C", CMD_COPY + MENUITEM "&Beillesztés\tCtrl+V", CMD_PASTE + MENUITEM "Tör&lés\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Keresés...", CMD_SEARCH + MENUITEM "Köve&tkezõ keresése\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "&Az összes kijelölése", CMD_SELECT_ALL + MENUITEM "&Idõ/dátum\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Hosszú sorok tördelése", CMD_WRAP + END + POPUP "&Súgó" + BEGIN + MENUITEM "&Témakörök", CMD_HELP_CONTENTS + MENUITEM "&Keresés...", CMD_HELP_SEARCH + MENUITEM "&Használat", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&ormáció...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Oldalbeállítás" +{ +LTEXT "&Fejléc:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Lábléc:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Margók:", 0x144, 10, 43,160, 45 +LTEXT "&Bal:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Felsõ:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Jobb:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Alsó:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Mégse", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Súgó", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Oldalszám: &s." /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Jegyzettömb" +STRING_ERROR, "HIBA" +STRING_WARNING, "FIGYELMEZTETÉS" +STRING_INFO, "Információ" + +STRING_UNTITLED, "(névtelen)" + +STRING_ALL_FILES, "Minden fájl (*.*)" +STRING_TEXT_FILES_TXT, "Szövegfájlok (*.txt)" + +STRING_TOOLARGE, "'%s' fájl túl nagy méretû.\n \ +Kérem használjon másik szövegszerkesztõ programot." +STRING_NOTEXT, "A szöveg nem tartalmaz karaktert! \ +\nKérem gépeljen be néhány karaktert és próbálja újra!" +STRING_DOESNOTEXIST, "A megadott '%s'\nfájl nem létezik!\n\n \ +Kíván létrehozni új fájlt?" +STRING_NOTSAVED, "'%s' fájl\nmódosult\n\n \ +Szeretné menteni a változásokat?" +STRING_NOTFOUND, "'%s' nem található!" +STRING_OUT_OF_MEMORY, "Nincs elegendõ szabad memória!\ +\nZárjon be néhány alkalmazást, ezzel növelve a szabad memória méretét\ +!" + +} diff --git a/reactos/base/applications/notepad/res/It.rc b/reactos/base/applications/notepad/lang/It.rc similarity index 95% rename from reactos/base/applications/notepad/res/It.rc rename to reactos/base/applications/notepad/lang/It.rc index 899f25eb506..292b4fa1bb0 100644 --- a/reactos/base/applications/notepad/res/It.rc +++ b/reactos/base/applications/notepad/lang/It.rc @@ -1,149 +1,165 @@ -/* - * Notepad (Italian resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * Copyright 2003 Marcelo Duarte - * Copyright 2003-2004 Ivan Leo Puoti - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "&Nuovo", CMD_NEW - MENUITEM "&Apri...\tCtrl+O", CMD_OPEN - MENUITEM "&Salva\tCtrl+S", CMD_SAVE - MENUITEM "Salva &con nome...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Stampa", CMD_PRINT - MENUITEM "&Imposta pagina...", CMD_PAGE_SETUP - MENUITEM "&Configurazione stampante...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "E&sci", CMD_EXIT - END - POPUP "&Modifica" - BEGIN - MENUITEM "&Anulla\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Taglia\tCtrl+X", CMD_CUT - MENUITEM "&Copia\tCtrl+C", CMD_COPY - MENUITEM "&Incolla\tCtrl+V", CMD_PASTE - MENUITEM "&Elimina\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Trova\tCtrl+F", CMD_SEARCH - MENUITEM "&Trova successivo\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Seleziona &tutto\tCtrl+A", CMD_SELECT_ALL - MENUITEM "&Ora/Data\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&A campo automatico", CMD_WRAP - MENUITEM "&Imposta carattere...", CMD_FONT - END - POPUP "&Aiuto" - BEGIN - MENUITEM "&Contenuti", CMD_HELP_CONTENTS - MENUITEM "&Trova...", CMD_HELP_SEARCH - MENUITEM "&Aiuto sulla Guida", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&o...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Setup di pagina" -{ -LTEXT "&Note a inizio pagina:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Note a piè di pagina:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Margini:", 0x144, 10, 43,160, 45 -LTEXT "&Sinistro:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Superiore:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Destro:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Inferiore:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Cancella", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Aiuto", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Blocco note" -STRING_ERROR, "ERRORE" -STRING_WARNING, "ATTENZIONE" -STRING_INFO, "Info" - -STRING_UNTITLED, "(senza nome)" - -STRING_ALL_FILES, "Tutti i file (*.*)" -STRING_TEXT_FILES_TXT, "File di testo (*.txt)" - -STRING_TOOLARGE, "Il file '%s' è troppo grande per il blocco note.\n \ -Per favore usare un altro editor." -STRING_NOTEXT, "Non è stato inserito alcun testo. \ -\nPer favore digitare qualcosa e riprovare" -STRING_DOESNOTEXIST, "Il file '%s'\nnon esiste\n\n \ -Creare un nuovo file ?" -STRING_NOTSAVED, "Il file '%s'\ne' stato modificato\n\n \ -Salvare le modifiche ?" -STRING_NOTFOUND, "'%s' non è stato trovato." -STRING_OUT_OF_MEMORY, "Memoria insufficente per completare questa operazione \ -task. \nChiudere una o più applicazioni per aumentare la quantita'\n di memoria libera." - -} +/* + * Notepad (Italian resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * Copyright 2003 Marcelo Duarte + * Copyright 2003-2004 Ivan Leo Puoti + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&Nuovo", CMD_NEW + MENUITEM "&Apri...\tCtrl+O", CMD_OPEN + MENUITEM "&Salva\tCtrl+S", CMD_SAVE + MENUITEM "Salva &con nome...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Stampa", CMD_PRINT + MENUITEM "&Imposta pagina...", CMD_PAGE_SETUP + MENUITEM "&Configurazione stampante...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "E&sci", CMD_EXIT + END + POPUP "&Modifica" + BEGIN + MENUITEM "&Anulla\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Taglia\tCtrl+X", CMD_CUT + MENUITEM "&Copia\tCtrl+C", CMD_COPY + MENUITEM "&Incolla\tCtrl+V", CMD_PASTE + MENUITEM "&Elimina\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Trova\tCtrl+F", CMD_SEARCH + MENUITEM "&Trova successivo\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Seleziona &tutto\tCtrl+A", CMD_SELECT_ALL + MENUITEM "&Ora/Data\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&A campo automatico", CMD_WRAP + MENUITEM "&Imposta carattere...", CMD_FONT + END + POPUP "&Aiuto" + BEGIN + MENUITEM "&Contenuti", CMD_HELP_CONTENTS + MENUITEM "&Trova...", CMD_HELP_SEARCH + MENUITEM "&Aiuto sulla Guida", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&o...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Setup di pagina" +{ +LTEXT "&Note a inizio pagina:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Note a piè di pagina:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Margini:", 0x144, 10, 43,160, 45 +LTEXT "&Sinistro:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Superiore:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Destro:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Inferiore:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Cancella", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Aiuto", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Blocco note" +STRING_ERROR, "ERRORE" +STRING_WARNING, "ATTENZIONE" +STRING_INFO, "Info" + +STRING_UNTITLED, "(senza nome)" + +STRING_ALL_FILES, "Tutti i file (*.*)" +STRING_TEXT_FILES_TXT, "File di testo (*.txt)" + +STRING_TOOLARGE, "Il file '%s' è troppo grande per il blocco note.\n \ +Per favore usare un altro editor." +STRING_NOTEXT, "Non è stato inserito alcun testo. \ +\nPer favore digitare qualcosa e riprovare" +STRING_DOESNOTEXIST, "Il file '%s'\nnon esiste\n\n \ +Creare un nuovo file ?" +STRING_NOTSAVED, "Il file '%s'\ne' stato modificato\n\n \ +Salvare le modifiche ?" +STRING_NOTFOUND, "'%s' non è stato trovato." +STRING_OUT_OF_MEMORY, "Memoria insufficente per completare questa operazione \ +task. \nChiudere una o più applicazioni per aumentare la quantita'\n di memoria libera." + +} diff --git a/reactos/base/applications/notepad/res/Ja.rc b/reactos/base/applications/notepad/lang/Ja.rc similarity index 96% rename from reactos/base/applications/notepad/res/Ja.rc rename to reactos/base/applications/notepad/lang/Ja.rc index 4378b3a883f..853568c12d2 100644 --- a/reactos/base/applications/notepad/res/Ja.rc +++ b/reactos/base/applications/notepad/lang/Ja.rc @@ -1,189 +1,204 @@ -/* - * Notepad (Japanese resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT - - -MAIN_MENU MENU -BEGIN - POPUP "ƒtƒ@ƒCƒ‹(&F)" - BEGIN - MENUITEM "V‹Kì¬(&N)...", CMD_NEW - MENUITEM "ŠJ‚­(&O)\tCtrl+O", CMD_OPEN - MENUITEM "•Û‘¶(&S)\tCtrl+S", CMD_SAVE - MENUITEM "–¼‘O‚ð•t‚¯‚ĕۑ¶(&A)...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "ƒy[ƒWÝ’è(&T)...", CMD_PAGE_SETUP - MENUITEM "ˆóü(&P)", CMD_PRINT - MENUITEM "ƒvƒŠƒ“ƒ^‚ÌÝ’è(&R)...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "I—¹(&X)", CMD_EXIT - END - POPUP "•ÒW(&E)" - BEGIN - MENUITEM "Œ³‚É–ß‚·(&U)\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Ø‚èŽæ‚è(&T)\tCtrl+X", CMD_CUT - MENUITEM "ƒRƒs[(&C)\tCtrl+C", CMD_COPY - MENUITEM "ƒy[ƒXƒg(&P)\tCtrl+V", CMD_PASTE - MENUITEM "íœ(&D)\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "ŒŸõ(&S)\tCtrl+F", CMD_SEARCH - MENUITEM "ŽŸ‚ÌŒó•â‚ðŒŸõ(&S)\tF3", CMD_SEARCH_NEXT - MENUITEM "’uŠ·\tCtrl+H", CMD_REPLACE - MENUITEM "s‚ÖˆÚ“®...\tCtrl+G", CMD_GOTO - MENUITEM SEPARATOR - MENUITEM "‘S‚Ä‘I‘ð(&A)\tCtrl+A", CMD_SELECT_ALL - MENUITEM "“ú•t‚ÆŽž‚Ì‘}“ü(&T)\tF5", CMD_TIME_DATE - END - POPUP "‘Ž®(&O)" - BEGIN - MENUITEM "’·‚¢s‚ðÜ‚è•Ô‚·(&W)", CMD_WRAP - MENUITEM "ƒtƒHƒ“ƒg(&F)...", CMD_FONT - END - POPUP "•\\ަ(&V)" - BEGIN - MENUITEM "ƒXƒe[ƒ^ƒX ƒo[(&B)", CMD_STATUSBAR - END - POPUP "ƒwƒ‹ƒv(&H)" - BEGIN - MENUITEM "–ÚŽŸ(&C)", CMD_HELP_CONTENTS - MENUITEM "ŒŸõ(&S)...", CMD_HELP_SEARCH - MENUITEM "ƒwƒ‹ƒv‚ÌŽg‚¢•û(&H)", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "î•ñ(&O)" CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 9, "MS UI Gothic" -CAPTION "ƒy[ƒWÝ’è" -{ -LTEXT "ƒwƒbƒ_(&H):", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "ƒtƒbƒ^(&F):", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "ƒ}[ƒWƒ“(&M):", 0x144, 10, 43,160, 45 -LTEXT "¶(&L):", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "ã(&T):", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "‰E(&R):", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "‰º(&B):", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "ƒwƒ‹ƒv(&H)", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -/* Dialog `Encoding' */ -DIALOG_ENCODING DIALOG 0, 0, 256, 44 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | - WS_CAPTION | WS_SYSMENU -FONT 9, "MS UI Gothic" -CAPTION "ƒGƒ“ƒR[ƒfƒBƒ“ƒO" -{ -COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP -LTEXT "•¶ŽšƒR[ƒh:",0x155,5,2,41,12 -COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -LTEXT "‰üsƒR[ƒh:",0x156,5,20,41,12 -} - -/* Dialog 'Go To' */ -DIALOG_GOTO DIALOG 0,0,165,50 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 9, "MS UI Gothic" -CAPTION "s‚ÖˆÚ“®" -{ -EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "s”Ô†:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER -DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP -PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "&s ƒy[ƒW" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "ƒƒ‚’ " -STRING_ERROR, "ƒGƒ‰[" -STRING_WARNING, "Œx" -STRING_INFO, "î•ñ" - -STRING_UNTITLED, "(–³‘è)" - -STRING_ALL_FILES, "‘S‚Ẵtƒ@ƒCƒ‹ (*.*)" -STRING_TEXT_FILES_TXT, "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹ (*.txt)" - -STRING_TOOLARGE, "ƒtƒ@ƒCƒ‹ '%s' ‚̃TƒCƒY‚͑傫‚·‚¬‚邽‚ßAƒƒ‚’ ‚ł͕ÒW‚Å‚«‚Ü‚¹‚ñB\n \ -•ʂ̃GƒfƒBƒ^‚ðŽg—p‚µ‚ĉº‚³‚¢B" -STRING_NOTEXT, "‰½‚à“ü—Í‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB\ -\n‰½‚©“ü—Í‚µ‚Ä‚©‚çŽÀs‚µ‚ĉº‚³‚¢B" -STRING_DOESNOTEXIST, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í‘¶Ý‚µ‚Ü‚¹‚ñ\n\n \ -V‚µ‚¢ƒtƒ@ƒCƒ‹‚ð쬂µ‚Ü‚·‚© ?" -STRING_NOTSAVED, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í•ÏX‚³‚ê‚Ä‚¢‚Ü‚·\n\n \ -•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚© ?" -STRING_NOTFOUND, "'%s' ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½" -STRING_OUT_OF_MEMORY, "‚±‚Ì‘€ì‚ðŽÀs‚·‚邽‚߂̃ƒ‚ƒŠ‚ª\ -‘«‚è‚Ü‚¹‚ñB \nƒƒ‚ƒŠ‚̋󂫂ð‘‚â‚·‚½‚߂ɂ¢‚­‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\nI—¹‚µ‚Ä\ -‰º‚³‚¢B" -STRING_CANNOTFIND "'%s' ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B" -STRING_ANSI, "ANSI" -STRING_UNICODE, "Unicode" -STRING_UNICODE_BE, "Unicode (big endian)" -STRING_UTF8, "UTF-8" -STRING_CRLF, "Windows (CR+LF)" -STRING_LF, "Unix (LF)" -STRING_CR, "Mac (CR)" -} +/* + * Notepad (Japanese resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "ƒtƒ@ƒCƒ‹(&F)" + BEGIN + MENUITEM "V‹Kì¬(&N)...", CMD_NEW + MENUITEM "ŠJ‚­(&O)\tCtrl+O", CMD_OPEN + MENUITEM "•Û‘¶(&S)\tCtrl+S", CMD_SAVE + MENUITEM "–¼‘O‚ð•t‚¯‚ĕۑ¶(&A)...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "ƒy[ƒWÝ’è(&T)...", CMD_PAGE_SETUP + MENUITEM "ˆóü(&P)", CMD_PRINT + MENUITEM "ƒvƒŠƒ“ƒ^‚ÌÝ’è(&R)...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "I—¹(&X)", CMD_EXIT + END + POPUP "•ÒW(&E)" + BEGIN + MENUITEM "Œ³‚É–ß‚·(&U)\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Ø‚èŽæ‚è(&T)\tCtrl+X", CMD_CUT + MENUITEM "ƒRƒs[(&C)\tCtrl+C", CMD_COPY + MENUITEM "ƒy[ƒXƒg(&P)\tCtrl+V", CMD_PASTE + MENUITEM "íœ(&D)\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "ŒŸõ(&S)\tCtrl+F", CMD_SEARCH + MENUITEM "ŽŸ‚ÌŒó•â‚ðŒŸõ(&S)\tF3", CMD_SEARCH_NEXT + MENUITEM "’uŠ·\tCtrl+H", CMD_REPLACE + MENUITEM "s‚ÖˆÚ“®...\tCtrl+G", CMD_GOTO + MENUITEM SEPARATOR + MENUITEM "‘S‚Ä‘I‘ð(&A)\tCtrl+A", CMD_SELECT_ALL + MENUITEM "“ú•t‚ÆŽž‚Ì‘}“ü(&T)\tF5", CMD_TIME_DATE + END + POPUP "‘Ž®(&O)" + BEGIN + MENUITEM "’·‚¢s‚ðÜ‚è•Ô‚·(&W)", CMD_WRAP + MENUITEM "ƒtƒHƒ“ƒg(&F)...", CMD_FONT + END + POPUP "•\\ަ(&V)" + BEGIN + MENUITEM "ƒXƒe[ƒ^ƒX ƒo[(&B)", CMD_STATUSBAR + END + POPUP "ƒwƒ‹ƒv(&H)" + BEGIN + MENUITEM "–ÚŽŸ(&C)", CMD_HELP_CONTENTS + MENUITEM "ŒŸõ(&S)...", CMD_HELP_SEARCH + MENUITEM "ƒwƒ‹ƒv‚ÌŽg‚¢•û(&H)", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "î•ñ(&O)" CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 9, "MS UI Gothic" +CAPTION "ƒy[ƒWÝ’è" +{ +LTEXT "ƒwƒbƒ_(&H):", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "ƒtƒbƒ^(&F):", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "ƒ}[ƒWƒ“(&M):", 0x144, 10, 43,160, 45 +LTEXT "¶(&L):", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "ã(&T):", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "‰E(&R):", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "‰º(&B):", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "ƒwƒ‹ƒv(&H)", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +/* Dialog `Encoding' */ +DIALOG_ENCODING DIALOG 0, 0, 256, 44 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | + WS_CAPTION | WS_SYSMENU +FONT 9, "MS UI Gothic" +CAPTION "ƒGƒ“ƒR[ƒfƒBƒ“ƒO" +{ +COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP +LTEXT "•¶ŽšƒR[ƒh:",0x155,5,2,41,12 +COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +LTEXT "‰üsƒR[ƒh:",0x156,5,20,41,12 +} + +/* Dialog 'Go To' */ +DIALOG_GOTO DIALOG 0,0,165,50 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 9, "MS UI Gothic" +CAPTION "s‚ÖˆÚ“®" +{ +EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "s”Ô†:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER +DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP +PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "&s ƒy[ƒW" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "ƒƒ‚’ " +STRING_ERROR, "ƒGƒ‰[" +STRING_WARNING, "Œx" +STRING_INFO, "î•ñ" + +STRING_UNTITLED, "(–³‘è)" + +STRING_ALL_FILES, "‘S‚Ẵtƒ@ƒCƒ‹ (*.*)" +STRING_TEXT_FILES_TXT, "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹ (*.txt)" + +STRING_TOOLARGE, "ƒtƒ@ƒCƒ‹ '%s' ‚̃TƒCƒY‚͑傫‚·‚¬‚邽‚ßAƒƒ‚’ ‚ł͕ÒW‚Å‚«‚Ü‚¹‚ñB\n \ +•ʂ̃GƒfƒBƒ^‚ðŽg—p‚µ‚ĉº‚³‚¢B" +STRING_NOTEXT, "‰½‚à“ü—Í‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB\ +\n‰½‚©“ü—Í‚µ‚Ä‚©‚çŽÀs‚µ‚ĉº‚³‚¢B" +STRING_DOESNOTEXIST, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í‘¶Ý‚µ‚Ü‚¹‚ñ\n\n \ +V‚µ‚¢ƒtƒ@ƒCƒ‹‚ð쬂µ‚Ü‚·‚© ?" +STRING_NOTSAVED, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í•ÏX‚³‚ê‚Ä‚¢‚Ü‚·\n\n \ +•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚© ?" +STRING_NOTFOUND, "'%s' ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½" +STRING_OUT_OF_MEMORY, "‚±‚Ì‘€ì‚ðŽÀs‚·‚邽‚߂̃ƒ‚ƒŠ‚ª\ +‘«‚è‚Ü‚¹‚ñB \nƒƒ‚ƒŠ‚̋󂫂ð‘‚â‚·‚½‚߂ɂ¢‚­‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\nI—¹‚µ‚Ä\ +‰º‚³‚¢B" +STRING_CANNOTFIND "'%s' ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B" +STRING_ANSI, "ANSI" +STRING_UNICODE, "Unicode" +STRING_UNICODE_BE, "Unicode (big endian)" +STRING_UTF8, "UTF-8" +STRING_CRLF, "Windows (CR+LF)" +STRING_LF, "Unix (LF)" +STRING_CR, "Mac (CR)" +} diff --git a/reactos/base/applications/notepad/res/Nl.rc b/reactos/base/applications/notepad/lang/Nl.rc similarity index 95% rename from reactos/base/applications/notepad/res/Nl.rc rename to reactos/base/applications/notepad/lang/Nl.rc index 079f579294d..026d436b68c 100644 --- a/reactos/base/applications/notepad/res/Nl.rc +++ b/reactos/base/applications/notepad/lang/Nl.rc @@ -1,145 +1,161 @@ -/* - * Notepad (Dutch resources) - * - * Copyright 2003 Hans Leidekker - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Bestand" - BEGIN - MENUITEM "&Nieuw...", CMD_NEW - MENUITEM "&Openen\tCtrl+O", CMD_OPEN - MENUITEM "O&pslaan\tCtrl+p", CMD_SAVE - MENUITEM "Ops&laan als...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Afdrukken", CMD_PRINT - MENUITEM "Pagina-in&stelling...", CMD_PAGE_SETUP - MENUITEM "Printerinstellingen...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Afsluiten", CMD_EXIT - END - POPUP "Be&werken" - BEGIN - MENUITEM "&Ongedaan maken\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "K&nippen\tCtrl+X", CMD_CUT - MENUITEM "&Kopiëren\tCtrl+C", CMD_COPY - MENUITEM "&Plakken\tCtrl+V", CMD_PASTE - MENUITEM "&Verwijderen\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Zoeken\tCtrl+Z", CMD_SEARCH - MENUITEM "&Volgende zoeken\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "&Alles selecteren\tCtrl+A", CMD_SELECT_ALL - MENUITEM "Tijd/&datum\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "A&utomatische terugloop", CMD_WRAP - MENUITEM "&Lettertype instellen...", CMD_FONT - END - POPUP "&Help" - BEGIN - MENUITEM "&Help-onderwerpen", CMD_HELP_CONTENTS - MENUITEM "&Zoeken...", CMD_HELP_SEARCH - MENUITEM "&Hulp bij Help", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&o...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Pagina-instelling" -{ -LTEXT "&Koptekst:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Voettekst:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Marges:", 0x144, 10, 43,160, 45 -LTEXT "Li&nks:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Boven:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Onder:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Annuleren", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Pagina &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Kladblok" -STRING_ERROR, "FOUT" -STRING_WARNING, "WAARSCHUWING" -STRING_INFO, "Informatie" - -STRING_UNTITLED, "(naamloos)" - -STRING_ALL_FILES, "Alle bestanden (*.*)" -STRING_TEXT_FILES_TXT, "Tekstbestanden (*.txt)" - -STRING_TOOLARGE, "Het bestand '%s' is te groot voor Kladblok.\n \ -Gebruik een andere editor." -STRING_NOTEXT, "U heeft geen tekst ingevoerd. \ -\nType uw tekst en probeer het nogmaals" -STRING_DOESNOTEXIST, "Het bestand '%s'\nbestaat niet\n\n \ -Wilt u een nieuw bestand maken?" -STRING_NOTSAVED, "Het bestand '%s'\nis gewijzigd\n\n \ -Wilt u de wijzigingen opslaan?" -STRING_NOTFOUND, "'%s' kan niet worden gevonden." -STRING_OUT_OF_MEMORY, "Onvoldoende geheugen. \ -\nSluit een of meer applicaties om de hoeveelheid \nbeschikbaar geheugen te vergroten." - -} +/* + * Notepad (Dutch resources) + * + * Copyright 2003 Hans Leidekker + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Bestand" + BEGIN + MENUITEM "&Nieuw...", CMD_NEW + MENUITEM "&Openen\tCtrl+O", CMD_OPEN + MENUITEM "O&pslaan\tCtrl+p", CMD_SAVE + MENUITEM "Ops&laan als...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Afdrukken", CMD_PRINT + MENUITEM "Pagina-in&stelling...", CMD_PAGE_SETUP + MENUITEM "Printerinstellingen...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Afsluiten", CMD_EXIT + END + POPUP "Be&werken" + BEGIN + MENUITEM "&Ongedaan maken\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "K&nippen\tCtrl+X", CMD_CUT + MENUITEM "&Kopiëren\tCtrl+C", CMD_COPY + MENUITEM "&Plakken\tCtrl+V", CMD_PASTE + MENUITEM "&Verwijderen\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Zoeken\tCtrl+Z", CMD_SEARCH + MENUITEM "&Volgende zoeken\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "&Alles selecteren\tCtrl+A", CMD_SELECT_ALL + MENUITEM "Tijd/&datum\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "A&utomatische terugloop", CMD_WRAP + MENUITEM "&Lettertype instellen...", CMD_FONT + END + POPUP "&Help" + BEGIN + MENUITEM "&Help-onderwerpen", CMD_HELP_CONTENTS + MENUITEM "&Zoeken...", CMD_HELP_SEARCH + MENUITEM "&Hulp bij Help", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&o...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Pagina-instelling" +{ +LTEXT "&Koptekst:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Voettekst:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Marges:", 0x144, 10, 43,160, 45 +LTEXT "Li&nks:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Boven:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Onder:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Annuleren", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Pagina &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Kladblok" +STRING_ERROR, "FOUT" +STRING_WARNING, "WAARSCHUWING" +STRING_INFO, "Informatie" + +STRING_UNTITLED, "(naamloos)" + +STRING_ALL_FILES, "Alle bestanden (*.*)" +STRING_TEXT_FILES_TXT, "Tekstbestanden (*.txt)" + +STRING_TOOLARGE, "Het bestand '%s' is te groot voor Kladblok.\n \ +Gebruik een andere editor." +STRING_NOTEXT, "U heeft geen tekst ingevoerd. \ +\nType uw tekst en probeer het nogmaals" +STRING_DOESNOTEXIST, "Het bestand '%s'\nbestaat niet\n\n \ +Wilt u een nieuw bestand maken?" +STRING_NOTSAVED, "Het bestand '%s'\nis gewijzigd\n\n \ +Wilt u de wijzigingen opslaan?" +STRING_NOTFOUND, "'%s' kan niet worden gevonden." +STRING_OUT_OF_MEMORY, "Onvoldoende geheugen. \ +\nSluit een of meer applicaties om de hoeveelheid \nbeschikbaar geheugen te vergroten." + +} diff --git a/reactos/base/applications/notepad/lang/No.rc b/reactos/base/applications/notepad/lang/No.rc new file mode 100644 index 00000000000..06b814a062a --- /dev/null +++ b/reactos/base/applications/notepad/lang/No.rc @@ -0,0 +1,204 @@ +/* + * Notepad (English resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Fil" + BEGIN + MENUITEM "&Ny...", CMD_NEW + MENUITEM "&?ne\tCtrl+O", CMD_OPEN + MENUITEM "&Lagre\tCtrl+S", CMD_SAVE + MENUITEM "Lagre &som...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Side &Innstillinger...", CMD_PAGE_SETUP + MENUITEM "&Utskrift", CMD_PRINT + MENUITEM "U&tskrift innstillinger...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "A&vslutt", CMD_EXIT + END + POPUP "&Rediger" + BEGIN + MENUITEM "&Angre\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Klipp &ut\tCtrl+X", CMD_CUT + MENUITEM "&Kopier\tCtrl+C", CMD_COPY + MENUITEM "&Lim inn\tCtrl+V", CMD_PASTE + MENUITEM "&Slett\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Finn...\tCtrl+F", CMD_SEARCH + MENUITEM "Finn &neste\tF3", CMD_SEARCH_NEXT + MENUITEM "Erstatt\tCtrl+H", CMD_REPLACE + MENUITEM "G?il...\tCtrl+G", CMD_GOTO + MENUITEM SEPARATOR + MENUITEM "Merk &alt\tCtrl+A", CMD_SELECT_ALL + MENUITEM "&Klokkeslett/dato\tF5", CMD_TIME_DATE + END + POPUP "F&ormat" + BEGIN + MENUITEM "&Tekstbryting", CMD_WRAP + MENUITEM "&Skrift...", CMD_FONT + END + POPUP "&Vis" + BEGIN + MENUITEM "Status&linje", CMD_STATUSBAR + END + POPUP "&Hjelp" + BEGIN + MENUITEM "&Emner i hjelp", CMD_HELP_CONTENTS + MENUITEM "&S?", CMD_HELP_SEARCH + MENUITEM "&Hjelp om hjelp", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&Om" CMD_ABOUT + MENUITEM "&Infomasjon", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Side innstillinger" +{ +LTEXT "&Header:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Bunntekst:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Marger:", 0x144, 10, 43,160, 45 +LTEXT "&Venstre:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Topp:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&H?", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Bunn:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Avbryt", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Hjelp", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +/* Dialog `Encoding' */ +DIALOG_ENCODING DIALOG 0, 0, 256, 44 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | + WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Koding" +{ +COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP +LTEXT "Koding:",0x155,5,2,41,12 +COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +LTEXT "Sluttlinje:",0x156,5,20,41,12 +} + +/* Dialog 'Go To' */ +DIALOG_GOTO DIALOG 0,0,165,50 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "G?l linje" +{ +EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Line nummer:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER +DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP +PUSHBUTTON "Avbryt", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "Om ReactOS Notisblokk" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notisblokk v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Avslutt",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Side &r" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notisblokk" +STRING_ERROR, "FEIL" +STRING_WARNING, "ADVARSEL" +STRING_INFO, "Informasjon" + +STRING_UNTITLED, "(uten navn)" + +STRING_ALL_FILES, "Alle filer (*.*)" +STRING_TEXT_FILES_TXT, "Tekst filer (*.txt)" + +STRING_TOOLARGE, "Filen '%s' er for stor for notisblokk.\n \ +Vennligst bruk en annen editor." +STRING_NOTEXT, "Du utf?ikke innskrivet tekst. \ +\nVennligst skriv noe og pr?jen" +STRING_DOESNOTEXIST, "Filen '%s'\n eksistere ikke\n\n \ +Vil du opprette en ny fil?" +STRING_NOTSAVED, "Filen '%s'\nhar ikke blitt lagret\n\n \ +Vil du lagre endringen?" +STRING_NOTFOUND, "'%s' ble ikke funnet." +STRING_OUT_OF_MEMORY, "Ikke nok minne for ?ullf?enne \ +oppgaven. \nAvslutt en eller mere applikasjoner for ?ke mengden av \nledig \ +minne." +STRING_CANNOTFIND "Kan ikke finne '%s'" +STRING_ANSI, "ANSI" +STRING_UNICODE, "Unicode" +STRING_UNICODE_BE, "Unicode (big endian)" +STRING_UTF8, "UTF-8" +STRING_CRLF, "Windows" +STRING_LF, "Unix" +STRING_CR, "Mac" +} diff --git a/reactos/base/applications/notepad/res/Pl.rc b/reactos/base/applications/notepad/lang/Pl.rc similarity index 95% rename from reactos/base/applications/notepad/res/Pl.rc rename to reactos/base/applications/notepad/lang/Pl.rc index 7e7a92427c7..d17c181e580 100644 --- a/reactos/base/applications/notepad/res/Pl.rc +++ b/reactos/base/applications/notepad/lang/Pl.rc @@ -1,148 +1,164 @@ -/* - * Notepad (Polish resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * Copyright 2004 Jacek Caban - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Plik" - BEGIN - MENUITEM "&Nowy...", CMD_NEW - MENUITEM "&Otwórz\tCtrl+O", CMD_OPEN - MENUITEM "&Zapisz\tCtrl+S", CMD_SAVE - MENUITEM "Z&apisz jako...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Drukuj", CMD_PRINT - MENUITEM "&Ustawienia strony...", CMD_PAGE_SETUP - MENUITEM "Ustawienia &drukarki...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "Zakoñ&cz", CMD_EXIT - END - POPUP "&Edycja" - BEGIN - MENUITEM "&Cofnij\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Wytnij\tCtrl+X", CMD_CUT - MENUITEM "&Kopiuj\tCtrl+C", CMD_COPY - MENUITEM "Wkl&ej\tCtrl+V", CMD_PASTE - MENUITEM "&Usuñ\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&ZnajdŸ\tCtrl+F", CMD_SEARCH - MENUITEM "Z&najdŸ nastêpny\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Zaznacz w&szystko\tCtrl+A", CMD_SELECT_ALL - MENUITEM "Godzina/&Data\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Zawijanie wierszy", CMD_WRAP - MENUITEM "Czci&onka...", CMD_FONT - END - POPUP "Pomo&c" - BEGIN - MENUITEM "&Tematy pomocy", CMD_HELP_CONTENTS - MENUITEM "&Szukaj...", CMD_HELP_SEARCH - MENUITEM "&Pomoc", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "In&fo...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Ustawienia strony" -{ -LTEXT "&Nag³ówek:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Stopka:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Marginesy:", 0x144, 10, 43,160, 45 -LTEXT "&Lewy:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Górny:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "P&rawy:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Dolny:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Anuluj", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Pomoc", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Strona &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notatnik" -STRING_ERROR, "B£¥D" -STRING_WARNING, "OSTRZE¯ENIE" -STRING_INFO, "Informacja" - -STRING_UNTITLED, "(bez tytu³u)" - -STRING_ALL_FILES, "Wszystkie piki (*.*)" -STRING_TEXT_FILES_TXT, "Pliki tekstowe (*.txt)" - -STRING_TOOLARGE, "Plik '%s' jest za du¿y dla notatnika.\n \ -Proszê u¿yæ innego edytora." -STRING_NOTEXT, "Nie wprowadzi³eœ ¿adnego tekstu. \ -\nProszê coœ wpisaæ i spróbowaæ ponownie." -STRING_DOESNOTEXIST, "Plik '%s' nie istnieje\n\n \ -Czy chcesz utworzyæ nowy plik ?" -STRING_NOTSAVED, "Plik '%s'\nzosta³ zmodyfikowany\n\n \ -Czy chcesz zachowaæ zmiany ?" -STRING_NOTFOUND, "Nie mo¿na odnaleŸæ '%s'." -STRING_OUT_OF_MEMORY, "Za ma³o pamiêci do wykonania tego zadania.\n \ -Zamknij jedn¹ lub wiêcej aplikacji aby zwiêkszyæ iloœæ wolnej pamiêci." - -} +/* + * Notepad (Polish resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * Copyright 2004 Jacek Caban + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Plik" + BEGIN + MENUITEM "&Nowy...", CMD_NEW + MENUITEM "&Otwórz\tCtrl+O", CMD_OPEN + MENUITEM "&Zapisz\tCtrl+S", CMD_SAVE + MENUITEM "Z&apisz jako...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Drukuj", CMD_PRINT + MENUITEM "&Ustawienia strony...", CMD_PAGE_SETUP + MENUITEM "Ustawienia &drukarki...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "Zakoñ&cz", CMD_EXIT + END + POPUP "&Edycja" + BEGIN + MENUITEM "&Cofnij\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Wytnij\tCtrl+X", CMD_CUT + MENUITEM "&Kopiuj\tCtrl+C", CMD_COPY + MENUITEM "Wkl&ej\tCtrl+V", CMD_PASTE + MENUITEM "&Usuñ\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&ZnajdŸ\tCtrl+F", CMD_SEARCH + MENUITEM "Z&najdŸ nastêpny\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Zaznacz w&szystko\tCtrl+A", CMD_SELECT_ALL + MENUITEM "Godzina/&Data\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Zawijanie wierszy", CMD_WRAP + MENUITEM "Czci&onka...", CMD_FONT + END + POPUP "Pomo&c" + BEGIN + MENUITEM "&Tematy pomocy", CMD_HELP_CONTENTS + MENUITEM "&Szukaj...", CMD_HELP_SEARCH + MENUITEM "&Pomoc", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "In&fo...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Ustawienia strony" +{ +LTEXT "&Nag³ówek:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Stopka:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Marginesy:", 0x144, 10, 43,160, 45 +LTEXT "&Lewy:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Górny:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "P&rawy:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Dolny:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Anuluj", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Pomoc", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Strona &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notatnik" +STRING_ERROR, "B£¥D" +STRING_WARNING, "OSTRZE¯ENIE" +STRING_INFO, "Informacja" + +STRING_UNTITLED, "(bez tytu³u)" + +STRING_ALL_FILES, "Wszystkie piki (*.*)" +STRING_TEXT_FILES_TXT, "Pliki tekstowe (*.txt)" + +STRING_TOOLARGE, "Plik '%s' jest za du¿y dla notatnika.\n \ +Proszê u¿yæ innego edytora." +STRING_NOTEXT, "Nie wprowadzi³eœ ¿adnego tekstu. \ +\nProszê coœ wpisaæ i spróbowaæ ponownie." +STRING_DOESNOTEXIST, "Plik '%s' nie istnieje\n\n \ +Czy chcesz utworzyæ nowy plik ?" +STRING_NOTSAVED, "Plik '%s'\nzosta³ zmodyfikowany\n\n \ +Czy chcesz zachowaæ zmiany ?" +STRING_NOTFOUND, "Nie mo¿na odnaleŸæ '%s'." +STRING_OUT_OF_MEMORY, "Za ma³o pamiêci do wykonania tego zadania.\n \ +Zamknij jedn¹ lub wiêcej aplikacji aby zwiêkszyæ iloœæ wolnej pamiêci." + +} diff --git a/reactos/base/applications/notepad/res/Pt.rc b/reactos/base/applications/notepad/lang/Pt.rc similarity index 95% rename from reactos/base/applications/notepad/res/Pt.rc rename to reactos/base/applications/notepad/lang/Pt.rc index 412195ef28f..2f3a008fdfe 100644 --- a/reactos/base/applications/notepad/res/Pt.rc +++ b/reactos/base/applications/notepad/lang/Pt.rc @@ -1,148 +1,164 @@ -/* - * Notepad - * Portuguese Language Support - * - * Copyright 1999 Marcel Baur - * Copyright 2002 Sylvain Petreolle - * Copyright 2003 Marcelo Duarte - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Arquivo" - BEGIN - MENUITEM "&Novo...", CMD_NEW - MENUITEM "A&brir", CMD_OPEN - MENUITEM "&Salvar", CMD_SAVE - MENUITEM "Salvar &como...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Imprimir", CMD_PRINT - MENUITEM "C&onfigurar página...", CMD_PAGE_SETUP - MENUITEM "Configurar i&mpressora...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "Sai&r", CMD_EXIT - END - POPUP "&Editar" - BEGIN - MENUITEM "&Desfazer\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Recortar\tCtrl+X", CMD_CUT - MENUITEM "&Copiar\tCtrl+C", CMD_COPY - MENUITEM "C&olar\tCtrl+V", CMD_PASTE - MENUITEM "E&xcluir\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Localizar...", CMD_SEARCH - MENUITEM "Localizar &próxima\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Selecionar &tudo", CMD_SELECT_ALL - MENUITEM "&Data/Hora\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Quebrar automática de linha", CMD_WRAP - MENUITEM "&Fonte...", CMD_FONT - END - POPUP "&Ajuda" - BEGIN - MENUITEM "&Conteúdo", CMD_HELP_CONTENTS - MENUITEM "&Procurar...", CMD_HELP_SEARCH - MENUITEM "&Ajuda na ajuda", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "&Informações...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Configurar página" -{ -LTEXT "&Cabeçalho:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Rodapé:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Margens:", 0x144, 10, 43,160, 45 -LTEXT "&Esquerda:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Superior:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Direita:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Inferior:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Ajuda", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "ERRO" -STRING_WARNING, "AVISO" -STRING_INFO, "Informação" - -STRING_UNTITLED, "(sem nome)" - -STRING_ALL_FILES, "Todos os arquivos (*.*)" -STRING_TEXT_FILES_TXT, "Arquivos texto (*.txt)" - -STRING_TOOLARGE, "Arquivo '%s' é muito longo para o notepad.\n \ -Por favor use um editor diferente." -STRING_NOTEXT, "Você não digitou nenhum texto. \ -\nPor favor digite alguma coisa e tente novamente" -STRING_DOESNOTEXIST, "Arquivo '%s'\nnão existe\n\n \ -Você deseja criar um novo arquivo?" -STRING_NOTSAVED, "Arquivo '%s'\nfoi modificado\n\n \ -Gostaria de salvar as alteraçÕes?" -STRING_NOTFOUND, "'%s' não pode ser encontrado." -STRING_OUT_OF_MEMORY, "Não há memória suficiente para completar essa \ -tarefa. \nFeche uma ou mais aplicações para aumentar a quantidade de memória livre." - -} +/* + * Notepad + * Portuguese Language Support + * + * Copyright 1999 Marcel Baur + * Copyright 2002 Sylvain Petreolle + * Copyright 2003 Marcelo Duarte + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Arquivo" + BEGIN + MENUITEM "&Novo...", CMD_NEW + MENUITEM "A&brir", CMD_OPEN + MENUITEM "&Salvar", CMD_SAVE + MENUITEM "Salvar &como...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Imprimir", CMD_PRINT + MENUITEM "C&onfigurar página...", CMD_PAGE_SETUP + MENUITEM "Configurar i&mpressora...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "Sai&r", CMD_EXIT + END + POPUP "&Editar" + BEGIN + MENUITEM "&Desfazer\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Recortar\tCtrl+X", CMD_CUT + MENUITEM "&Copiar\tCtrl+C", CMD_COPY + MENUITEM "C&olar\tCtrl+V", CMD_PASTE + MENUITEM "E&xcluir\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Localizar...", CMD_SEARCH + MENUITEM "Localizar &próxima\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Selecionar &tudo", CMD_SELECT_ALL + MENUITEM "&Data/Hora\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Quebrar automática de linha", CMD_WRAP + MENUITEM "&Fonte...", CMD_FONT + END + POPUP "&Ajuda" + BEGIN + MENUITEM "&Conteúdo", CMD_HELP_CONTENTS + MENUITEM "&Procurar...", CMD_HELP_SEARCH + MENUITEM "&Ajuda na ajuda", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "&Informações...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Configurar página" +{ +LTEXT "&Cabeçalho:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Rodapé:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Margens:", 0x144, 10, 43,160, 45 +LTEXT "&Esquerda:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Superior:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Direita:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Inferior:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Ajuda", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "ERRO" +STRING_WARNING, "AVISO" +STRING_INFO, "Informação" + +STRING_UNTITLED, "(sem nome)" + +STRING_ALL_FILES, "Todos os arquivos (*.*)" +STRING_TEXT_FILES_TXT, "Arquivos texto (*.txt)" + +STRING_TOOLARGE, "Arquivo '%s' é muito longo para o notepad.\n \ +Por favor use um editor diferente." +STRING_NOTEXT, "Você não digitou nenhum texto. \ +\nPor favor digite alguma coisa e tente novamente" +STRING_DOESNOTEXIST, "Arquivo '%s'\nnão existe\n\n \ +Você deseja criar um novo arquivo?" +STRING_NOTSAVED, "Arquivo '%s'\nfoi modificado\n\n \ +Gostaria de salvar as alteraçÕes?" +STRING_NOTFOUND, "'%s' não pode ser encontrado." +STRING_OUT_OF_MEMORY, "Não há memória suficiente para completar essa \ +tarefa. \nFeche uma ou mais aplicações para aumentar a quantidade de memória livre." + +} diff --git a/reactos/base/applications/notepad/res/Ru.rc b/reactos/base/applications/notepad/lang/Ru.rc similarity index 94% rename from reactos/base/applications/notepad/res/Ru.rc rename to reactos/base/applications/notepad/lang/Ru.rc index 91027bc1e3b..9c2fcfbc9cc 100644 --- a/reactos/base/applications/notepad/res/Ru.rc +++ b/reactos/base/applications/notepad/lang/Ru.rc @@ -1,144 +1,159 @@ -/* - * Notepad (Russian resources) - * - * Copyright 2003 Igor Stepin - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Ôàéë" - BEGIN - MENUITEM "Ñîçä&àòü", CMD_NEW - MENUITEM "&Îòêðûòü...", CMD_OPEN - MENUITEM "&Ñîõðàíèòü", CMD_SAVE - MENUITEM "Ñîõðàíèòü &êàê...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Ïàðà&ìåòðû ñòðàíèöû...", CMD_PAGE_SETUP - MENUITEM "&Íàñòðîéêà ïðèíòåðà...", CMD_PRINTER_SETUP - MENUITEM "&Ïå÷àòàòü", CMD_PRINT - MENUITEM SEPARATOR - MENUITEM "Â&ûõîä", CMD_EXIT - END - POPUP "&Ïðàâêà" - BEGIN - MENUITEM "&Îòìåíèòü\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Âûðåçàòü\tCtrl+X", CMD_CUT - MENUITEM "&Êîïèðîâàòü\tCtrl+C", CMD_COPY - MENUITEM "Âñò&àâèòü\tCtrl+V", CMD_PASTE - MENUITEM "&Óäàëèòü\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Íàéòè", CMD_SEARCH - MENUITEM "Íàéòè &äàëåå\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Âûäåëèòü â&ñå", CMD_SELECT_ALL - MENUITEM "Âðåì&ÿ è äàòà\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Ïåðåíîñ ïî ñëîâàì", CMD_WRAP - END - POPUP "&Ñïðàâêà" - BEGIN - MENUITEM "&Ñîäåðæàíèå", CMD_HELP_CONTENTS - MENUITEM "&Ïîèñê...", CMD_HELP_SEARCH - MENUITEM "&Èñïîëüçîâàíèå ñïðàâêè", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "&Ñâåäåíèÿ...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Ïàðàìåòðû ñòðàíèöû" -{ -LTEXT "Â&åðõíèé êîëîíòèòóë:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "Í&èæíèé êîëîíòèòóë:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "Ïîëÿ (ìì):", 0x144, 10, 43,160, 45 -LTEXT "&Ëåâîå:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Âåðõíåå:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Ïðàâîå:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Íèæíåå:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Îòìåíà", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Ñïðàâêà", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Ñòðàíèöà &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 ìì" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 ìì" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 ìì" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 ìì" /* FIXME */ - -STRING_NOTEPAD, "Áëîêíîò" -STRING_ERROR, "ÎØÈÁÊÀ" -STRING_WARNING, "ÂÍÈÌÀÍÈÅ" -STRING_INFO, "Èíôîðìàöèÿ" - -STRING_UNTITLED, "(áåç çàãîëîâêà)" - -STRING_ALL_FILES, "Âñå ôàéëû (*.*)" -STRING_TEXT_FILES_TXT, "Òåêñòîâûå ôàéëû (*.txt)" - -STRING_TOOLARGE, "Ôàéë '%s' ñëèøêîì áîëüøîé äëÿ áëîêíîòà.\n \ -Èñïîëüçóéòå äðóãîé ðåäàêòîð." -STRING_NOTEXT, "Âû íå ââåëè íèêàêîãî òåêñòà. \ -\nÂâåäèòå ÷òî-íèáóäü è ïîïðîáóéòå åùå." -STRING_DOESNOTEXIST, "Ôàéë '%s'\níå ñóùåñòâóåò\n\n \ -Õîòèòå ñîçäàòü íîâûé ôàéë?" -STRING_NOTSAVED, "Ôàéë '%s'\náûë èçìåíåí\n\n \ -Õîòèòå ñîõðàíèòü èçìåíåíèÿ?" -STRING_NOTFOUND, "'%s' íå íàéäåí." -STRING_OUT_OF_MEMORY, "Íåäîñòàòî÷íî ïàìÿòè äëÿ çàâåðøåíèÿ ýòîé îïåðàöèè \ -\nÇàêðîéòå îäíî èëè íåñêîëüêî ïðèëîæåíèé è ïîâòîðèòå ïîïûòêó." - -} +/* + * Notepad (Russian resources) + * + * Copyright 2003 Igor Stepin + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Ôàéë" + BEGIN + MENUITEM "Ñîçä&àòü", CMD_NEW + MENUITEM "&Îòêðûòü...", CMD_OPEN + MENUITEM "&Ñîõðàíèòü", CMD_SAVE + MENUITEM "Ñîõðàíèòü &êàê...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Ïàðà&ìåòðû ñòðàíèöû...", CMD_PAGE_SETUP + MENUITEM "&Íàñòðîéêà ïðèíòåðà...", CMD_PRINTER_SETUP + MENUITEM "&Ïå÷àòàòü", CMD_PRINT + MENUITEM SEPARATOR + MENUITEM "Â&ûõîä", CMD_EXIT + END + POPUP "&Ïðàâêà" + BEGIN + MENUITEM "&Îòìåíèòü\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Âûðåçàòü\tCtrl+X", CMD_CUT + MENUITEM "&Êîïèðîâàòü\tCtrl+C", CMD_COPY + MENUITEM "Âñò&àâèòü\tCtrl+V", CMD_PASTE + MENUITEM "&Óäàëèòü\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Íàéòè", CMD_SEARCH + MENUITEM "Íàéòè &äàëåå\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Âûäåëèòü â&ñå", CMD_SELECT_ALL + MENUITEM "Âðåì&ÿ è äàòà\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Ïåðåíîñ ïî ñëîâàì", CMD_WRAP + END + POPUP "&Ñïðàâêà" + BEGIN + MENUITEM "&Ñîäåðæàíèå", CMD_HELP_CONTENTS + MENUITEM "&Ïîèñê...", CMD_HELP_SEARCH + MENUITEM "&Èñïîëüçîâàíèå ñïðàâêè", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "&Ñâåäåíèÿ...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Ïàðàìåòðû ñòðàíèöû" +{ +LTEXT "Â&åðõíèé êîëîíòèòóë:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "Í&èæíèé êîëîíòèòóë:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "Ïîëÿ (ìì):", 0x144, 10, 43,160, 45 +LTEXT "&Ëåâîå:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Âåðõíåå:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Ïðàâîå:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Íèæíåå:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Îòìåíà", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Ñïðàâêà", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Ñòðàíèöà &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 ìì" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 ìì" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 ìì" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 ìì" /* FIXME */ + +STRING_NOTEPAD, "Áëîêíîò" +STRING_ERROR, "ÎØÈÁÊÀ" +STRING_WARNING, "ÂÍÈÌÀÍÈÅ" +STRING_INFO, "Èíôîðìàöèÿ" + +STRING_UNTITLED, "(áåç çàãîëîâêà)" + +STRING_ALL_FILES, "Âñå ôàéëû (*.*)" +STRING_TEXT_FILES_TXT, "Òåêñòîâûå ôàéëû (*.txt)" + +STRING_TOOLARGE, "Ôàéë '%s' ñëèøêîì áîëüøîé äëÿ áëîêíîòà.\n \ +Èñïîëüçóéòå äðóãîé ðåäàêòîð." +STRING_NOTEXT, "Âû íå ââåëè íèêàêîãî òåêñòà. \ +\nÂâåäèòå ÷òî-íèáóäü è ïîïðîáóéòå åùå." +STRING_DOESNOTEXIST, "Ôàéë '%s'\níå ñóùåñòâóåò\n\n \ +Õîòèòå ñîçäàòü íîâûé ôàéë?" +STRING_NOTSAVED, "Ôàéë '%s'\náûë èçìåíåí\n\n \ +Õîòèòå ñîõðàíèòü èçìåíåíèÿ?" +STRING_NOTFOUND, "'%s' íå íàéäåí." +STRING_OUT_OF_MEMORY, "Íåäîñòàòî÷íî ïàìÿòè äëÿ çàâåðøåíèÿ ýòîé îïåðàöèè \ +\nÇàêðîéòå îäíî èëè íåñêîëüêî ïðèëîæåíèé è ïîâòîðèòå ïîïûòêó." + +} diff --git a/reactos/base/applications/notepad/res/Si.rc b/reactos/base/applications/notepad/lang/Si.rc similarity index 94% rename from reactos/base/applications/notepad/res/Si.rc rename to reactos/base/applications/notepad/lang/Si.rc index 5afa1df00a2..8abf6aa93fe 100644 --- a/reactos/base/applications/notepad/res/Si.rc +++ b/reactos/base/applications/notepad/lang/Si.rc @@ -1,144 +1,160 @@ -/* - * Notepad (Slovenian resources) - * - * Copyright 2002-2003 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_SLOVENIAN, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Datoteka" - BEGIN - MENUITEM "&Nova", CMD_NEW - MENUITEM "&Odpri ...", CMD_OPEN - MENUITEM "&Shrani", CMD_SAVE - MENUITEM "Shrani &kot ...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Na&tisni", CMD_PRINT - MENUITEM "P&riprava strani ...", CMD_PAGE_SETUP - MENUITEM "&Tiskalnik ...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "Iz&hod", CMD_EXIT - END - POPUP "&Urejanje" - BEGIN - MENUITEM "&Razveljavi\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Izreži\tCtrl+X", CMD_CUT - MENUITEM "&Kopiraj\tCtrl+C", CMD_COPY - MENUITEM "&Prilepi\tCtrl+V", CMD_PASTE - MENUITEM "Izbri&ši\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "&Najdi ...", CMD_SEARCH - MENUITEM "Na&daljuj iskanje\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Izberi &vse", CMD_SELECT_ALL - MENUITEM "Èas/&Datum\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "Pr&elom vrstice", CMD_WRAP - END - POPUP "&Pomoè" - BEGIN - MENUITEM "&Teme pomoèi", CMD_HELP_CONTENTS - MENUITEM "&Najdi ...", CMD_HELP_SEARCH - MENUITEM "&O pomoèi", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&ormacije ...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Page Setup" -{ -LTEXT "&Glava:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Noga:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "Robovi", 0x144, 10, 43,160, 45 -LTEXT "&Levo:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Desno:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Zgoraj:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Spodaj:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "V redu", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Preklièi", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Pomoè", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Stran &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Beležnica" -STRING_ERROR, "NAPAKA" -STRING_WARNING, "OPOZORILO" -STRING_INFO, "Informacija" - -STRING_UNTITLED, "Neimenovana" - -STRING_ALL_FILES, "Vse datoteke (*.*)" -STRING_TEXT_FILES_TXT, "Datoteke z besedilom (*.txt)" - -STRING_TOOLARGE, "Datoteka '%s' je prevelika za Beležnico.\n \ -Uporabite drug urejevalnik." -STRING_NOTEXT, "Niste vnesli besedila. \ -\nVnesite besedilo in poskusite znova." -STRING_DOESNOTEXIST, "Datoteka '%s' ne obstaja.\n\n \ -Ali želite ustvariti novo datoteko?" -STRING_NOTSAVED, "Vsebina datoteke '%s'je bila spremenjena.\n\n \ -Ali želite shraniti spremembe?" -STRING_NOTFOUND, "Ni mogoèe najti '%s'." -STRING_OUT_OF_MEMORY, "Na voljo ni dovolj pomnilnika, da bi bilo mogoèe dokonèati to \ -operacijo. \nÈe ga želite sprostiti, konèajte enega ali veè programov in poskusite znova. " - -} +/* + * Notepad (Slovenian resources) + * + * Copyright 2002-2003 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Datoteka" + BEGIN + MENUITEM "&Nova", CMD_NEW + MENUITEM "&Odpri ...", CMD_OPEN + MENUITEM "&Shrani", CMD_SAVE + MENUITEM "Shrani &kot ...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Na&tisni", CMD_PRINT + MENUITEM "P&riprava strani ...", CMD_PAGE_SETUP + MENUITEM "&Tiskalnik ...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "Iz&hod", CMD_EXIT + END + POPUP "&Urejanje" + BEGIN + MENUITEM "&Razveljavi\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Izreži\tCtrl+X", CMD_CUT + MENUITEM "&Kopiraj\tCtrl+C", CMD_COPY + MENUITEM "&Prilepi\tCtrl+V", CMD_PASTE + MENUITEM "Izbri&ši\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "&Najdi ...", CMD_SEARCH + MENUITEM "Na&daljuj iskanje\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Izberi &vse", CMD_SELECT_ALL + MENUITEM "Èas/&Datum\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "Pr&elom vrstice", CMD_WRAP + END + POPUP "&Pomoè" + BEGIN + MENUITEM "&Teme pomoèi", CMD_HELP_CONTENTS + MENUITEM "&Najdi ...", CMD_HELP_SEARCH + MENUITEM "&O pomoèi", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&ormacije ...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Page Setup" +{ +LTEXT "&Glava:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Noga:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "Robovi", 0x144, 10, 43,160, 45 +LTEXT "&Levo:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Desno:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Zgoraj:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Spodaj:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "V redu", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Preklièi", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Pomoè", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Stran &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Beležnica" +STRING_ERROR, "NAPAKA" +STRING_WARNING, "OPOZORILO" +STRING_INFO, "Informacija" + +STRING_UNTITLED, "Neimenovana" + +STRING_ALL_FILES, "Vse datoteke (*.*)" +STRING_TEXT_FILES_TXT, "Datoteke z besedilom (*.txt)" + +STRING_TOOLARGE, "Datoteka '%s' je prevelika za Beležnico.\n \ +Uporabite drug urejevalnik." +STRING_NOTEXT, "Niste vnesli besedila. \ +\nVnesite besedilo in poskusite znova." +STRING_DOESNOTEXIST, "Datoteka '%s' ne obstaja.\n\n \ +Ali želite ustvariti novo datoteko?" +STRING_NOTSAVED, "Vsebina datoteke '%s'je bila spremenjena.\n\n \ +Ali želite shraniti spremembe?" +STRING_NOTFOUND, "Ni mogoèe najti '%s'." +STRING_OUT_OF_MEMORY, "Na voljo ni dovolj pomnilnika, da bi bilo mogoèe dokonèati to \ +operacijo. \nÈe ga želite sprostiti, konèajte enega ali veè programov in poskusite znova. " + +} diff --git a/reactos/base/applications/notepad/res/Sk.rc b/reactos/base/applications/notepad/lang/Sk.rc similarity index 94% rename from reactos/base/applications/notepad/res/Sk.rc rename to reactos/base/applications/notepad/lang/Sk.rc index cf865c72622..ebd5f2d48d7 100644 --- a/reactos/base/applications/notepad/res/Sk.rc +++ b/reactos/base/applications/notepad/lang/Sk.rc @@ -1,151 +1,167 @@ -/* - * Notepad (Slovak resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_SLOVAK, SUBLANG_NEUTRAL - -MAIN_MENU MENU -{ - POPUP "&File" - BEGIN - MENUITEM "&New...", CMD_NEW - MENUITEM "&Open", CMD_OPEN - MENUITEM "&Save", CMD_SAVE - MENUITEM "Save &as...", CMD_SAVE_AS - MENUITEM "&Print", CMD_PRINT - MENUITEM "Page Se&tup...", CMD_PAGE_SETUP - MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Exit", CMD_EXIT - } - POPUP "&Edit" - BEGIN - MENUITEM "&Undo\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Cu&t\tCtrl+X", CMD_CUT - MENUITEM "&Copy\tCtrl+C", CMD_COPY - MENUITEM "&Paste\tCtrl+V", CMD_PASTE - MENUITEM "&Delete\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Select &all", CMD_SELECT_ALL - MENUITEM "&Time/Date\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Wrap long lines", CMD_WRAP - } - POPUP "&Search" - BEGIN - MENUITEM "&Search", CMD_SEARCH - MENUITEM "&Search next\tF3", CMD_SEARCH_NEXT - } - POPUP "&Help" - BEGIN - MENUITEM "&Contents", CMD_HELP_CONTENTS - MENUITEM "&Search...", CMD_HELP_SEARCH - MENUITEM "&Help on help", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - POPUP "Inf&o..." - BEGIN - MENUITEM "&About" CMD_ABOUT - MENUITEM "&About Wine", CMD_ABOUT_WINE - } - } -} - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Page Setup" -{ -LTEXT "&Header:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Footer:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Margins:", 0x144, 10, 43,160, 45 -LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Cancel", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "ERROR" -STRING_WARNING, "WARNING" -STRING_INFO, "Information" - -STRING_UNTITLED, "(untitled)" - -STRING_ALL_FILES, "All files (*.*)" -STRING_TEXT_FILES_TXT, "Text files (*.txt)" - -STRING_TOOLARGE, "File '%s' is too large for notepad.\n \ -Please use a different editor." -STRING_NOTEXT, "You didn't enter any text. \ -\nPlease type something and try again" -STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ -Do you want to create a new file ?" -STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \ -Would you like to save the changes ?" -STRING_NOTFOUND, "'%s' can not be found." -STRING_OUT_OF_MEMORY, "Not enough memory to complete this \ -task. \nClose one or more applications to increase the amount of \nfree \ -memory." - -} +/* + * Notepad (Slovak resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +{ + POPUP "&File" + BEGIN + MENUITEM "&New...", CMD_NEW + MENUITEM "&Open", CMD_OPEN + MENUITEM "&Save", CMD_SAVE + MENUITEM "Save &as...", CMD_SAVE_AS + MENUITEM "&Print", CMD_PRINT + MENUITEM "Page Se&tup...", CMD_PAGE_SETUP + MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Exit", CMD_EXIT + } + POPUP "&Edit" + BEGIN + MENUITEM "&Undo\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Cu&t\tCtrl+X", CMD_CUT + MENUITEM "&Copy\tCtrl+C", CMD_COPY + MENUITEM "&Paste\tCtrl+V", CMD_PASTE + MENUITEM "&Delete\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "Select &all", CMD_SELECT_ALL + MENUITEM "&Time/Date\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Wrap long lines", CMD_WRAP + } + POPUP "&Search" + BEGIN + MENUITEM "&Search", CMD_SEARCH + MENUITEM "&Search next\tF3", CMD_SEARCH_NEXT + } + POPUP "&Help" + BEGIN + MENUITEM "&Contents", CMD_HELP_CONTENTS + MENUITEM "&Search...", CMD_HELP_SEARCH + MENUITEM "&Help on help", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + POPUP "Inf&o..." + BEGIN + MENUITEM "&About" CMD_ABOUT + MENUITEM "&About Wine", CMD_ABOUT_WINE + } + } +} + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Page Setup" +{ +LTEXT "&Header:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Footer:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Margins:", 0x144, 10, 43,160, 45 +LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Cancel", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "ERROR" +STRING_WARNING, "WARNING" +STRING_INFO, "Information" + +STRING_UNTITLED, "(untitled)" + +STRING_ALL_FILES, "All files (*.*)" +STRING_TEXT_FILES_TXT, "Text files (*.txt)" + +STRING_TOOLARGE, "File '%s' is too large for notepad.\n \ +Please use a different editor." +STRING_NOTEXT, "You didn't enter any text. \ +\nPlease type something and try again" +STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ +Do you want to create a new file ?" +STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \ +Would you like to save the changes ?" +STRING_NOTFOUND, "'%s' can not be found." +STRING_OUT_OF_MEMORY, "Not enough memory to complete this \ +task. \nClose one or more applications to increase the amount of \nfree \ +memory." + +} diff --git a/reactos/base/applications/notepad/res/Sv.rc b/reactos/base/applications/notepad/lang/Sv.rc similarity index 95% rename from reactos/base/applications/notepad/res/Sv.rc rename to reactos/base/applications/notepad/lang/Sv.rc index 0a660940650..11521e134e3 100644 --- a/reactos/base/applications/notepad/res/Sv.rc +++ b/reactos/base/applications/notepad/lang/Sv.rc @@ -1,146 +1,162 @@ -/* - * Notepad (Swedish resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * Fixed by Anders Bergh 2005 - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "&Arkiv" - BEGIN - MENUITEM "&Ny...", CMD_NEW - MENUITEM "&Öppna", CMD_OPEN - MENUITEM "&Spara", CMD_SAVE - MENUITEM "Spara so&m...", CMD_SAVE_AS - MENUITEM "Skriv &ut...", CMD_PRINT - MENUITEM "Utskrifts&format...", CMD_PAGE_SETUP - MENUITEM "Skrivar&inställningar...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "&Avsluta", CMD_EXIT - END - POPUP "&Redigera" - BEGIN - MENUITEM "&Ångra\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Klipp ut\tCtrl+X", CMD_CUT - MENUITEM "K&opiera\tCtrl+C", CMD_COPY - MENUITEM "K&listra in\tCtrl+V", CMD_PASTE - MENUITEM "&Ta bort\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Sök...", CMD_SEARCH - MENUITEM "&Sök nästa\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "Markera &allt", CMD_SELECT_ALL - MENUITEM "&Tid/datum\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "&Automatiskt radbyte", CMD_WRAP - END - POPUP "&Hjälp" - BEGIN - MENUITEM "&Innehåll", CMD_HELP_CONTENTS - MENUITEM "&Sök...", CMD_HELP_SEARCH - MENUITEM "Anvisningar för hjälpen", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "Inf&ormation...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Skrivarinställningar" -{ -LTEXT "&Huvudnot:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Fotnot:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "Marginaler:", 0x144, 10, 43,160, 45 -LTEXT "&Vänsterkant:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Överkant:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Högerkant:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Nederkant:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Avbryt", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Hjälp", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" -STRING_PAGESETUP_FOOTERVALUE, "Sida &s" -STRING_PAGESETUP_LEFTVALUE, "20 mm" -STRING_PAGESETUP_RIGHTVALUE, "20 mm" -STRING_PAGESETUP_TOPVALUE, "25 mm" -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" - -STRING_NOTEPAD, "Anteckningar" -STRING_ERROR, "FEL" -STRING_WARNING, "VARNING" -STRING_INFO, "Information" - -STRING_UNTITLED, "(namnlös)" - -STRING_ALL_FILES, "Alla filer (*.*)" -STRING_TEXT_FILES_TXT, "Textfiler (*.txt)" - -STRING_TOOLARGE, "Filen '%s' är för stor för Anteckningar.\n \ -Använd en annan editor." -STRING_NOTEXT, "Du skrev inte in någon text. \ -\nSkriv något och försök sedan igen." -STRING_DOESNOTEXIST, "Filen '%s'\nexisterar inte.\n\n \ -Vill du skapa en ny fil?" -STRING_NOTSAVED, "Filen '%s'\nhar ändrats.\n\n \ -Vill du spara ändringarna?" -STRING_NOTFOUND, "'%s' hittades inte." -STRING_OUT_OF_MEMORY, "Det finns inte tillräckligt med minne för att kunna slutföra \ -den här åtgärden. \nAvsluta ett eller flera program för att frigöra mer minne." - -} +/* + * Notepad (Swedish resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * Fixed by Anders Bergh 2005 + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "&Arkiv" + BEGIN + MENUITEM "&Ny...", CMD_NEW + MENUITEM "&Öppna", CMD_OPEN + MENUITEM "&Spara", CMD_SAVE + MENUITEM "Spara so&m...", CMD_SAVE_AS + MENUITEM "Skriv &ut...", CMD_PRINT + MENUITEM "Utskrifts&format...", CMD_PAGE_SETUP + MENUITEM "Skrivar&inställningar...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "&Avsluta", CMD_EXIT + END + POPUP "&Redigera" + BEGIN + MENUITEM "&Ångra\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Klipp ut\tCtrl+X", CMD_CUT + MENUITEM "K&opiera\tCtrl+C", CMD_COPY + MENUITEM "K&listra in\tCtrl+V", CMD_PASTE + MENUITEM "&Ta bort\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "Sök...", CMD_SEARCH + MENUITEM "&Sök nästa\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "Markera &allt", CMD_SELECT_ALL + MENUITEM "&Tid/datum\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "&Automatiskt radbyte", CMD_WRAP + END + POPUP "&Hjälp" + BEGIN + MENUITEM "&Innehåll", CMD_HELP_CONTENTS + MENUITEM "&Sök...", CMD_HELP_SEARCH + MENUITEM "Anvisningar för hjälpen", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "Inf&ormation...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Skrivarinställningar" +{ +LTEXT "&Huvudnot:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Fotnot:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "Marginaler:", 0x144, 10, 43,160, 45 +LTEXT "&Vänsterkant:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Överkant:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Högerkant:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Nederkant:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Avbryt", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Hjälp", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" +STRING_PAGESETUP_FOOTERVALUE, "Sida &s" +STRING_PAGESETUP_LEFTVALUE, "20 mm" +STRING_PAGESETUP_RIGHTVALUE, "20 mm" +STRING_PAGESETUP_TOPVALUE, "25 mm" +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" + +STRING_NOTEPAD, "Anteckningar" +STRING_ERROR, "FEL" +STRING_WARNING, "VARNING" +STRING_INFO, "Information" + +STRING_UNTITLED, "(namnlös)" + +STRING_ALL_FILES, "Alla filer (*.*)" +STRING_TEXT_FILES_TXT, "Textfiler (*.txt)" + +STRING_TOOLARGE, "Filen '%s' är för stor för Anteckningar.\n \ +Använd en annan editor." +STRING_NOTEXT, "Du skrev inte in någon text. \ +\nSkriv något och försök sedan igen." +STRING_DOESNOTEXIST, "Filen '%s'\nexisterar inte.\n\n \ +Vill du skapa en ny fil?" +STRING_NOTSAVED, "Filen '%s'\nhar ändrats.\n\n \ +Vill du spara ändringarna?" +STRING_NOTFOUND, "'%s' hittades inte." +STRING_OUT_OF_MEMORY, "Det finns inte tillräckligt med minne för att kunna slutföra \ +den här åtgärden. \nAvsluta ett eller flera program för att frigöra mer minne." + +} diff --git a/reactos/base/applications/notepad/res/Th.rc b/reactos/base/applications/notepad/lang/Th.rc similarity index 94% rename from reactos/base/applications/notepad/res/Th.rc rename to reactos/base/applications/notepad/lang/Th.rc index 3740f2141fe..e3109b391c3 100644 --- a/reactos/base/applications/notepad/res/Th.rc +++ b/reactos/base/applications/notepad/lang/Th.rc @@ -1,140 +1,156 @@ -/* - * Notepad (Thai Resources) - * - * Copyright 2003 Jon Griffiths - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_THAI, SUBLANG_NEUTRAL - -MAIN_MENU MENU -BEGIN - POPUP "á¿éÁ" - BEGIN - MENUITEM "ÊÃéÒ§ãËÁè...", CMD_NEW - MENUITEM "à»Ô´...\tCtrl+O", CMD_OPEN - MENUITEM "ºÑ¹·×¡\tCtrl+S", CMD_SAVE - MENUITEM "ºÑ¹·×¡à»ç¹...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "¾ÔÁ¾ì", CMD_PRINT - MENUITEM "»ÃѺáµè§Ë¹éÒ...", CMD_PAGE_SETUP - MENUITEM "»ÃѺáµè§à¤Ã×èͧ¾ÔÁ¾ì...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "ÍÍ¡", CMD_EXIT - END - POPUP "á¡éä¢" - BEGIN - MENUITEM "àÃÕ¡¤×¹\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "µÑ´\tCtrl+X", CMD_CUT - MENUITEM "µÑ´ÅÍ¡\tCtrl+C", CMD_COPY - MENUITEM "ÇÒ§\tCtrl+V", CMD_PASTE - MENUITEM "ź\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "¤é¹ËÒ\tCtrl+F", CMD_SEARCH - MENUITEM "¤é¹ËÒµèÍä»\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "àÅ×Í¡·Ñé§ËÁ´\tCtrl+A", CMD_SELECT_ALL - MENUITEM "Çѹ·Õè/\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "ËèͺÃ÷ѴÂÒÇ", CMD_WRAP - MENUITEM "ÃٻẺ´ÑÇÍÑ¡ÉÃ...", CMD_FONT - END - POPUP "ªèÇÂàËÅÕÍ" - BEGIN - MENUITEM "à¹×éÍËÒ", CMD_HELP_CONTENTS - MENUITEM "¤é¹ËÒ...", CMD_HELP_SEARCH - MENUITEM "à¡ÕèÂǡѺªèÇÂàËÅÕÍ", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "ÃÒÂÅÐàÍÕ´...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "»ÃѺáµè§Ë¹éÒ" -{ -LTEXT "ËÑÇ:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Footer:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "¢Íº¡ÃдÒÉ:", 0x144, 10, 43,160, 45 -LTEXT "£éÒÂ:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "º¹:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "¢ÇÒ:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "ÅèÒ§:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "µ¡Å§", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "¡àÅÔ¡", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "ªèÇÂàËÅÕÍ", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "˹éÒ &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 ÁÁ." /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 ÁÁ." /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 ÁÁ." /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 ÁÁ." /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "¤ÇÒÁ»Ô´" -STRING_WARNING, "¤íÒµ×͹" -STRING_INFO, "ÃÒÂÅÐàÍÕ´" - -STRING_UNTITLED, "äÁè¡íÒ˹´ªÖèÍ" - -STRING_ALL_FILES, "·Ø¡á¿éÁ (*.*)" -STRING_TEXT_FILES_TXT, "á¿éÁµíÒÃÒ (*.txt)" - -STRING_TOOLARGE, "á¿éÁ '%s' ãË­èà¡Ô¹ä»" -STRING_NOTEXT, "¤Ø³äÁèã´à¢Õ¹ÍÐäÃ\n¡ÃسÒÅͧãËÁè" -STRING_DOESNOTEXIST, "äÁ辺á¿éÁ '%s' ·Õèµéͧ¡ÒÃà»Ô´\n¤Ø³µéͧ¡ÒÃÊÃéÒ§ãËÁèäÁè ?" -STRING_NOTSAVED, "ÁÕ¡ÒÃà»ÅÕè¹á»Å§¡ÑºàÍ¡ÊÒÃ\n\n'%s'\n\n¤Ø³µéͧ¡Òúѹ·Ö¡ÁѹËÃ×ÍäÁè ?" -STRING_NOTFOUND, "äÁ辺¢éͤÇÒÁ '%s' ·Õèµéͧ¡Òäé¹ËÒ" -STRING_OUT_OF_MEMORY, "¤ÇÒÁ¨íÒËÁ´\n¡ÃسÒÅͧãËÁè" - -} +/* + * Notepad (Thai Resources) + * + * Copyright 2003 Jon Griffiths + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_THAI, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "á¿éÁ" + BEGIN + MENUITEM "ÊÃéÒ§ãËÁè...", CMD_NEW + MENUITEM "à»Ô´...\tCtrl+O", CMD_OPEN + MENUITEM "ºÑ¹·×¡\tCtrl+S", CMD_SAVE + MENUITEM "ºÑ¹·×¡à»ç¹...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "¾ÔÁ¾ì", CMD_PRINT + MENUITEM "»ÃѺáµè§Ë¹éÒ...", CMD_PAGE_SETUP + MENUITEM "»ÃѺáµè§à¤Ã×èͧ¾ÔÁ¾ì...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "ÍÍ¡", CMD_EXIT + END + POPUP "á¡éä¢" + BEGIN + MENUITEM "àÃÕ¡¤×¹\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "µÑ´\tCtrl+X", CMD_CUT + MENUITEM "µÑ´ÅÍ¡\tCtrl+C", CMD_COPY + MENUITEM "ÇÒ§\tCtrl+V", CMD_PASTE + MENUITEM "ź\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "¤é¹ËÒ\tCtrl+F", CMD_SEARCH + MENUITEM "¤é¹ËÒµèÍä»\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "àÅ×Í¡·Ñé§ËÁ´\tCtrl+A", CMD_SELECT_ALL + MENUITEM "Çѹ·Õè/\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "ËèͺÃ÷ѴÂÒÇ", CMD_WRAP + MENUITEM "ÃٻẺ´ÑÇÍÑ¡ÉÃ...", CMD_FONT + END + POPUP "ªèÇÂàËÅÕÍ" + BEGIN + MENUITEM "à¹×éÍËÒ", CMD_HELP_CONTENTS + MENUITEM "¤é¹ËÒ...", CMD_HELP_SEARCH + MENUITEM "à¡ÕèÂǡѺªèÇÂàËÅÕÍ", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "ÃÒÂÅÐàÍÕ´...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "»ÃѺáµè§Ë¹éÒ" +{ +LTEXT "ËÑÇ:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Footer:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "¢Íº¡ÃдÒÉ:", 0x144, 10, 43,160, 45 +LTEXT "£éÒÂ:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "º¹:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "¢ÇÒ:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "ÅèÒ§:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "µ¡Å§", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "¡àÅÔ¡", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "ªèÇÂàËÅÕÍ", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "˹éÒ &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 ÁÁ." /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 ÁÁ." /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 ÁÁ." /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 ÁÁ." /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "¤ÇÒÁ»Ô´" +STRING_WARNING, "¤íÒµ×͹" +STRING_INFO, "ÃÒÂÅÐàÍÕ´" + +STRING_UNTITLED, "äÁè¡íÒ˹´ªÖèÍ" + +STRING_ALL_FILES, "·Ø¡á¿éÁ (*.*)" +STRING_TEXT_FILES_TXT, "á¿éÁµíÒÃÒ (*.txt)" + +STRING_TOOLARGE, "á¿éÁ '%s' ãË­èà¡Ô¹ä»" +STRING_NOTEXT, "¤Ø³äÁèã´à¢Õ¹ÍÐäÃ\n¡ÃسÒÅͧãËÁè" +STRING_DOESNOTEXIST, "äÁ辺á¿éÁ '%s' ·Õèµéͧ¡ÒÃà»Ô´\n¤Ø³µéͧ¡ÒÃÊÃéÒ§ãËÁèäÁè ?" +STRING_NOTSAVED, "ÁÕ¡ÒÃà»ÅÕè¹á»Å§¡ÑºàÍ¡ÊÒÃ\n\n'%s'\n\n¤Ø³µéͧ¡Òúѹ·Ö¡ÁѹËÃ×ÍäÁè ?" +STRING_NOTFOUND, "äÁ辺¢éͤÇÒÁ '%s' ·Õèµéͧ¡Òäé¹ËÒ" +STRING_OUT_OF_MEMORY, "¤ÇÒÁ¨íÒËÁ´\n¡ÃسÒÅͧãËÁè" + +} diff --git a/reactos/base/applications/notepad/res/Uk.rc b/reactos/base/applications/notepad/lang/Uk.rc similarity index 96% rename from reactos/base/applications/notepad/res/Uk.rc rename to reactos/base/applications/notepad/lang/Uk.rc index 939e2760665..f65cb26408d 100644 --- a/reactos/base/applications/notepad/res/Uk.rc +++ b/reactos/base/applications/notepad/lang/Uk.rc @@ -1,180 +1,196 @@ -/* - * Notepad (Ukrainian resources) - * - * Copyright 2005, 2006 Artem Reznikov - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT - -MAIN_MENU MENU -{ - POPUP "&Ôàéë" { - MENUITEM "&Ñòâîðèòè", CMD_NEW - MENUITEM "&³äêðèòè...\tCtrl+O", CMD_OPEN - MENUITEM "&Ç&áåðåãòè\tCtrl+S", CMD_SAVE - MENUITEM "Çáåðåãòè &ÿê...", CMD_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Ïàðà&ìåòðè ñòîð³íêè...", CMD_PAGE_SETUP - MENUITEM "Ä&ðóê", CMD_PRINT - MENUITEM "Íàñòðîéêà &ïðèíòåðà...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "Â&èõ³ä", CMD_EXIT - } -POPUP "&Ïðàâêà" { - MENUITEM "&Ñêàñóâàòè\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "&Âèð³çàòè\tCtrl+X", CMD_CUT - MENUITEM "&Êîï³þâàòè\tCtrl+C", CMD_COPY - MENUITEM "Âñò&àâèòè\tCtrl+V", CMD_PASTE - MENUITEM "Â&èäàëèòè\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Ç&íàéòè...\tCtrl+F", CMD_SEARCH - MENUITEM "Çíà&éòè äàë³\tF3", CMD_SEARCH_NEXT - MENUITEM "&Çàì³íèòè\tCtrl+H", CMD_REPLACE - MENUITEM "Ïåðåé&òè...\tCtrl+G", CMD_GOTO - MENUITEM SEPARATOR - MENUITEM "Âèä³&ëèòè âñå\tCtrl+A", CMD_SELECT_ALL - MENUITEM "&Äàòà é ÷àñ\tF5", CMD_TIME_DATE - } -POPUP "Ôîð&ìàò" { - MENUITEM "&Ïåðåíîñ ïî ñëîâàõ", CMD_WRAP - MENUITEM "&Øðèôò...", CMD_FONT -} -POPUP "&Âèãëÿä" { - MENUITEM "&Ðÿäîê ñòàíó", CMD_STATUSBAR -} -POPUP "&Äîâ³äêà" { - MENUITEM "&Çì³ñò", CMD_HELP_CONTENTS - MENUITEM "&Ïîøóê...", CMD_HELP_SEARCH - MENUITEM "&Help on help", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&Ïðî" CMD_ABOUT - MENUITEM "&Ïðî ïðîãðàìó", CMD_ABOUT_WINE - } -} - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Ïàðàìåòðè ñòîð³íêè" -{ -LTEXT "Â&åðõí³é êîëîíòèòóë:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "Í&èæí³é êîëîíòèòóë:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "Ïîëÿ", 0x144, 10, 43,160, 45 -LTEXT "&˳âå:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Âåðõíº:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Ïðàâå:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Íèæíº:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Ñêàñóâàòè", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Äîâ³äêà", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -/* Dialog `Encoding' */ -DIALOG_ENCODING DIALOG 0, 0, 256, 44 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | - WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Êîäóâàííÿ" -{ -COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP -LTEXT "Êîäóâàííÿ:",0x155,5,2,41,12 -COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -LTEXT "Ðîçðèâè ðÿäê³â:",0x156,5,20,41,12 -} - -/* Dialog 'Go To' */ -DIALOG_GOTO DIALOG 0,0,165,50 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Ïåðåõ³ä äî ðÿäêà" -{ -EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "Íîìåð ðÿäêà:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER -DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP -PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "Ïðî Áëîêíîò ReactOS" -FONT 8, "Tahoma" -BEGIN - CONTROL "Áëîêíîò ReactOS v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Çàêðèòè",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Ñòîð³íêà &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 ìì" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 ìì" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 ìì" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 ìì" /* FIXME */ - -STRING_NOTEPAD, "Áëîêíîò" -STRING_ERROR, "ÏÎÌÈËÊÀ" -STRING_WARNING, "ÓÂÀÃÀ" -STRING_INFO, "²íôîðìàö³ÿ" - -STRING_UNTITLED, "(áåç çàãîëîâêà)" - -STRING_ALL_FILES, "Óñ³ ôàéëè (*.*)" -STRING_TEXT_FILES_TXT, "Òåêñòîâ³ ôàéëè (*.txt)" - -STRING_TOOLARGE, "Ôàéë '%s' çàâåëèêèé äëÿ áëîêíîòà.\n \ -Áóäü ëàñêà âèêîðèñòàéòå ³íøèé ðåäàêòîð." -STRING_NOTEXT, "Âè íå ââåëè í³ÿêîãî òåêñòó. \ -\nÁóäü ëàñêà ââåä³òü ùî-íåáóäü ³ ñïðîáóéòå ùå ðàç" -STRING_DOESNOTEXIST, "Ôàéë '%s'\níå ³ñíóº\n\n \ -Õî÷åòå ñòâîðèòè íîâèé ôàéë ?" -STRING_NOTSAVED, "Ôàéë '%s'\náóâ çì³íåíèé\n\n \ -Õî÷åòå çáåðåãòè çì³íè ?" -STRING_NOTFOUND, "'%s' can not be found." -STRING_OUT_OF_MEMORY, "Íåäîñòàòíüî ïàì'ÿò³ äëÿ âèêîíàííÿ îïåðàö³¿.\ -\nÇàêðèéòå îäèí àáî äåê³ëüêà äîäàòê³â ³ ïîâòîð³òü ñïðîáó." -STRING_CANNOTFIND "Íå ìîæó çíàéòè '%s'" -STRING_ANSI, "ANSI" -STRING_UNICODE, "Þí³êîä" -STRING_UNICODE_BE, "Þí³êîä (big endian)" -STRING_UTF8, "UTF-8" -STRING_CRLF, "Windows" -STRING_LF, "Unix" -STRING_CR, "Mac" -} +/* + * Notepad (Ukrainian resources) + * + * Copyright 2005, 2006 Artem Reznikov + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +{ + POPUP "&Ôàéë" { + MENUITEM "&Ñòâîðèòè", CMD_NEW + MENUITEM "&³äêðèòè...\tCtrl+O", CMD_OPEN + MENUITEM "&Ç&áåðåãòè\tCtrl+S", CMD_SAVE + MENUITEM "Çáåðåãòè &ÿê...", CMD_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Ïàðà&ìåòðè ñòîð³íêè...", CMD_PAGE_SETUP + MENUITEM "Ä&ðóê", CMD_PRINT + MENUITEM "Íàñòðîéêà &ïðèíòåðà...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "Â&èõ³ä", CMD_EXIT + } +POPUP "&Ïðàâêà" { + MENUITEM "&Ñêàñóâàòè\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "&Âèð³çàòè\tCtrl+X", CMD_CUT + MENUITEM "&Êîï³þâàòè\tCtrl+C", CMD_COPY + MENUITEM "Âñò&àâèòè\tCtrl+V", CMD_PASTE + MENUITEM "Â&èäàëèòè\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "Ç&íàéòè...\tCtrl+F", CMD_SEARCH + MENUITEM "Çíà&éòè äàë³\tF3", CMD_SEARCH_NEXT + MENUITEM "&Çàì³íèòè\tCtrl+H", CMD_REPLACE + MENUITEM "Ïåðåé&òè...\tCtrl+G", CMD_GOTO + MENUITEM SEPARATOR + MENUITEM "Âèä³&ëèòè âñå\tCtrl+A", CMD_SELECT_ALL + MENUITEM "&Äàòà é ÷àñ\tF5", CMD_TIME_DATE + } +POPUP "Ôîð&ìàò" { + MENUITEM "&Ïåðåíîñ ïî ñëîâàõ", CMD_WRAP + MENUITEM "&Øðèôò...", CMD_FONT +} +POPUP "&Âèãëÿä" { + MENUITEM "&Ðÿäîê ñòàíó", CMD_STATUSBAR +} +POPUP "&Äîâ³äêà" { + MENUITEM "&Çì³ñò", CMD_HELP_CONTENTS + MENUITEM "&Ïîøóê...", CMD_HELP_SEARCH + MENUITEM "&Help on help", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&Ïðî" CMD_ABOUT + MENUITEM "&Ïðî ïðîãðàìó", CMD_ABOUT_WINE + } +} + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Ïàðàìåòðè ñòîð³íêè" +{ +LTEXT "Â&åðõí³é êîëîíòèòóë:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "Í&èæí³é êîëîíòèòóë:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "Ïîëÿ", 0x144, 10, 43,160, 45 +LTEXT "&˳âå:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Âåðõíº:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Ïðàâå:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Íèæíº:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Ñêàñóâàòè", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Äîâ³äêà", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +/* Dialog `Encoding' */ +DIALOG_ENCODING DIALOG 0, 0, 256, 44 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | + WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Êîäóâàííÿ" +{ +COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP +LTEXT "Êîäóâàííÿ:",0x155,5,2,41,12 +COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +LTEXT "Ðîçðèâè ðÿäê³â:",0x156,5,20,41,12 +} + +/* Dialog 'Go To' */ +DIALOG_GOTO DIALOG 0,0,165,50 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Ïåðåõ³ä äî ðÿäêà" +{ +EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Íîìåð ðÿäêà:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER +DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP +PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "Ïðî Áëîêíîò ReactOS" +FONT 8, "Tahoma" +BEGIN + CONTROL "Áëîêíîò ReactOS v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Çàêðèòè",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Ñòîð³íêà &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 ìì" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 ìì" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 ìì" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 ìì" /* FIXME */ + +STRING_NOTEPAD, "Áëîêíîò" +STRING_ERROR, "ÏÎÌÈËÊÀ" +STRING_WARNING, "ÓÂÀÃÀ" +STRING_INFO, "²íôîðìàö³ÿ" + +STRING_UNTITLED, "(áåç çàãîëîâêà)" + +STRING_ALL_FILES, "Óñ³ ôàéëè (*.*)" +STRING_TEXT_FILES_TXT, "Òåêñòîâ³ ôàéëè (*.txt)" + +STRING_TOOLARGE, "Ôàéë '%s' çàâåëèêèé äëÿ áëîêíîòà.\n \ +Áóäü ëàñêà âèêîðèñòàéòå ³íøèé ðåäàêòîð." +STRING_NOTEXT, "Âè íå ââåëè í³ÿêîãî òåêñòó. \ +\nÁóäü ëàñêà ââåä³òü ùî-íåáóäü ³ ñïðîáóéòå ùå ðàç" +STRING_DOESNOTEXIST, "Ôàéë '%s'\níå ³ñíóº\n\n \ +Õî÷åòå ñòâîðèòè íîâèé ôàéë ?" +STRING_NOTSAVED, "Ôàéë '%s'\náóâ çì³íåíèé\n\n \ +Õî÷åòå çáåðåãòè çì³íè ?" +STRING_NOTFOUND, "'%s' can not be found." +STRING_OUT_OF_MEMORY, "Íåäîñòàòíüî ïàì'ÿò³ äëÿ âèêîíàííÿ îïåðàö³¿.\ +\nÇàêðèéòå îäèí àáî äåê³ëüêà äîäàòê³â ³ ïîâòîð³òü ñïðîáó." +STRING_CANNOTFIND "Íå ìîæó çíàéòè '%s'" +STRING_ANSI, "ANSI" +STRING_UNICODE, "Þí³êîä" +STRING_UNICODE_BE, "Þí³êîä (big endian)" +STRING_UTF8, "UTF-8" +STRING_CRLF, "Windows" +STRING_LF, "Unix" +STRING_CR, "Mac" +} diff --git a/reactos/base/applications/notepad/res/Wa.rc b/reactos/base/applications/notepad/lang/Wa.rc similarity index 95% rename from reactos/base/applications/notepad/res/Wa.rc rename to reactos/base/applications/notepad/lang/Wa.rc index 987aa623276..11c1f0c7bae 100644 --- a/reactos/base/applications/notepad/res/Wa.rc +++ b/reactos/base/applications/notepad/lang/Wa.rc @@ -1,146 +1,161 @@ -/* - * Notepad (Walon resources) - * - * Copyright 1997,98 Marcel Baur - * Proofread 1998 by David Lee Lambert - * Copyright 2002 Sylvain Petreolle - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifdef LANG_WALON - -LANGUAGE LANG_WALON, SUBLANG_NEUTRAL - -MAIN_MENU MENU -{ - POPUP "&Fitchî" { - MENUITEM "&Novea...", CMD_NEW - MENUITEM "&Drovî", CMD_OPEN - MENUITEM "&Schaper", CMD_SAVE - MENUITEM "Schaper èt r&lomer...", CMD_SAVE_AS - MENUITEM "&Rexhe", CMD_PRINT - MENUITEM "Arrandjmint del &Pådje...", CMD_PAGE_SETUP - MENUITEM "&Apontiaedje del scrirece...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "Moussî &Foû", CMD_EXIT - } -POPUP "&Candjî" { - MENUITEM "&Disfé\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "Cô&per\tCtrl+X", CMD_CUT - MENUITEM "&Copyî\tCtrl+C", CMD_COPY - MENUITEM "C&laper\tCtrl+V", CMD_PASTE - MENUITEM "&Rafacer\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "Cwerî...", CMD_SEARCH - MENUITEM "&Shûvant\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "&Tchwezi totafwait", CMD_SELECT_ALL - MENUITEM "&Eure/Date\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "Côper les ro&yes", CMD_WRAP - } -POPUP "&Aide" { - MENUITEM "Å&dvins", CMD_HELP_CONTENTS - MENUITEM "C&werî...", CMD_HELP_SEARCH - MENUITEM "&Aide so l' Aide", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "&Informåcion...", CMD_ABOUT_WINE - } -} - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg" -CAPTION "Arindjmint del Pådje" -{ -LTEXT "&Tite:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "&Pînote:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "&Mardjes:", 0x144, 10, 43,160, 45 -LTEXT "&Hintche:", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Copete:", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Droete:", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "&Bas:", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "I Va", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "Rinoncî", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "&Aide", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Pådje &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "Notepad" -STRING_ERROR, "AROKE" -STRING_WARNING, "ADVERTIXHMINT" -STRING_INFO, "Informåcion" - -STRING_UNTITLED, "(sin tite)" - -STRING_ALL_FILES, "Tos les fitchîs (*.*)" -STRING_TEXT_FILES_TXT, "Fitchîs tekse (*.txt)" - -STRING_TOOLARGE, "Li fitchî '%s' est trop gros pol notepad.\n \ -Eployoz on ôte aspougneu di tekse." -STRING_NOTEXT, "Vos n' avoz rén sicrît. \ -\nTapez ene sacwe èt rasayez" -STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ -Do you want to create a new file ?" -STRING_NOTSAVED, "Li fitchî '%s'\na candjî\n\n \ -El voloz schaper ?" -STRING_NOTFOUND, "'%s' pout nén esse trové." -STRING_OUT_OF_MEMORY, "Li memwere est plinne. \n\ -Cloyoz on programe ou pus po monter li memwere libe." - -} - -#endif /* LANG_WALON */ +/* + * Notepad (Walon resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Copyright 2002 Sylvain Petreolle + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +LANGUAGE LANG_WALON, SUBLANG_NEUTRAL + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +{ + POPUP "&Fitchî" { + MENUITEM "&Novea...", CMD_NEW + MENUITEM "&Drovî", CMD_OPEN + MENUITEM "&Schaper", CMD_SAVE + MENUITEM "Schaper èt r&lomer...", CMD_SAVE_AS + MENUITEM "&Rexhe", CMD_PRINT + MENUITEM "Arrandjmint del &Pådje...", CMD_PAGE_SETUP + MENUITEM "&Apontiaedje del scrirece...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "Moussî &Foû", CMD_EXIT + } +POPUP "&Candjî" { + MENUITEM "&Disfé\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "Cô&per\tCtrl+X", CMD_CUT + MENUITEM "&Copyî\tCtrl+C", CMD_COPY + MENUITEM "C&laper\tCtrl+V", CMD_PASTE + MENUITEM "&Rafacer\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "Cwerî...", CMD_SEARCH + MENUITEM "&Shûvant\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "&Tchwezi totafwait", CMD_SELECT_ALL + MENUITEM "&Eure/Date\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "Côper les ro&yes", CMD_WRAP + } +POPUP "&Aide" { + MENUITEM "Å&dvins", CMD_HELP_CONTENTS + MENUITEM "C&werî...", CMD_HELP_SEARCH + MENUITEM "&Aide so l' Aide", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "&Informåcion...", CMD_ABOUT_WINE + } +} + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "MS Shell Dlg" +CAPTION "Arindjmint del Pådje" +{ +LTEXT "&Tite:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "&Pînote:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "&Mardjes:", 0x144, 10, 43,160, 45 +LTEXT "&Hintche:", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Copete:", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Droete:", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "&Bas:", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "I Va", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "Rinoncî", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "&Aide", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Pådje &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "Notepad" +STRING_ERROR, "AROKE" +STRING_WARNING, "ADVERTIXHMINT" +STRING_INFO, "Informåcion" + +STRING_UNTITLED, "(sin tite)" + +STRING_ALL_FILES, "Tos les fitchîs (*.*)" +STRING_TEXT_FILES_TXT, "Fitchîs tekse (*.txt)" + +STRING_TOOLARGE, "Li fitchî '%s' est trop gros pol notepad.\n \ +Eployoz on ôte aspougneu di tekse." +STRING_NOTEXT, "Vos n' avoz rén sicrît. \ +\nTapez ene sacwe èt rasayez" +STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \ +Do you want to create a new file ?" +STRING_NOTSAVED, "Li fitchî '%s'\na candjî\n\n \ +El voloz schaper ?" +STRING_NOTFOUND, "'%s' pout nén esse trové." +STRING_OUT_OF_MEMORY, "Li memwere est plinne. \n\ +Cloyoz on programe ou pus po monter li memwere libe." + +} + + diff --git a/reactos/base/applications/notepad/res/Zh.rc b/reactos/base/applications/notepad/lang/Zh.rc similarity index 95% rename from reactos/base/applications/notepad/res/Zh.rc rename to reactos/base/applications/notepad/lang/Zh.rc index cea358ba136..b6671a3b4ce 100644 --- a/reactos/base/applications/notepad/res/Zh.rc +++ b/reactos/base/applications/notepad/lang/Zh.rc @@ -1,144 +1,160 @@ -/* - * Notepad (Simplified Chinese resources) - * - * Copyright 2002 liuspider - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED - -MAIN_MENU MENU -BEGIN - POPUP "Îļþ£¨&F£©" - BEGIN - MENUITEM "н¨£¨&N£©...", CMD_NEW - MENUITEM "´ò¿ª£¨&O£©", CMD_OPEN - MENUITEM "±£´æ£¨&S£©", CMD_SAVE - MENUITEM "Áí´æÎª(&A)...", CMD_SAVE_AS - MENUITEM "´òÓ¡£¨&P£©", CMD_PRINT - MENUITEM "Ò³ÃæÉèÖã¨&T£©...", CMD_PAGE_SETUP - MENUITEM "´òÓ¡ÉèÖã¨&R£©...", CMD_PRINTER_SETUP - MENUITEM SEPARATOR - MENUITEM "Í˳ö£¨&E£©", CMD_EXIT - END - POPUP "±à¼­£¨&E£©" - BEGIN - MENUITEM "³·Ïû£¨&U£©\tCtrl+Z", CMD_UNDO - MENUITEM SEPARATOR - MENUITEM "¼ôÇУ¨&T£©\tCtrl+X", CMD_CUT - MENUITEM "¸´ÖÆ£¨&C£©\tCtrl+C", CMD_COPY - MENUITEM "Õ³Ìù£¨&P£©\tCtrl+V", CMD_PASTE - MENUITEM "ɾ³ý£¨&D£©\tDel", CMD_DELETE - MENUITEM SEPARATOR - MENUITEM "ËÑË÷£¨&S£©", CMD_SEARCH - MENUITEM "ËÑË÷ÏÂÒ»¸ö£¨&S£©\tF3", CMD_SEARCH_NEXT - MENUITEM SEPARATOR - MENUITEM "ȫѡ£¨&A£©", CMD_SELECT_ALL - MENUITEM "²åÈëÈÕÆÚ¡¢Ê±¼ä£¨&T£©\tF5", CMD_TIME_DATE - MENUITEM SEPARATOR - MENUITEM "×Ô¶¯»»ÐУ¨&W£©", CMD_WRAP - END - POPUP "°ïÖú£¨&H£©" - BEGIN - MENUITEM "ÄÚÈÝ£¨&C£©", CMD_HELP_CONTENTS - MENUITEM "ËÑË÷£¨&S£©...", CMD_HELP_SEARCH - MENUITEM "ÈçºÎʹÓðïÖú£¨&H£©", CMD_HELP_ON_HELP - MENUITEM SEPARATOR - MENUITEM "&About" CMD_ABOUT - MENUITEM "×ÊÁÏÐÅÏ¢£¨&O£©...", CMD_ABOUT_WINE - END -END - -/* Dialog `Page setup' */ - -DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -FONT 10, "MS Shell Dlg" -CAPTION "Ò³ÃæÉèÖÃ" -{ -LTEXT "ҳü£¨&H£©:", 0x140, 10, 07, 40, 15 -EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP -LTEXT "½Å×¢£¨&F£©:", 0x142, 10, 24, 40, 15 -EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP - -GROUPBOX "±ßÔµ¿Õ°×£¨&M£©£º", 0x144, 10, 43,160, 45 -LTEXT "×ó£¨&L£©£º", 0x145, 20, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "ÉÏ£¨&T£©£º", 0x148, 20, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "ÓÒ£¨&R£©£º", 0x14B, 100, 55, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP -LTEXT "Ï£¨&B£©£º", 0x14E,100, 73, 30, 10, WS_CHILD -EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP - -DEFPUSHBUTTON "È·¶¨", 0x151, 180, 3, 40, 15, WS_TABSTOP -PUSHBUTTON "È¡Ïû", 0x152, 180, 21, 40, 15, WS_TABSTOP -PUSHBUTTON "°ïÖú£¨&£©", 0x153, 180, 39, 40, 15, WS_TABSTOP -} - -IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "About ReactOS Notepad" -FONT 8, "MS Shell Dlg" -BEGIN - CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", - -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 - CONTROL " ", - -1,"Static",0x50000000,8,48,272,11 - DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP - ICON IDI_NPICON,-1,12,9,20,30 - EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | - ES_READONLY | WS_VSCROLL -END - -STRINGTABLE DISCARDABLE -BEGIN - STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." -END - -STRINGTABLE DISCARDABLE -{ -STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ -STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ -STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ -STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ -STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ - -STRING_NOTEPAD, "¼Çʱ¾" -STRING_ERROR, "´íÎó" -STRING_WARNING, "¾¯¸æ" -STRING_INFO, "ÐÅÏ¢" - -STRING_UNTITLED, "£¨Î´ÃüÃû£©" - -STRING_ALL_FILES, "ËùÓÐÎļþ (*.*)" -STRING_TEXT_FILES_TXT, "Îı¾Îļþ (*.txt)" - -STRING_TOOLARGE, "¼Çʱ¾²»ÄÜ´ò¿ª '%s' Õâô´óµÄÎļþ¡£\n \ -ÇëʹÓñðµÄ±à¼­Æ÷¡£" -STRING_NOTEXT, "ÄúûÓÐÊäÈëÈκÎÎı¾¡£ \ -\nÇëÊäÈëһЩÔÙÊÔ" -STRING_DOESNOTEXIST, "Îļþ '%s'\n²»´æÔÚ\n\n \ -ÄúÏëн¨Ò»¸öÎļþÂð£¿" -STRING_NOTSAVED, "Îļþ '%s'\nÕýÎÄÒѸü¸Ä\n\n \ -ÊÇ·ñ±£´æ¸ü¸Ä£¿" -STRING_NOTFOUND, "ÕÒ²»µ½Îļþ '%s'" -STRING_OUT_OF_MEMORY, "ûÓÐ×ã¹»µÄÄÚ´æ¿ÉÒÔÓÃÀ´Íê³É´ËÏîÈÎÎñ¡£ \ -\nÇë¹Ø±ÕһЩ³ÌÐòÊ©·ÅÄÚ´æºóÔÙÊÔ¡£" - -} +/* + * Notepad (Simplified Chinese resources) + * + * Copyright 2002 liuspider + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +ID_ACCEL ACCELERATORS +{ + "^A", CMD_SELECT_ALL + "^C", CMD_COPY + "^F", CMD_SEARCH + "^G", CMD_GOTO + "H", CMD_REPLACE, VIRTKEY, CONTROL + "^O", CMD_OPEN + "^S", CMD_SAVE + "^V", CMD_PASTE + "^X", CMD_CUT + "^Z", CMD_UNDO + VK_F3, CMD_SEARCH_NEXT, VIRTKEY + VK_F5, CMD_TIME_DATE, VIRTKEY +} + +MAIN_MENU MENU +BEGIN + POPUP "Îļþ£¨&F£©" + BEGIN + MENUITEM "н¨£¨&N£©...", CMD_NEW + MENUITEM "´ò¿ª£¨&O£©", CMD_OPEN + MENUITEM "±£´æ£¨&S£©", CMD_SAVE + MENUITEM "Áí´æÎª(&A)...", CMD_SAVE_AS + MENUITEM "´òÓ¡£¨&P£©", CMD_PRINT + MENUITEM "Ò³ÃæÉèÖã¨&T£©...", CMD_PAGE_SETUP + MENUITEM "´òÓ¡ÉèÖã¨&R£©...", CMD_PRINTER_SETUP + MENUITEM SEPARATOR + MENUITEM "Í˳ö£¨&E£©", CMD_EXIT + END + POPUP "±à¼­£¨&E£©" + BEGIN + MENUITEM "³·Ïû£¨&U£©\tCtrl+Z", CMD_UNDO + MENUITEM SEPARATOR + MENUITEM "¼ôÇУ¨&T£©\tCtrl+X", CMD_CUT + MENUITEM "¸´ÖÆ£¨&C£©\tCtrl+C", CMD_COPY + MENUITEM "Õ³Ìù£¨&P£©\tCtrl+V", CMD_PASTE + MENUITEM "ɾ³ý£¨&D£©\tDel", CMD_DELETE + MENUITEM SEPARATOR + MENUITEM "ËÑË÷£¨&S£©", CMD_SEARCH + MENUITEM "ËÑË÷ÏÂÒ»¸ö£¨&S£©\tF3", CMD_SEARCH_NEXT + MENUITEM SEPARATOR + MENUITEM "ȫѡ£¨&A£©", CMD_SELECT_ALL + MENUITEM "²åÈëÈÕÆÚ¡¢Ê±¼ä£¨&T£©\tF5", CMD_TIME_DATE + MENUITEM SEPARATOR + MENUITEM "×Ô¶¯»»ÐУ¨&W£©", CMD_WRAP + END + POPUP "°ïÖú£¨&H£©" + BEGIN + MENUITEM "ÄÚÈÝ£¨&C£©", CMD_HELP_CONTENTS + MENUITEM "ËÑË÷£¨&S£©...", CMD_HELP_SEARCH + MENUITEM "ÈçºÎʹÓðïÖú£¨&H£©", CMD_HELP_ON_HELP + MENUITEM SEPARATOR + MENUITEM "&About" CMD_ABOUT + MENUITEM "×ÊÁÏÐÅÏ¢£¨&O£©...", CMD_ABOUT_WINE + END +END + +/* Dialog `Page setup' */ + +DIALOG_PAGESETUP DIALOG 0, 0, 225, 95 +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 10, "MS Shell Dlg" +CAPTION "Ò³ÃæÉèÖÃ" +{ +LTEXT "ҳü£¨&H£©:", 0x140, 10, 07, 40, 15 +EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT "½Å×¢£¨&F£©:", 0x142, 10, 24, 40, 15 +EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX "±ßÔµ¿Õ°×£¨&M£©£º", 0x144, 10, 43,160, 45 +LTEXT "×ó£¨&L£©£º", 0x145, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "ÉÏ£¨&T£©£º", 0x148, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "ÓÒ£¨&R£©£º", 0x14B, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT "Ï£¨&B£©£º", 0x14E,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + +DEFPUSHBUTTON "È·¶¨", 0x151, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON "È¡Ïû", 0x152, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON "°ïÖú£¨&£©", 0x153, 180, 39, 40, 15, WS_TABSTOP +} + +IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About ReactOS Notepad" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ", + -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39 + CONTROL " ", + -1,"Static",0x50000000,8,48,272,11 + DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP + ICON IDI_NPICON,-1,12,9,20,30 + EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +STRINGTABLE DISCARDABLE +BEGIN + STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." +END + +STRINGTABLE DISCARDABLE +{ +STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */ +STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */ +STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */ +STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */ +STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */ + +STRING_NOTEPAD, "¼Çʱ¾" +STRING_ERROR, "´íÎó" +STRING_WARNING, "¾¯¸æ" +STRING_INFO, "ÐÅÏ¢" + +STRING_UNTITLED, "£¨Î´ÃüÃû£©" + +STRING_ALL_FILES, "ËùÓÐÎļþ (*.*)" +STRING_TEXT_FILES_TXT, "Îı¾Îļþ (*.txt)" + +STRING_TOOLARGE, "¼Çʱ¾²»ÄÜ´ò¿ª '%s' Õâô´óµÄÎļþ¡£\n \ +ÇëʹÓñðµÄ±à¼­Æ÷¡£" +STRING_NOTEXT, "ÄúûÓÐÊäÈëÈκÎÎı¾¡£ \ +\nÇëÊäÈëһЩÔÙÊÔ" +STRING_DOESNOTEXIST, "Îļþ '%s'\n²»´æÔÚ\n\n \ +ÄúÏëн¨Ò»¸öÎļþÂð£¿" +STRING_NOTSAVED, "Îļþ '%s'\nÕýÎÄÒѸü¸Ä\n\n \ +ÊÇ·ñ±£´æ¸ü¸Ä£¿" +STRING_NOTFOUND, "ÕÒ²»µ½Îļþ '%s'" +STRING_OUT_OF_MEMORY, "ûÓÐ×ã¹»µÄÄÚ´æ¿ÉÒÔÓÃÀ´Íê³É´ËÏîÈÎÎñ¡£ \ +\nÇë¹Ø±ÕһЩ³ÌÐòÊ©·ÅÄÚ´æºóÔÙÊÔ¡£" + +} diff --git a/reactos/base/applications/notepad/main.c b/reactos/base/applications/notepad/main.c index 73031146cac..0d10a796673 100644 --- a/reactos/base/applications/notepad/main.c +++ b/reactos/base/applications/notepad/main.c @@ -83,7 +83,7 @@ static int NOTEPAD_MenuCommand(WPARAM wParam) case CMD_ABOUT: DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUTBOX), Globals.hMainWnd, - AboutDialogProc); + (DLGPROC) AboutDialogProc); break; case CMD_ABOUT_WINE: DIALOG_HelpAboutWine(); break; @@ -101,7 +101,7 @@ static int NOTEPAD_MenuCommand(WPARAM wParam) static BOOL NOTEPAD_FindTextAt(FINDREPLACE *pFindReplace, LPCTSTR pszText, int iTextLength, DWORD dwPosition) { BOOL bMatches; - int iTargetLength; + size_t iTargetLength; iTargetLength = _tcslen(pFindReplace->lpstrFindWhat); @@ -115,7 +115,7 @@ static BOOL NOTEPAD_FindTextAt(FINDREPLACE *pFindReplace, LPCTSTR pszText, int i { if ((dwPosition > 0) && !_istspace(pszText[dwPosition-1])) bMatches = FALSE; - if ((dwPosition < iTextLength - 1) && !_istspace(pszText[dwPosition+1])) + if ((dwPosition < (DWORD) iTextLength - 1) && !_istspace(pszText[dwPosition+1])) bMatches = FALSE; } @@ -130,14 +130,14 @@ static BOOL NOTEPAD_FindTextAt(FINDREPLACE *pFindReplace, LPCTSTR pszText, int i BOOL NOTEPAD_FindNext(FINDREPLACE *pFindReplace, BOOL bReplace, BOOL bShowAlert) { int iTextLength, iTargetLength; - int iAdjustment = 0; + size_t iAdjustment = 0; LPTSTR pszText = NULL; DWORD dwPosition, dwBegin, dwEnd; BOOL bMatches = FALSE; TCHAR szResource[128], szText[128]; BOOL bSuccess; - iTargetLength = _tcslen(pFindReplace->lpstrFindWhat); + iTargetLength = (int) _tcslen(pFindReplace->lpstrFindWhat); /* Retrieve the window text */ iTextLength = GetWindowTextLength(Globals.hEdit); @@ -151,7 +151,7 @@ BOOL NOTEPAD_FindNext(FINDREPLACE *pFindReplace, BOOL bReplace, BOOL bShowAlert) } SendMessage(Globals.hEdit, EM_GETSEL, (WPARAM) &dwBegin, (LPARAM) &dwEnd); - if (bReplace && ((dwEnd - dwBegin) == iTargetLength)) + if (bReplace && ((dwEnd - dwBegin) == (DWORD) iTargetLength)) { if (NOTEPAD_FindTextAt(pFindReplace, pszText, iTextLength, dwBegin)) { @@ -164,7 +164,7 @@ BOOL NOTEPAD_FindNext(FINDREPLACE *pFindReplace, BOOL bReplace, BOOL bShowAlert) { /* Find Down */ dwPosition = dwEnd; - while(dwPosition < iTextLength) + while(dwPosition < (DWORD) iTextLength) { bMatches = NOTEPAD_FindTextAt(pFindReplace, pszText, iTextLength, dwPosition); if (bMatches) @@ -189,7 +189,7 @@ BOOL NOTEPAD_FindNext(FINDREPLACE *pFindReplace, BOOL bReplace, BOOL bShowAlert) { /* Found target */ if (dwPosition > dwBegin) - dwPosition += iAdjustment; + dwPosition += (DWORD) iAdjustment; SendMessage(Globals.hEdit, EM_SETSEL, dwPosition, dwPosition + iTargetLength); SendMessage(Globals.hEdit, EM_SCROLLCARET, 0, 0); bSuccess = TRUE; @@ -263,10 +263,12 @@ static VOID NOTEPAD_InitData(VOID) /*********************************************************************** * Enable/disable items on the menu based on control state */ -static VOID NOTEPAD_InitMenuPopup(HMENU menu, int index) +static VOID NOTEPAD_InitMenuPopup(HMENU menu, LPARAM index) { int enable; + UNREFERENCED_PARAMETER(index); + CheckMenuItem(GetMenu(Globals.hMainWnd), CMD_WRAP, MF_BYCOMMAND | (Globals.bWrapLongLines ? MF_CHECKED : MF_UNCHECKED)); if ( !Globals.bWrapLongLines ) @@ -278,7 +280,7 @@ static VOID NOTEPAD_InitMenuPopup(HMENU menu, int index) SendMessage(Globals.hEdit, EM_CANUNDO, 0, 0) ? MF_ENABLED : MF_GRAYED); EnableMenuItem(menu, CMD_PASTE, IsClipboardFormatAvailable(CF_TEXT) ? MF_ENABLED : MF_GRAYED); - enable = SendMessage(Globals.hEdit, EM_GETSEL, 0, 0); + enable = (int) SendMessage(Globals.hEdit, EM_GETSEL, 0, 0); enable = (HIWORD(enable) == LOWORD(enable)) ? MF_GRAYED : MF_ENABLED; EnableMenuItem(menu, CMD_CUT, enable); EnableMenuItem(menu, CMD_COPY, enable); @@ -341,9 +343,33 @@ static LRESULT WINAPI NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, break; case WM_SIZE: - SetWindowPos(Globals.hEdit, NULL, 0, 0, LOWORD(lParam), HIWORD(lParam), - SWP_NOOWNERZORDER | SWP_NOZORDER); + { + if (Globals.bShowStatusBar) + { + RECT rcStatusBar; + HDWP hdwp; + + if (!GetWindowRect(Globals.hStatusBar, &rcStatusBar)) + break; + + hdwp = BeginDeferWindowPos(2); + if (hdwp == NULL) + break; + + hdwp = DeferWindowPos(hdwp, Globals.hEdit, NULL, 0, 0, LOWORD(lParam), HIWORD(lParam) - (rcStatusBar.bottom - rcStatusBar.top), SWP_NOZORDER | SWP_NOMOVE); + if (hdwp == NULL) + break; + + hdwp = DeferWindowPos(hdwp, Globals.hStatusBar, NULL, 0, 0, LOWORD(lParam), LOWORD(wParam), SWP_NOZORDER); + + if (hdwp != NULL) + EndDeferWindowPos(hdwp); + } + else + SetWindowPos(Globals.hEdit, NULL, 0, 0, LOWORD(lParam), HIWORD(lParam), SWP_NOZORDER | SWP_NOMOVE); + break; + } case WM_SETFOCUS: SetFocus(Globals.hEdit); @@ -508,7 +534,10 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show) static const WCHAR className[] = {'N','P','C','l','a','s','s',0}; static const WCHAR winName[] = {'N','o','t','e','p','a','d',0}; - aFINDMSGSTRING = RegisterWindowMessage(FINDMSGSTRING); + UNREFERENCED_PARAMETER(prev); + UNREFERENCED_PARAMETER(cmdline); + + aFINDMSGSTRING = (ATOM) RegisterWindowMessage(FINDMSGSTRING); ZeroMemory(&Globals, sizeof(Globals)); Globals.hInstance = hInstance; @@ -561,5 +590,5 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show) } } SaveSettings(); - return msg.wParam; + return (int) msg.wParam; } diff --git a/reactos/base/applications/notepad/rsrc.rc b/reactos/base/applications/notepad/rsrc.rc index e10a8badaec..dead224b521 100644 --- a/reactos/base/applications/notepad/rsrc.rc +++ b/reactos/base/applications/notepad/rsrc.rc @@ -25,43 +25,29 @@ #include "commctrl.h" #include "notepad_res.h" -ID_ACCEL ACCELERATORS -{ - "^A", CMD_SELECT_ALL - "^C", CMD_COPY - "^F", CMD_SEARCH - "^G", CMD_GOTO - "H", CMD_REPLACE, VIRTKEY, CONTROL - "^O", CMD_OPEN - "^S", CMD_SAVE - "^V", CMD_PASTE - "^X", CMD_CUT - "^Z", CMD_UNDO - VK_F3, CMD_SEARCH_NEXT, VIRTKEY - VK_F5, CMD_TIME_DATE, VIRTKEY -} - IDI_NPICON ICON "res/notepad.ico" -#include "res/En.rc" -#include "res/Cs.rc" -#include "res/Da.rc" -#include "res/De.rc" -#include "res/Es.rc" -#include "res/Fi.rc" -#include "res/Fr.rc" -#include "res/Gr.rc" -//#include "res/Hu.rc" -#include "res/It.rc" -#include "res/Ja.rc" -#include "res/Nl.rc" -#include "res/Pl.rc" -#include "res/Pt.rc" -#include "res/Ru.rc" -#include "res/Si.rc" -#include "res/Sk.rc" -#include "res/Sv.rc" -#include "res/Th.rc" -#include "res/Uk.rc" -#include "res/Wa.rc" -#include "res/Zh.rc" +#include "lang/En.rc" +#include "lang/Cs.rc" +#include "lang/Da.rc" +#include "lang/De.rc" +#include "lang/Es.rc" +#include "lang/Fi.rc" +#include "lang/Fr.rc" +#include "lang/Gr.rc" +#include "lang/Hu.rc" +#include "lang/It.rc" +#include "lang/Ja.rc" +#include "lang/No.rc" +#include "lang/Nl.rc" +#include "lang/Pl.rc" +#include "lang/Pt.rc" +#include "lang/Ru.rc" +#include "lang/Si.rc" +#include "lang/Sk.rc" +#include "lang/Sv.rc" +#include "lang/Th.rc" +#include "lang/Uk.rc" +//#include "lang/Wa.rc" +#include "lang/Zh.rc" + diff --git a/reactos/base/applications/notepad/settings.c b/reactos/base/applications/notepad/settings.c index 4ff3d6e1c9e..610e12fefda 100644 --- a/reactos/base/applications/notepad/settings.c +++ b/reactos/base/applications/notepad/settings.c @@ -187,7 +187,7 @@ static BOOL SaveString(HKEY hKey, LPCSTR pszValueName, LPCTSTR pszValue) pszValueNameT = pszValueName; #endif - return RegSetValueEx(hKey, pszValueNameT, 0, REG_SZ, (LPBYTE) pszValue, _tcslen(pszValue) * sizeof(*pszValue)) == ERROR_SUCCESS; + return RegSetValueEx(hKey, pszValueNameT, 0, REG_SZ, (LPBYTE) pszValue, (DWORD) _tcslen(pszValue) * sizeof(*pszValue)) == ERROR_SUCCESS; } void SaveSettings(void) diff --git a/reactos/base/applications/regedit/childwnd.c b/reactos/base/applications/regedit/childwnd.c index 29b0d2bc94e..4894afa5503 100644 --- a/reactos/base/applications/regedit/childwnd.c +++ b/reactos/base/applications/regedit/childwnd.c @@ -67,7 +67,8 @@ static void draw_splitbar(HWND hWnd, int x) static void ResizeWnd(ChildWnd* pChildWnd, int cx, int cy) { HDWP hdwp = BeginDeferWindowPos(2); - RECT rt = {0, 0, cx, cy}; + RECT rt; + SetRect(&rt, 0, 0, cx, cy); cx = pChildWnd->nSplitPos + SPLIT_WIDTH/2; DeferWindowPos(hdwp, pChildWnd->hTreeWnd, 0, rt.left, rt.top, pChildWnd->nSplitPos-SPLIT_WIDTH/2-rt.left, rt.bottom-rt.top, SWP_NOZORDER|SWP_NOACTIVATE); @@ -103,6 +104,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LPCTSTR keyPath, s; WORD wID = LOWORD(wParam); + UNREFERENCED_PARAMETER(message); + switch (wID) { /* Parse the menu selections: */ case ID_REGISTRY_EXIT: @@ -209,12 +212,12 @@ static void SuggestKeys(HKEY hRootKey, LPCTSTR pszKeyPath, LPTSTR pszSuggestions { if (RegOpenKey(hRootKey, szBuffer, &hOtherKey) == ERROR_SUCCESS) { - lstrcpyn(pszSuggestions, TEXT("HKCR\\"), iSuggestionsLength); + lstrcpyn(pszSuggestions, TEXT("HKCR\\"), (int) iSuggestionsLength); i = _tcslen(pszSuggestions); pszSuggestions += i; iSuggestionsLength -= i; - lstrcpyn(pszSuggestions, szBuffer, iSuggestionsLength); + lstrcpyn(pszSuggestions, szBuffer, (int) iSuggestionsLength); i = MIN(_tcslen(pszSuggestions) + 1, iSuggestionsLength); pszSuggestions += i; iSuggestionsLength -= i; @@ -235,12 +238,12 @@ static void SuggestKeys(HKEY hRootKey, LPCTSTR pszKeyPath, LPTSTR pszSuggestions if (RegQueryStringValue(hSubKey, TEXT("CLSID"), NULL, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])) == ERROR_SUCCESS) { - lstrcpyn(pszSuggestions, TEXT("HKCR\\CLSID\\"), iSuggestionsLength); + lstrcpyn(pszSuggestions, TEXT("HKCR\\CLSID\\"), (int) iSuggestionsLength); i = _tcslen(pszSuggestions); pszSuggestions += i; iSuggestionsLength -= i; - lstrcpyn(pszSuggestions, szBuffer, iSuggestionsLength); + lstrcpyn(pszSuggestions, szBuffer, (int) iSuggestionsLength); i = MIN(_tcslen(pszSuggestions) + 1, iSuggestionsLength); pszSuggestions += i; iSuggestionsLength -= i; @@ -263,7 +266,7 @@ static void SuggestKeys(HKEY hRootKey, LPCTSTR pszKeyPath, LPTSTR pszSuggestions */ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - static short last_split; + static int last_split; BOOL Result; ChildWnd* pChildWnd = g_pChildWnd; @@ -432,7 +435,7 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa _T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit"), &hKey) == ERROR_SUCCESS) { - RegSetValueEx(hKey, _T("LastKey"), 0, REG_SZ, (LPBYTE) szBuffer, _tcslen(szBuffer) * sizeof(szBuffer[0])); + RegSetValueEx(hKey, _T("LastKey"), 0, REG_SZ, (LPBYTE) szBuffer, (DWORD) _tcslen(szBuffer) * sizeof(szBuffer[0])); RegCloseKey(hKey); } } diff --git a/reactos/base/applications/regedit/clb/clb.rc b/reactos/base/applications/regedit/clb/clb.rc index ac5884ffa36..0841a7ff3bf 100644 --- a/reactos/base/applications/regedit/clb/clb.rc +++ b/reactos/base/applications/regedit/clb/clb.rc @@ -8,5 +8,5 @@ #define REACTOS_STR_ORIGINAL_FILENAME "clb.dll\0" #include -#include "clb_En.rc" -#include "clb_Ja.rc" +#include "rsrc.rc" + diff --git a/reactos/base/applications/regedit/clb/clb_En.rc b/reactos/base/applications/regedit/clb/lang/En.rc similarity index 100% rename from reactos/base/applications/regedit/clb/clb_En.rc rename to reactos/base/applications/regedit/clb/lang/En.rc diff --git a/reactos/base/applications/regedit/clb/clb_Ja.rc b/reactos/base/applications/regedit/clb/lang/Ja.rc similarity index 100% rename from reactos/base/applications/regedit/clb/clb_Ja.rc rename to reactos/base/applications/regedit/clb/lang/Ja.rc diff --git a/reactos/base/applications/regedit/clb/lang/No.rc b/reactos/base/applications/regedit/clb/lang/No.rc new file mode 100644 index 00000000000..280a8730aff --- /dev/null +++ b/reactos/base/applications/regedit/clb/lang/No.rc @@ -0,0 +1,28 @@ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +IDD_COLUMNLISTBOXSTYLES DIALOGEX 0, 0, 227, 215 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Column List Box Styles" +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "kolonne liste Boks Stiler", -1, 6, 7, 158, 71 + CHECKBOX "S&tandard", 1710, 10, 20, 42, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Kantlinje", 1713, 10, 30, 34, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "S&orter", 1705, 10, 40, 26, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Varsle", 1706, 10, 50, 32, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "G&rønt. Scroll Bar", 1707, 10, 60, 64, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Sammensatt valg", -1, 79, 20, 72, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP | WS_DISABLED + CHECKBOX "&Utvidet valg", -1, 79, 30, 77, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP | WS_DISABLED + CHECKBOX "&Fremspring overskrift", 1714, 79, 40, 68, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Spenstig kolonner", 1715, 79, 50, 66, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + GROUPBOX "Grunnleggende stiler", -1, 6, 80, 158, 34 + CHECKBOX "&Synlig", 1701, 10, 92, 34, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Koble ut", 1702, 10, 102, 41, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Gruppe ", 1703, 79, 92, 32, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Kategori stopp", 1704, 79, 102, 44, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + PUSHBUTTON "OK", IDOK, 37, 125, 40, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Avbryt", IDCANCEL, 93, 125, 40, 14, BS_PUSHBUTTON | WS_GROUP | WS_TABSTOP + CHECKBOX "&Koble ut Ingen skrolling", 1708, 79, 60, 66, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +END + diff --git a/reactos/base/applications/regedit/clb/rsrc.rc b/reactos/base/applications/regedit/clb/rsrc.rc new file mode 100644 index 00000000000..d6663c06609 --- /dev/null +++ b/reactos/base/applications/regedit/clb/rsrc.rc @@ -0,0 +1,36 @@ +/* + * Regedit resources + * + * Copyright 2002 Robert Dickenson + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include "resource.h" + + +/* define language neutral resources */ + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +/* include localised resources */ + + +#include "lang/En.rc" +#include "lang/Ja.rc" +#include "lang/No.rc" + + diff --git a/reactos/base/applications/regedit/edit.c b/reactos/base/applications/regedit/edit.c index cc30cf5ae23..c1b6a8819db 100644 --- a/reactos/base/applications/regedit/edit.c +++ b/reactos/base/applications/regedit/edit.c @@ -103,6 +103,8 @@ INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L HWND hwndValue; int len; + UNREFERENCED_PARAMETER(lParam); + switch(uMsg) { case WM_INITDIALOG: if(editValueName && _tcscmp(editValueName, _T(""))) @@ -168,6 +170,8 @@ INT_PTR CALLBACK modify_multi_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wPa HWND hwndValue; int len; + UNREFERENCED_PARAMETER(lParam); + switch(uMsg) { case WM_INITDIALOG: if(editValueName && _tcscmp(editValueName, _T(""))) @@ -238,7 +242,7 @@ LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPAR case WM_CHAR: if (dwordEditMode == EDIT_MODE_DEC) { - if (isdigit(wParam & 0xff)) + if (isdigit((int) wParam & 0xff)) { break; } @@ -249,7 +253,7 @@ LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPAR } else if (dwordEditMode == EDIT_MODE_HEX) { - if (isxdigit(wParam & 0xff)) + if (isxdigit((int) wParam & 0xff)) { break; } @@ -278,6 +282,8 @@ INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LP DWORD Base; DWORD Value = 0; + UNREFERENCED_PARAMETER(lParam); + switch(uMsg) { case WM_INITDIALOG: dwordEditMode = EDIT_MODE_HEX; @@ -384,6 +390,8 @@ INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L HWND hwndValue; UINT len; + UNREFERENCED_PARAMETER(lParam); + switch(uMsg) { case WM_INITDIALOG: if(editValueName && _tcscmp(editValueName, _T(""))) @@ -408,7 +416,7 @@ INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L case IDOK: if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA))) { - len = HexEdit_GetBufferSize(hwndValue); + len = (UINT) HexEdit_GetBufferSize(hwndValue); if (len != valueDataLen && len > 0) { binValueData = HeapReAlloc(GetProcessHeap(), 0, binValueData, len); @@ -482,7 +490,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCTSTR valueName, BOOL EditBin) { if (stringValueData) { - lRet = RegSetValueEx(hKey, valueName, 0, type, (LPBYTE)stringValueData, (_tcslen(stringValueData) + 1) * sizeof(TCHAR)); + lRet = RegSetValueEx(hKey, valueName, 0, type, (LPBYTE)stringValueData, (DWORD) (_tcslen(stringValueData) + 1) * sizeof(TCHAR)); } else { @@ -496,7 +504,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCTSTR valueName, BOOL EditBin) { if (valueDataLen > 0) { - DWORD llen, listlen, nl_len; + size_t llen, listlen, nl_len; LPTSTR src, lines = NULL; if (!(stringValueData = HeapAlloc(GetProcessHeap(), 0, valueDataLen))) @@ -542,7 +550,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCTSTR valueName, BOOL EditBin) /* convert \r\n to \0 */ BOOL EmptyLines = FALSE; LPTSTR src, lines, nl; - DWORD linechars, buflen, c_nl, dest; + size_t linechars, buflen, c_nl, dest; src = stringValueData; buflen = sizeof(TCHAR); @@ -586,7 +594,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCTSTR valueName, BOOL EditBin) warning(hwnd, IDS_MULTI_SZ_EMPTY_STRING); } - lRet = RegSetValueEx(hKey, valueName, 0, type, (LPBYTE)lines, buflen); + lRet = RegSetValueEx(hKey, valueName, 0, type, (LPBYTE)lines, (DWORD) buflen); HeapFree(GetProcessHeap(), 0, lines); } else diff --git a/reactos/base/applications/regedit/find.c b/reactos/base/applications/regedit/find.c index cba16609932..b5764447f34 100644 --- a/reactos/base/applications/regedit/find.c +++ b/reactos/base/applications/regedit/find.c @@ -76,6 +76,9 @@ static void SetFindFlags(DWORD dwFlags) static INT_PTR CALLBACK AbortFindDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(hDlg); + switch(uMsg) { case WM_CLOSE: @@ -102,6 +105,7 @@ static INT_PTR CALLBACK AbortFindDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, static BOOL RegSearchProc(LPVOID lpParam) { MSG msg; + UNREFERENCED_PARAMETER(lpParam); if (s_hwndAbortDialog && PeekMessage(&msg, s_hwndAbortDialog, 0, 0, PM_REMOVE)) { diff --git a/reactos/base/applications/regedit/framewnd.c b/reactos/base/applications/regedit/framewnd.c index 381d304b7a1..7552dd7001b 100644 --- a/reactos/base/applications/regedit/framewnd.c +++ b/reactos/base/applications/regedit/framewnd.c @@ -119,6 +119,7 @@ done: static void OnEnterMenuLoop(HWND hWnd) { int nParts; + UNREFERENCED_PARAMETER(hWnd); /* Update the status bar pane sizes */ nParts = -1; @@ -191,6 +192,7 @@ static void toggle_child(HWND hWnd, UINT cmd, HWND hchild) static BOOL CheckCommDlgError(HWND hWnd) { DWORD dwErrorCode = CommDlgExtendedError(); + UNREFERENCED_PARAMETER(hWnd); switch (dwErrorCode) { case CDERR_DIALOGFAILURE: break; @@ -347,6 +349,8 @@ static UINT_PTR CALLBACK ExportRegistryFile_OFNHookProc(HWND hdlg, UINT uiMsg, W LPTSTR pszSelectedKey; OFNOTIFY *pOfnNotify; + UNREFERENCED_PARAMETER(wParam); + switch(uiMsg) { case WM_INITDIALOG: pOfn = (OPENFILENAME *) lParam; @@ -453,6 +457,7 @@ BOOL PrintRegistryHive(HWND hWnd, LPTSTR path) { #if 1 PRINTDLG pd; + UNREFERENCED_PARAMETER(path); ZeroMemory(&pd, sizeof(PRINTDLG)); pd.lStructSize = sizeof(PRINTDLG); @@ -714,7 +719,7 @@ InvokeRemoteRegistryPickerDialog(IN IDsObjectPicker *pDsObjectPicker, STGMEDIUM stm; FORMATETC fe; - fe.cfFormat = RegisterClipboardFormat(CFSTR_DSOP_DS_SELECTION_LIST); + fe.cfFormat = (CLIPFORMAT) RegisterClipboardFormat(CFSTR_DSOP_DS_SELECTION_LIST); fe.ptd = NULL; fe.dwAspect = DVASPECT_CONTENT; fe.lindex = -1; @@ -730,7 +735,7 @@ InvokeRemoteRegistryPickerDialog(IN IDsObjectPicker *pDsObjectPicker, { if (SelectionList->cItems == 1) { - UINT nlen = wcslen(SelectionList->aDsSelection[0].pwzName); + size_t nlen = wcslen(SelectionList->aDsSelection[0].pwzName); if (nlen >= uSize) { nlen = uSize - 1; @@ -787,6 +792,9 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LONG lRet; int item; + UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(message); + switch (LOWORD(wParam)) { case ID_REGISTRY_IMPORTREGISTRYFILE: ImportRegistryFile(hWnd); diff --git a/reactos/base/applications/regedit/hexedit.c b/reactos/base/applications/regedit/hexedit.c index 032db2892c5..d05146cd476 100644 --- a/reactos/base/applications/regedit/hexedit.c +++ b/reactos/base/applications/regedit/hexedit.c @@ -128,7 +128,7 @@ HEXEDIT_Update(PHEXEDIT_DATA hed) GetClientRect(hed->hWndSelf, &rcClient); hed->style = GetWindowLong(hed->hWndSelf, GWL_STYLE); - bufsize = (hed->hBuffer ? LocalSize(hed->hBuffer) : 0); + bufsize = (hed->hBuffer ? (INT) LocalSize(hed->hBuffer) : 0); hed->nLines = max(bufsize / hed->ColumnsPerLine, 1); if(bufsize > hed->ColumnsPerLine && (bufsize % hed->ColumnsPerLine) > 0) { @@ -182,7 +182,7 @@ HEXEDIT_PaintLines(PHEXEDIT_DATA hed, HDC hDC, DWORD ScrollPos, DWORD First, DWO DWORD dx, dy, linestart; INT x; PBYTE buf, current, end, line; - UINT bufsize; + size_t bufsize; TCHAR hex[3], addr[17]; RECT rct; @@ -340,7 +340,7 @@ HEXEDIT_PositionFromPoint(PHEXEDIT_DATA hed, POINTS pt, DWORD Hit, POINT *EditPo case HEHT_ADDRESS: case HEHT_ADDRESSSPACING: case HEHT_HEXDUMP: - pt.x -= hed->LeftMargin + ((4 + hed->AddressSpacing) * hed->CharWidth); + pt.x -= (SHORT) hed->LeftMargin + ((4 + hed->AddressSpacing) * hed->CharWidth); *EditField = TRUE; break; @@ -356,7 +356,7 @@ HEXEDIT_PositionFromPoint(PHEXEDIT_DATA hed, POINTS pt, DWORD Hit, POINT *EditPo EditPos->x = min(hed->ColumnsPerLine, pt.x / BlockWidth); } - bufsize = (hed->hBuffer ? LocalSize(hed->hBuffer) : 0); + bufsize = (hed->hBuffer ? (DWORD) LocalSize(hed->hBuffer) : 0); Pos = (EditPos->y * hed->ColumnsPerLine) + EditPos->x; if(Pos > bufsize) { @@ -433,7 +433,7 @@ HEXEDIT_HEM_LOADBUFFER(PHEXEDIT_DATA hed, PVOID Buffer, DWORD Size) static LRESULT HEXEDIT_HEM_COPYBUFFER(PHEXEDIT_DATA hed, PVOID Buffer, DWORD Size) { - DWORD nCpy; + size_t nCpy; if(!hed->hBuffer) { @@ -526,6 +526,7 @@ HEXEDIT_WM_NCDESTROY(PHEXEDIT_DATA hed) static LRESULT HEXEDIT_WM_CREATE(PHEXEDIT_DATA hed) { + UNREFERENCED_PARAMETER(hed); return 1; } @@ -541,6 +542,7 @@ HEXEDIT_WM_SETFOCUS(PHEXEDIT_DATA hed) static LRESULT HEXEDIT_WM_KILLFOCUS(PHEXEDIT_DATA hed) { + UNREFERENCED_PARAMETER(hed); DestroyCaret(); return 0; } @@ -551,6 +553,8 @@ HEXEDIT_WM_VSCROLL(PHEXEDIT_DATA hed, WORD ThumbPosition, WORD SbCmd) int ScrollY; SCROLLINFO si; + UNREFERENCED_PARAMETER(ThumbPosition); + ZeroMemory(&si, sizeof(SCROLLINFO)); si.cbSize = sizeof(SCROLLINFO); si.fMask = SIF_ALL; @@ -708,6 +712,9 @@ HEXEDIT_WM_MOUSEWHEEL(PHEXEDIT_DATA hed, int cyMoveLines, WORD ButtonsDown, LPPO SCROLLINFO si; int ScrollY; + UNREFERENCED_PARAMETER(ButtonsDown); + UNREFERENCED_PARAMETER(MousePos); + SetFocus(hed->hWndSelf); si.cbSize = sizeof(SCROLLINFO); @@ -733,6 +740,7 @@ HEXEDIT_WM_MOUSEWHEEL(PHEXEDIT_DATA hed, int cyMoveLines, WORD ButtonsDown, LPPO static LRESULT HEXEDIT_WM_GETDLGCODE(LPMSG Msg) { + UNREFERENCED_PARAMETER(Msg); return DLGC_WANTARROWS | DLGC_WANTCHARS; } @@ -743,6 +751,7 @@ HEXEDIT_WM_LBUTTONDOWN(PHEXEDIT_DATA hed, INT Buttons, POINTS Pt) POINT EditPos; DWORD Hit = HEXEDIT_HitRegionTest(hed, Pt); + UNREFERENCED_PARAMETER(Buttons); SetFocus(hed->hWndSelf); hed->Position = HEXEDIT_PositionFromPoint(hed, Pt, Hit, &EditPos, &NewField); @@ -758,7 +767,7 @@ HEXEDIT_WM_LBUTTONDOWN(PHEXEDIT_DATA hed, INT Buttons, POINTS Pt) static BOOL HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) { - DWORD bufsize; + size_t bufsize; BOOL shift, control; if(GetKeyState(VK_MENU) & 0x8000) @@ -827,15 +836,15 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) hed->CaretLine++; if(hed->Position > (INT)bufsize) { - hed->Position = bufsize; + hed->Position = (INT) bufsize; hed->CaretLine = (hed->nLines > 0 ? hed->nLines - 1 : 0); - hed->CaretCol = bufsize % hed->ColumnsPerLine; + hed->CaretCol = (INT) bufsize % hed->ColumnsPerLine; } } else { - INT tmp = bufsize % hed->ColumnsPerLine; - hed->Position = bufsize; + INT tmp = (INT) bufsize % hed->ColumnsPerLine; + hed->Position = (INT) bufsize; hed->CaretCol = (tmp == 0 ? hed->ColumnsPerLine : tmp); } } @@ -849,6 +858,9 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) static LRESULT HEXEDIT_WM_SIZE(PHEXEDIT_DATA hed, DWORD sType, WORD NewWidth, WORD NewHeight) { + UNREFERENCED_PARAMETER(sType); + UNREFERENCED_PARAMETER(NewHeight); + UNREFERENCED_PARAMETER(NewWidth); HEXEDIT_Update(hed); return 0; } diff --git a/reactos/base/applications/regedit/Cz.rc b/reactos/base/applications/regedit/lang/Cz.rc similarity index 98% rename from reactos/base/applications/regedit/Cz.rc rename to reactos/base/applications/regedit/lang/Cz.rc index 98945245fb0..5eac570e969 100644 --- a/reactos/base/applications/regedit/Cz.rc +++ b/reactos/base/applications/regedit/lang/Cz.rc @@ -20,6 +20,15 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/De.rc b/reactos/base/applications/regedit/lang/De.rc similarity index 98% rename from reactos/base/applications/regedit/De.rc rename to reactos/base/applications/regedit/lang/De.rc index 5521d1ac712..6c90815ec59 100644 --- a/reactos/base/applications/regedit/De.rc +++ b/reactos/base/applications/regedit/lang/De.rc @@ -20,6 +20,15 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/En.rc b/reactos/base/applications/regedit/lang/En.rc similarity index 98% rename from reactos/base/applications/regedit/En.rc rename to reactos/base/applications/regedit/lang/En.rc index da2f5031642..e77a31437a9 100644 --- a/reactos/base/applications/regedit/En.rc +++ b/reactos/base/applications/regedit/lang/En.rc @@ -20,6 +20,15 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Es.rc b/reactos/base/applications/regedit/lang/Es.rc similarity index 98% rename from reactos/base/applications/regedit/Es.rc rename to reactos/base/applications/regedit/lang/Es.rc index 9124836d953..804bee4e915 100644 --- a/reactos/base/applications/regedit/Es.rc +++ b/reactos/base/applications/regedit/lang/Es.rc @@ -22,6 +22,15 @@ LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Fr.rc b/reactos/base/applications/regedit/lang/Fr.rc similarity index 96% rename from reactos/base/applications/regedit/Fr.rc rename to reactos/base/applications/regedit/lang/Fr.rc index 37d0e2cd0a3..4296316afb1 100644 --- a/reactos/base/applications/regedit/Fr.rc +++ b/reactos/base/applications/regedit/lang/Fr.rc @@ -22,6 +22,15 @@ LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Hu.rc b/reactos/base/applications/regedit/lang/Hu.rc similarity index 95% rename from reactos/base/applications/regedit/Hu.rc rename to reactos/base/applications/regedit/lang/Hu.rc index dd6f8e52574..13f536032a7 100644 --- a/reactos/base/applications/regedit/Hu.rc +++ b/reactos/base/applications/regedit/lang/Hu.rc @@ -19,7 +19,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} /* * Menu diff --git a/reactos/base/applications/regedit/It.rc b/reactos/base/applications/regedit/lang/It.rc similarity index 97% rename from reactos/base/applications/regedit/It.rc rename to reactos/base/applications/regedit/lang/It.rc index 45c19c9db06..eda9ef63cf7 100644 --- a/reactos/base/applications/regedit/It.rc +++ b/reactos/base/applications/regedit/lang/It.rc @@ -22,6 +22,15 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Ja.rc b/reactos/base/applications/regedit/lang/Ja.rc similarity index 98% rename from reactos/base/applications/regedit/Ja.rc rename to reactos/base/applications/regedit/lang/Ja.rc index d44f464d6e6..4e7a060285e 100644 --- a/reactos/base/applications/regedit/Ja.rc +++ b/reactos/base/applications/regedit/lang/Ja.rc @@ -5,6 +5,15 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Nl.rc b/reactos/base/applications/regedit/lang/Nl.rc similarity index 96% rename from reactos/base/applications/regedit/Nl.rc rename to reactos/base/applications/regedit/lang/Nl.rc index 4d730649ed3..021eef2e0f4 100644 --- a/reactos/base/applications/regedit/Nl.rc +++ b/reactos/base/applications/regedit/lang/Nl.rc @@ -20,6 +20,15 @@ LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Pl.rc b/reactos/base/applications/regedit/lang/Pl.rc similarity index 95% rename from reactos/base/applications/regedit/Pl.rc rename to reactos/base/applications/regedit/lang/Pl.rc index 2ad093a1e73..1968edb2a82 100644 --- a/reactos/base/applications/regedit/Pl.rc +++ b/reactos/base/applications/regedit/lang/Pl.rc @@ -18,7 +18,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} /* * Menu diff --git a/reactos/base/applications/regedit/Pt.rc b/reactos/base/applications/regedit/lang/Pt.rc similarity index 97% rename from reactos/base/applications/regedit/Pt.rc rename to reactos/base/applications/regedit/lang/Pt.rc index 95f717ede99..8c0546bf9fb 100644 --- a/reactos/base/applications/regedit/Pt.rc +++ b/reactos/base/applications/regedit/lang/Pt.rc @@ -21,6 +21,15 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Ru.rc b/reactos/base/applications/regedit/lang/Ru.rc similarity index 96% rename from reactos/base/applications/regedit/Ru.rc rename to reactos/base/applications/regedit/lang/Ru.rc index f2c664848f1..7044107f187 100644 --- a/reactos/base/applications/regedit/Ru.rc +++ b/reactos/base/applications/regedit/lang/Ru.rc @@ -18,7 +18,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} /* * Menu diff --git a/reactos/base/applications/regedit/Si.rc b/reactos/base/applications/regedit/lang/Si.rc similarity index 96% rename from reactos/base/applications/regedit/Si.rc rename to reactos/base/applications/regedit/lang/Si.rc index e33ad4b8790..5d734da73d6 100644 --- a/reactos/base/applications/regedit/Si.rc +++ b/reactos/base/applications/regedit/lang/Si.rc @@ -18,7 +18,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -LANGUAGE LANG_SLOVENIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT + +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} /* * Menu diff --git a/reactos/base/applications/regedit/Sv.rc b/reactos/base/applications/regedit/lang/Sv.rc similarity index 95% rename from reactos/base/applications/regedit/Sv.rc rename to reactos/base/applications/regedit/lang/Sv.rc index a1078116d58..55ac6aeee7b 100644 --- a/reactos/base/applications/regedit/Sv.rc +++ b/reactos/base/applications/regedit/lang/Sv.rc @@ -20,6 +20,15 @@ LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ diff --git a/reactos/base/applications/regedit/Uk.rc b/reactos/base/applications/regedit/lang/Uk.rc similarity index 97% rename from reactos/base/applications/regedit/Uk.rc rename to reactos/base/applications/regedit/lang/Uk.rc index 556963a8322..911e30cc2c6 100644 --- a/reactos/base/applications/regedit/Uk.rc +++ b/reactos/base/applications/regedit/lang/Uk.rc @@ -20,6 +20,15 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT +ID_ACCEL ACCELERATORS +{ + VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT + "^F", ID_EDIT_FIND + VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT + VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT + VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT +} + /* * Menu */ @@ -65,7 +74,7 @@ BEGIN MENUITEM SEPARATOR POPUP "&Ñòâîðèòè" BEGIN - MENUITEM "Êë&þ÷", ID_EDIT_NEW_KEY + MENUITEM "Ðîç&ä³ë", ID_EDIT_NEW_KEY MENUITEM SEPARATOR MENUITEM "&Ðÿäêîâå çíà÷åííÿ", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Äâ³éêîâå çíà÷åííÿ", ID_EDIT_NEW_BINARYVALUE @@ -121,7 +130,7 @@ BEGIN BEGIN POPUP "&Ñòâîðèòè" BEGIN - MENUITEM "Êë&þ÷", ID_EDIT_NEW_KEY + MENUITEM "Ðîç&ä³ë", ID_EDIT_NEW_KEY MENUITEM SEPARATOR MENUITEM "&Ðÿäêîâå çíà÷åííÿ", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Äâ³éêîâå çíà÷åííÿ", ID_EDIT_NEW_BINARYVALUE diff --git a/reactos/base/applications/regedit/listview.c b/reactos/base/applications/regedit/listview.c index fae63d4b7bb..fcc0cb362b8 100644 --- a/reactos/base/applications/regedit/listview.c +++ b/reactos/base/applications/regedit/listview.c @@ -50,7 +50,8 @@ static int column_alignment[MAX_LIST_COLUMNS] = { LVCFMT_LEFT, LVCFMT_LEFT, LVCF LPCTSTR GetValueName(HWND hwndLV, int iStartAt) { - int item, len, maxLen; + int item; + size_t len, maxLen; LPTSTR newStr; LVITEM LVItem; PLINE_INFO lineinfo; @@ -128,7 +129,7 @@ static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValB item.state = 0; item.stateMask = 0; item.pszText = Name; - item.cchTextMax = _tcslen(item.pszText); + item.cchTextMax = (int) _tcslen(item.pszText); if (item.cchTextMax == 0) item.pszText = LPSTR_TEXTCALLBACK; item.iImage = 0; @@ -356,6 +357,8 @@ static void OnGetDispInfo(NMLVDISPINFO* plvdi) static int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { LINE_INFO*l, *r; + UNREFERENCED_PARAMETER(lParamSort); + l = (LINE_INFO*)lParam1; r = (LINE_INFO*)lParam2; @@ -373,6 +376,7 @@ static int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSor BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result) { NMLVDISPINFO* Info; + UNREFERENCED_PARAMETER(wParam); *Result = TRUE; switch (((LPNMHDR)lParam)->code) { case LVN_GETDISPINFO: diff --git a/reactos/base/applications/regedit/main.c b/reactos/base/applications/regedit/main.c index 7d124555b8c..d3f248229d3 100644 --- a/reactos/base/applications/regedit/main.c +++ b/reactos/base/applications/regedit/main.c @@ -62,41 +62,38 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) HMENU hEditMenu; TCHAR szBuffer[256]; - WNDCLASSEX wcFrame = { - sizeof(WNDCLASSEX), - CS_HREDRAW | CS_VREDRAW/*style*/, - FrameWndProc, - 0/*cbClsExtra*/, - 0/*cbWndExtra*/, - hInstance, - LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)), - LoadCursor(0, IDC_ARROW), - 0/*hbrBackground*/, - 0/*lpszMenuName*/, - szFrameClass, - (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON, - GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED) - }; - ATOM hFrameWndClass = RegisterClassEx(&wcFrame); /* register frame window class */ + WNDCLASSEX wcFrame; + WNDCLASSEX wcChild; + ATOM hFrameWndClass; + ATOM hChildWndClass; - WNDCLASSEX wcChild = { - sizeof(WNDCLASSEX), - CS_HREDRAW | CS_VREDRAW/*style*/, - ChildWndProc, - 0/*cbClsExtra*/, - sizeof(HANDLE)/*cbWndExtra*/, - hInstance, - LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)), - LoadCursor(0, IDC_ARROW), - 0/*hbrBackground*/, - 0/*lpszMenuName*/, - szChildClass, - (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON, - GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED) + ZeroMemory(&wcFrame, sizeof(WNDCLASSEX)); + wcFrame.cbSize = sizeof(WNDCLASSEX); + wcFrame.style = CS_HREDRAW | CS_VREDRAW; + wcFrame.lpfnWndProc = FrameWndProc; + wcFrame.hInstance = hInstance; + wcFrame.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)); + wcFrame.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), + IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), + GetSystemMetrics(SM_CYSMICON), LR_SHARED); + wcFrame.hCursor = LoadCursor(0, IDC_ARROW); + wcFrame.lpszClassName = szFrameClass; - }; - ATOM hChildWndClass = RegisterClassEx(&wcChild); /* register child windows class */ - hChildWndClass = hChildWndClass; /* warning eater */ + hFrameWndClass = RegisterClassEx(&wcFrame); /* register frame window class */ + + ZeroMemory(&wcChild, sizeof(WNDCLASSEX)); + wcChild.cbSize = sizeof(WNDCLASSEX); + wcChild.style = CS_HREDRAW | CS_VREDRAW; + wcChild.lpfnWndProc = ChildWndProc; + wcChild.cbWndExtra = sizeof(HANDLE); + wcChild.hInstance = hInstance; + wcChild.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_REGEDIT)); + wcChild.hCursor = LoadCursor(0, IDC_ARROW), + wcChild.lpszClassName = szChildClass, + wcChild.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_REGEDIT), IMAGE_ICON, + GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); + + hChildWndClass = RegisterClassEx(&wcChild); /* register child windows class */ RegisterHexEditorClass(hInstance); @@ -195,6 +192,8 @@ int APIENTRY WinMain(HINSTANCE hInstance, MSG msg; HACCEL hAccel; + UNREFERENCED_PARAMETER(hPrevInstance); + /* int hCrt; FILE *hf; @@ -238,5 +237,5 @@ int APIENTRY WinMain(HINSTANCE hInstance, } ExitInstance(hInstance); - return msg.wParam; + return (int) msg.wParam; } diff --git a/reactos/base/applications/regedit/regedit.c b/reactos/base/applications/regedit/regedit.c index 48dfd65aafa..880d65a8ca2 100644 --- a/reactos/base/applications/regedit/regedit.c +++ b/reactos/base/applications/regedit/regedit.c @@ -90,7 +90,7 @@ BOOL ProcessCmdLine(LPSTR lpCmdLine) s++; ch = *s; ch2 = *(s+1); - chu = toupper(ch); + chu = (CHAR) toupper(ch); if (!ch2 || isspace(ch2)) { if (chu == 'S' || chu == 'V') { /* ignore these switches */ diff --git a/reactos/base/applications/regedit/regedit.rbuild b/reactos/base/applications/regedit/regedit.rbuild index 50141a1ee16..519587200c1 100644 --- a/reactos/base/applications/regedit/regedit.rbuild +++ b/reactos/base/applications/regedit/regedit.rbuild @@ -16,6 +16,7 @@ comctl32 comdlg32 shlwapi + uuid about.c childwnd.c edit.c diff --git a/reactos/base/applications/regedit/regproc.c b/reactos/base/applications/regedit/regproc.c index 56a9486caaf..4201f4241e7 100644 --- a/reactos/base/applications/regedit/regproc.c +++ b/reactos/base/applications/regedit/regproc.c @@ -227,8 +227,8 @@ DWORD convertHexCSVToHex(char *str, BYTE *buf, ULONG bufLen) char *s = str; /* Pointer to current */ char *b = (char*) buf; /* Pointer to result */ - ULONG strLen = strlen(str); - ULONG strPos = 0; + size_t strLen = strlen(str); + size_t strPos = 0; DWORD byteCount = 0; memset(buf, 0, bufLen); @@ -315,7 +315,7 @@ DWORD getDataType(LPSTR *lpValue, DWORD* parse_type) LPSTR getArg( LPSTR arg) { LPSTR tmp = NULL; - ULONG len; + size_t len; if (arg == NULL) return NULL; @@ -339,9 +339,9 @@ LPSTR getArg( LPSTR arg) */ static void REGPROC_unescape_string(LPSTR str) { - int str_idx = 0; /* current character under analysis */ - int val_idx = 0; /* the last character of the unescaped string */ - int len = strlen(str); + size_t str_idx = 0; /* current character under analysis */ + size_t val_idx = 0; /* the last character of the unescaped string */ + size_t len = strlen(str); for (str_idx = 0; str_idx < len; str_idx++, val_idx++) { if (str[str_idx] == '\\') { str_idx++; @@ -391,7 +391,7 @@ HRESULT setValue(LPSTR val_name, LPSTR val_data) if ( dwParseType == REG_SZ) /* no conversion for string */ { - dwLen = strlen(val_data); + dwLen = (DWORD) strlen(val_data); if (dwLen>0 && val_data[dwLen-1]=='"') { dwLen--; @@ -406,11 +406,11 @@ HRESULT setValue(LPSTR val_name, LPSTR val_data) lpbData = convert; } else /* Convert the hexadecimal types */ { - int b_len = strlen (val_data)+2/3; + size_t b_len = strlen (val_data)+2/3; if (b_len > KEY_MAX_LEN) { bBigBuffer = HeapAlloc (GetProcessHeap(), 0, b_len); CHECK_ENOUGH_MEMORY(bBigBuffer); - dwLen = convertHexCSVToHex(val_data, bBigBuffer, b_len); + dwLen = convertHexCSVToHex(val_data, bBigBuffer, (ULONG) b_len); lpbData = bBigBuffer; } else { dwLen = convertHexCSVToHex(val_data, convert, KEY_MAX_LEN); @@ -645,6 +645,7 @@ void doQueryValue(LPSTR stdInput) */ void doDeleteValue(LPSTR line) { + UNREFERENCED_PARAMETER(line); fprintf(stderr,"%s: deleteValue not yet implemented\n", getAppName()); } @@ -655,6 +656,7 @@ void doDeleteValue(LPSTR line) */ void doDeleteKey(LPSTR line) { + UNREFERENCED_PARAMETER(line); fprintf(stderr,"%s: deleteKey not yet implemented\n", getAppName()); } @@ -665,6 +667,7 @@ void doDeleteKey(LPSTR line) */ void doCreateKey(LPSTR line) { + UNREFERENCED_PARAMETER(line); fprintf(stderr,"%s: createKey not yet implemented\n", getAppName()); } @@ -735,6 +738,7 @@ void processSetValue(LPSTR line) */ void processQueryValue(LPSTR cmdline) { + UNREFERENCED_PARAMETER(cmdline); fprintf(stderr,"ERROR!!! - temporary disabled"); exit(1); #if 0 @@ -869,7 +873,7 @@ void processQueryValue(LPSTR cmdline) void processRegLines(FILE *in, CommandAPI command) { LPSTR line = NULL; /* line read from input stream */ - ULONG lineSize = REG_VAL_BUF_SIZE; + size_t lineSize = REG_VAL_BUF_SIZE; line = HeapAlloc(GetProcessHeap(), 0, lineSize); CHECK_ENOUGH_MEMORY(line); @@ -903,7 +907,7 @@ void processRegLines(FILE *in, CommandAPI command) /* Get as much as possible into the buffer, terminated either by * eof, error, eol or getting the maximum amount. Abort on error. */ - size_to_get = (size_remaining > INT_MAX ? INT_MAX : size_remaining); + size_to_get = (int) (size_remaining > INT_MAX ? INT_MAX : size_remaining); if (NULL == fgets (s, size_to_get, in)) { if (ferror(in)) { perror ("While reading input"); @@ -1142,7 +1146,7 @@ static void export_hkey(FILE *file, HKEY key, ) != ERROR_SUCCESS) { REGPROC_print_error(); } - curr_len = strlen(*reg_key_name_buf); + curr_len = (DWORD) strlen(*reg_key_name_buf); REGPROC_resize_char_buffer(reg_key_name_buf, reg_key_name_len, max_sub_key_len + curr_len + 1); REGPROC_resize_char_buffer(val_name_buf, val_name_len, @@ -1219,8 +1223,8 @@ static void export_hkey(FILE *file, HKEY key, /* position of where the next character will be printed */ /* NOTE: yes, strlen("hex:") is used even for hex(x): */ - cur_pos = strlen("\"\"=") + strlen("hex:") + - strlen(*val_name_buf); + cur_pos = (int) (strlen("\"\"=") + strlen("hex:") + + strlen(*val_name_buf)); fputs(hex_prefix, file); for (i1 = 0; i1 < val_size1; i1++) { @@ -1320,7 +1324,7 @@ BOOL export_registry_key(const TCHAR *file_name, CHAR *reg_key_name) HKEY key; REGPROC_resize_char_buffer(®_key_name_buf, ®_key_name_len, - strlen(reg_key_name)); + (DWORD) strlen(reg_key_name)); strcpy(reg_key_name_buf, reg_key_name); /* open the specified key */ @@ -1417,7 +1421,7 @@ static void delete_branch(HKEY key, ) != ERROR_SUCCESS) { REGPROC_print_error(); } - curr_len = strlen(*reg_key_name_buf); + curr_len = (DWORD) strlen(*reg_key_name_buf); REGPROC_resize_char_buffer(reg_key_name_buf, reg_key_name_len, max_sub_key_len + curr_len + 1); @@ -1465,7 +1469,7 @@ void delete_registry_key(CHAR *reg_key_name) } branch_name = getRegKeyName(reg_key_name); CHECK_ENOUGH_MEMORY(branch_name); - branch_name_len = strlen(branch_name); + branch_name_len = (DWORD) strlen(branch_name); if (!branch_name[0]) { fprintf(stderr,"%s: Can't delete registry class '%s'\n", getAppName(), reg_key_name); @@ -1694,7 +1698,7 @@ static LONG RegNextKey(HKEY hKey, LPTSTR lpSubKey, size_t iSubKeyLength) /* Try accessing a subkey */ if (RegOpenKeyEx(hKey, lpSubKey, 0, KEY_ALL_ACCESS, &hSubKey) == ERROR_SUCCESS) { - cbName = iSubKeyLength - _tcslen(lpSubKey) - 1; + cbName = (DWORD) iSubKeyLength - _tcslen(lpSubKey) - 1; lResult = RegEnumKeyEx(hSubKey, 0, lpSubKey + _tcslen(lpSubKey) + 1, &cbName, NULL, NULL, NULL, &ft); RegCloseKey(hSubKey); @@ -1791,6 +1795,8 @@ LONG RegSearch(HKEY hKey, LPTSTR lpSubKey, size_t iSubKeyLength, LONG lResult; LPCTSTR s; + UNREFERENCED_PARAMETER(dwValueIndex); + if (dwSearchFlags & (RSF_LOOKATVALUES | RSF_LOOKATDATA)) return ERROR_CALL_NOT_IMPLEMENTED; /* NYI */ diff --git a/reactos/base/applications/regedit/rsrc.rc b/reactos/base/applications/regedit/rsrc.rc index 0c273a0a934..b4eecf7e1cf 100644 --- a/reactos/base/applications/regedit/rsrc.rc +++ b/reactos/base/applications/regedit/rsrc.rc @@ -18,17 +18,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "windows.h" +#include #include "resource.h" -ID_ACCEL ACCELERATORS -{ - VK_DELETE, ID_EDIT_DELETE, VIRTKEY, NOINVERT - "^F", ID_EDIT_FIND - VK_F3, ID_EDIT_FINDNEXT, VIRTKEY, NOINVERT - VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT - VK_F1, ID_HELP_HELPTOPICS, VIRTKEY, NOINVERT -} /* define language neutral resources */ @@ -36,19 +28,19 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL /* include localised resources */ -#include "Cz.rc" -#include "De.rc" -#include "En.rc" -#include "Es.rc" -#include "Fr.rc" -#include "It.rc" -#include "Ja.rc" -#include "Nl.rc" -#include "Pl.rc" -#include "Pt.rc" -#include "Ru.rc" -#include "Si.rc" -#include "Sv.rc" -#include "Hu.rc" -#include "Uk.rc" +#include "lang/Cz.rc" +#include "lang/De.rc" +#include "lang/En.rc" +#include "lang/Es.rc" +#include "lang/Fr.rc" +#include "lang/It.rc" +#include "lang/Ja.rc" +#include "lang/Nl.rc" +#include "lang/Pl.rc" +#include "lang/Pt.rc" +#include "lang/Ru.rc" +#include "lang/Si.rc" +#include "lang/Sv.rc" +#include "lang/Hu.rc" +#include "lang/Uk.rc" diff --git a/reactos/base/applications/regedit/security.c b/reactos/base/applications/regedit/security.c index a56f7bae570..440a017a95f 100644 --- a/reactos/base/applications/regedit/security.c +++ b/reactos/base/applications/regedit/security.c @@ -28,6 +28,8 @@ DEFINE_GUID(IID_IRegKeySecurity, 0x965fc360, 0x16ff, 0x11d0, 0x0091, 0xcb,0x00,0 #if REGEDIT_IMPLEMENT_ISECURITYINFORMATION2 DEFINE_GUID(IID_IRegKeySecurity2, 0xc3ccfdb4, 0x6f88, 0x11d2, 0x00a3, 0xce,0x00,0xc0,0x4f,0xb1,0x78,0x2a); #endif + +/* FIXME: already defined in aclui.h - causing problems when compiling with MSVC/PSDK*/ DEFINE_GUID(IID_IEffectivePermission, 0x3853dc76, 0x9f35, 0x407c, 0x0088, 0xa1,0xd1,0x93,0x44,0x36,0x5f,0xbc); DEFINE_GUID(IID_ISecurityObjectTypeInfo, 0xfc3066eb, 0x79ef, 0x444b, 0x0091, 0x11,0xd1,0x8a,0x75,0xeb,0xf2,0xfa); @@ -839,7 +841,7 @@ RegKeyEditPermissions(HWND hWndOwner, LPTSTR lpKeyPath = NULL; PCRegKeySecurity RegKeySecurity; SI_OBJECT_INFO ObjectInfo; - int lnMachine = 0, lnKeyName = 0; + size_t lnMachine = 0, lnKeyName = 0; if (pfnEditSecurity == NULL) { diff --git a/reactos/base/applications/regedit/treeview.c b/reactos/base/applications/regedit/treeview.c index dfd0caff215..dc696c02cf7 100644 --- a/reactos/base/applications/regedit/treeview.c +++ b/reactos/base/applications/regedit/treeview.c @@ -37,7 +37,7 @@ static LPTSTR pathBuffer; static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKeyPath, int* pPathLen, int* pMaxLen) { TVITEM item; - int maxLen, len; + size_t maxLen, len; LPTSTR newStr; item.mask = TVIF_PARAM; @@ -60,11 +60,12 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKe item.mask = TVIF_TEXT; item.hItem = hItem; item.pszText = *pKeyPath + *pPathLen; - item.cchTextMax = maxLen = *pMaxLen - *pPathLen; + maxLen = *pMaxLen - *pPathLen; + item.cchTextMax = (int) maxLen; if (!TreeView_GetItem(hwndTV, &item)) return FALSE; len = _tcslen(item.pszText); if (len < maxLen - 1) { - *pPathLen += len; + *pPathLen += (int) len; break; } newStr = HeapReAlloc(GetProcessHeap(), 0, *pKeyPath, *pMaxLen * 2); @@ -84,7 +85,7 @@ LPCTSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey) if (!pathBuffer) pathBuffer = HeapAlloc(GetProcessHeap(), 0, 1024); if (!pathBuffer) return NULL; *pathBuffer = 0; - maxLen = HeapSize(GetProcessHeap(), 0, pathBuffer); + maxLen = (int) HeapSize(GetProcessHeap(), 0, pathBuffer); if (maxLen == -1) return NULL; if (!hItem) hItem = TreeView_GetSelection(hwndTV); if (!hItem) return NULL; @@ -210,7 +211,7 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem) if (!TreeView_GetItem(hwndTV, &tvItem)) goto done; - dwActualSize += _tcslen(&pszNodes[dwActualSize]) + 1; + dwActualSize += (DWORD) _tcslen(&pszNodes[dwActualSize]) + 1; } if (pszNodes) diff --git a/reactos/base/applications/reporterror/de.rc b/reactos/base/applications/reporterror/lang/De.rc similarity index 100% rename from reactos/base/applications/reporterror/de.rc rename to reactos/base/applications/reporterror/lang/De.rc diff --git a/reactos/base/applications/reporterror/dk.rc b/reactos/base/applications/reporterror/lang/Dk.rc similarity index 98% rename from reactos/base/applications/reporterror/dk.rc rename to reactos/base/applications/reporterror/lang/Dk.rc index eb83a24ae5e..e0b93b9657b 100644 --- a/reactos/base/applications/reporterror/dk.rc +++ b/reactos/base/applications/reporterror/lang/Dk.rc @@ -1,4 +1,4 @@ -LANGUAGE LANG_DANISH, SUBLANG_NEUTRAL +LANGUAGE LANG_DANISH, SUBLANG_DEFAULT IDD_FIRSTPAGE DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION diff --git a/reactos/base/applications/reporterror/en.rc b/reactos/base/applications/reporterror/lang/En.rc similarity index 100% rename from reactos/base/applications/reporterror/en.rc rename to reactos/base/applications/reporterror/lang/En.rc diff --git a/reactos/base/applications/reporterror/hu.rc b/reactos/base/applications/reporterror/lang/Hu.rc similarity index 96% rename from reactos/base/applications/reporterror/hu.rc rename to reactos/base/applications/reporterror/lang/Hu.rc index b4ccf4bdf87..20d76a12e09 100644 --- a/reactos/base/applications/reporterror/hu.rc +++ b/reactos/base/applications/reporterror/lang/Hu.rc @@ -2,7 +2,7 @@ * Copyright 2005 Robert Horvath - Hungarian translation - talley at cubeclub.hu */ -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_FIRSTPAGE DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION diff --git a/reactos/base/applications/reporterror/Ja.rc b/reactos/base/applications/reporterror/lang/Ja.rc similarity index 100% rename from reactos/base/applications/reporterror/Ja.rc rename to reactos/base/applications/reporterror/lang/Ja.rc diff --git a/reactos/base/applications/reporterror/Nl.rc b/reactos/base/applications/reporterror/lang/Nl.rc similarity index 100% rename from reactos/base/applications/reporterror/Nl.rc rename to reactos/base/applications/reporterror/lang/Nl.rc diff --git a/reactos/base/applications/reporterror/lang/No.rc b/reactos/base/applications/reporterror/lang/No.rc new file mode 100644 index 00000000000..7e815adbef7 --- /dev/null +++ b/reactos/base/applications/reporterror/lang/No.rc @@ -0,0 +1,54 @@ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +IDD_FIRSTPAGE DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Feil rapportering assistent" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "systemet gjenopprettet fra feilen.", -1, 115, 15, 160, 24 + LTEXT "Vil du rapportere feilen til ReactOS stiftelse?", -1, 115, 35, 160, 17 +END + +IDD_SUBMIT_REPORT DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Feil rapportering assistent" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "Vennligst beskriv hva du prøvde å gjøre når du oppdaget feilen.\n\nTrykk på 'Neste' for å sende rapporten til ReactOS foundation eller trykk 'Avbryt' for å ikke sende noe informasjon.",-1,10,0,225,40 + LTEXT "Din e-post addresse (valgfri):",-1,10,40,120,20 + EDITTEXT IDE_SUBMIT_REPORT_YOUR_EMAIL, 110,40,150,12 + LTEXT "Beskrivelse av problemet (valgfri):",-1,10,55,120,20 + EDITTEXT IDE_SUBMIT_REPORT_PROBLEM_DESCRIPTION,10,65,250,55,ES_WANTRETURN|ES_MULTILINE|ES_LEFT|WS_BORDER|WS_TABSTOP|WS_VSCROLL +END + +IDD_SUBMITTING_REPORT DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Feil rapportering assistent" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "{STATUS}",IDC_SUBMISSION_STATUS,25,58,225,8 + CONTROL "", IDC_SUBMITTING_IN_PROGRESS, "msctls_progress32", PBS_MARQUEE | WS_CHILD | WS_VISIBLE | WS_BORDER, 25, 80, 225, 8 +END + +IDD_SUBMITTED_REPORT DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Feil rapportering assistent" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "Din feil rapport ble vellykket sent til ReactOS stiftelse.",-1,25,5,225,20 +END + +STRINGTABLE +BEGIN + IDS_WIZARD_NAME "Rapporter feil til ReactOS stiftelse" + IDS_FAILED_TO_CONTACT_SERVER "systemet ble utilgjengelig for å kontakte feil rapportering server.\nVennligst vær sikker på at systemet er koblet til internett." + IDS_FAILED_TO_DELIVER_ERROR_REPORT "systemet var ikke i stand til levere feil rapporten." +END + +STRINGTABLE +BEGIN + IDS_CONTACTING_SERVER "Kontakter feil rapportering server..." + IDS_FAILED_TO_INITIALIZE_WINSOCK "Mislykkes å initialise winsock (windows feil kode %d)" + IDS_FAILED_TO_LOCATE_SERVER "Mislykket å kontakte feil rapportering server" +END + diff --git a/reactos/base/applications/reporterror/ru.rc b/reactos/base/applications/reporterror/lang/Ru.rc similarity index 98% rename from reactos/base/applications/reporterror/ru.rc rename to reactos/base/applications/reporterror/lang/Ru.rc index ebbbebc0d0e..0906a887f0c 100644 --- a/reactos/base/applications/reporterror/ru.rc +++ b/reactos/base/applications/reporterror/lang/Ru.rc @@ -1,4 +1,4 @@ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT IDD_FIRSTPAGE DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION diff --git a/reactos/base/applications/reporterror/sv.rc b/reactos/base/applications/reporterror/lang/Sv.rc similarity index 100% rename from reactos/base/applications/reporterror/sv.rc rename to reactos/base/applications/reporterror/lang/Sv.rc diff --git a/reactos/base/applications/reporterror/reporterror.c b/reactos/base/applications/reporterror/reporterror.c index fd08bd89875..6d9f675a43d 100644 --- a/reactos/base/applications/reporterror/reporterror.c +++ b/reactos/base/applications/reporterror/reporterror.c @@ -28,7 +28,7 @@ #include #include #include -#include "reporterror.h" +#include "resource.h" static LPSTR ErrorReportingServerName = "errors.reactos.com"; static HINSTANCE hAppInstance; diff --git a/reactos/base/applications/reporterror/reporterror.rc b/reactos/base/applications/reporterror/reporterror.rc index 88075a086ac..4f17a04be19 100644 --- a/reactos/base/applications/reporterror/reporterror.rc +++ b/reactos/base/applications/reporterror/reporterror.rc @@ -1,12 +1,12 @@ #include -#include "reporterror.h" +#include "resource.h" #define REACTOS_STR_FILE_DESCRIPTION "ReactOS Error Reporting Assistant\0" #define REACTOS_STR_INTERNAL_NAME "reporterror\0" #define REACTOS_STR_ORIGINAL_FILENAME "reporterror.exe\0" #include -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL 1 24 DISCARDABLE "manifest.xml" @@ -14,11 +14,4 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US IDB_WATERMARK BITMAP "resources/watermark.bmp" IDB_HEADER BITMAP "resources/header.bmp" -#include "en.rc" -#include "de.rc" -#include "dk.rc" -#include "Ja.rc" -#include "sv.rc" -#include "hu.rc" -#include "Nl.rc" -#include "ru.rc" +#include "rsrc.rc" diff --git a/reactos/base/applications/reporterror/reporterror.h b/reactos/base/applications/reporterror/resource.h similarity index 100% rename from reactos/base/applications/reporterror/reporterror.h rename to reactos/base/applications/reporterror/resource.h diff --git a/reactos/base/applications/reporterror/rsrc.rc b/reactos/base/applications/reporterror/rsrc.rc new file mode 100644 index 00000000000..7ef5b8a5637 --- /dev/null +++ b/reactos/base/applications/reporterror/rsrc.rc @@ -0,0 +1,20 @@ + + +#include +#include "resource.h" + +/* define language neutral resources */ + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +/* include localised resources */ +#include "lang/En.rc" +#include "lang/De.rc" +#include "lang/Dk.rc" +#include "lang/Ja.rc" +#include "lang/Sv.rc" +#include "lang/Hu.rc" +#include "lang/Nl.rc" +#include "lang/Ru.rc" +#include "lang/No.rc" + diff --git a/reactos/base/applications/sc/control.c b/reactos/base/applications/sc/control.c index 2fac5fe6198..9d2878b306f 100644 --- a/reactos/base/applications/sc/control.c +++ b/reactos/base/applications/sc/control.c @@ -1,61 +1,101 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS SC utility - * FILE: subsys/system/sc/control.c - * PURPOSE: control ReactOS services - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * Ged Murphy 20/10/05 Created + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/control.c + * PURPOSE: Stops, pauses and resumes a service + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy * */ #include "sc.h" -/* - * handles the following commands: - * control, continue, interrogate, pause, stop - */ - -BOOL Control(DWORD Control, LPCTSTR ServiceName, LPCTSTR *Args) +BOOL +Control(DWORD Control, + LPCTSTR ServiceName, + LPCTSTR *Args, + INT ArgCount) { - SC_HANDLE hSc; + SC_HANDLE hSCManager = NULL; + SC_HANDLE hSc = NULL; SERVICE_STATUS Status; + DWORD dwDesiredAccess = 0; -#ifdef SCDBG - /* testing */ - _tprintf(_T("service to control - %s\n\n"), ServiceName); - _tprintf(_T("command - %lu\n\n"), Control); - _tprintf(_T("Arguments :\n")); - while (*Args) +#ifdef SCDBG + LPCTSTR *TmpArgs = Args; + INT TmpCnt = ArgCount; + _tprintf(_T("service to control - %s\n"), ServiceName); + _tprintf(_T("command - %lu\n"), Control); + _tprintf(_T("Arguments:\n")); + while (TmpCnt) { - printf("%s\n", *Args); - Args++; + _tprintf(_T(" %s\n"), *TmpArgs); + TmpArgs++; + TmpCnt--; } + _tprintf(_T("\n")); #endif /* SCDBG */ - hSc = OpenService(hSCManager, ServiceName, - SERVICE_INTERROGATE | SERVICE_PAUSE_CONTINUE | - SERVICE_STOP | SERVICE_USER_DEFINED_CONTROL | - SERVICE_QUERY_STATUS); - - if (hSc == NULL) + switch (Control) { - _tprintf(_T("openService failed\n")); - ReportLastError(); - return FALSE; + case SERVICE_CONTROL_STOP: + dwDesiredAccess = SERVICE_STOP; + break; + + case SERVICE_CONTROL_PAUSE: + dwDesiredAccess = SERVICE_PAUSE_CONTINUE; + break; + + case SERVICE_CONTROL_CONTINUE: + dwDesiredAccess = SERVICE_PAUSE_CONTINUE; + break; + + case SERVICE_CONTROL_INTERROGATE: + dwDesiredAccess = SERVICE_INTERROGATE; + break; + + case SERVICE_CONTROL_SHUTDOWN: + dwDesiredAccess = 0; + break; + } - if (! ControlService(hSc, Control, &Status)) + hSCManager = OpenSCManager(NULL, + NULL, + SC_MANAGER_CONNECT); + if (hSCManager != NULL) { - _tprintf(_T("[SC] controlService FAILED %lu:\n\n"), GetLastError()); - ReportLastError(); - return FALSE; + hSc = OpenService(hSCManager, + ServiceName, + dwDesiredAccess); + if (hSc != NULL) + { + if (ControlService(hSc, + Control, + &Status)) + { + SERVICE_STATUS_PROCESS StatusEx; + + /* FIXME: lazy hack ;) */ + CopyMemory(&StatusEx, &Status, sizeof(Status)); + StatusEx.dwProcessId = 0; + StatusEx.dwServiceFlags = 0; + + PrintService(ServiceName, + &StatusEx, + FALSE); + + CloseServiceHandle(hSc); + CloseServiceHandle(hSCManager); + + return TRUE; + } + } + else + _tprintf(_T("[SC] OpenService FAILED %lu:\n\n"), GetLastError()); } - CloseServiceHandle(hSc); - - /* print the status information */ - - return TRUE; - + ReportLastError(); + if (hSc) CloseServiceHandle(hSc); + if (hSCManager) CloseServiceHandle(hSCManager); + return FALSE; } diff --git a/reactos/base/applications/sc/create.c b/reactos/base/applications/sc/create.c index 89e1ea5a2e8..a8bfe21e36d 100644 --- a/reactos/base/applications/sc/create.c +++ b/reactos/base/applications/sc/create.c @@ -1,11 +1,9 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS SC utility - * FILE: subsys/system/sc/create.c - * PURPOSE: control ReactOS services - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * Ged Murphy 20/10/05 Created + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/create.c + * PURPOSE: Create a service + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy * */ @@ -13,46 +11,79 @@ BOOL Create(LPCTSTR ServiceName, LPCTSTR *ServiceArgs) { + SC_HANDLE hSCManager; SC_HANDLE hSc; - LPCTSTR BinaryPathName = *++ServiceArgs; -// LPCTSTR *Options = ++ServiceArgs; - - if ((! ServiceName) || (! BinaryPathName)) - return CreateUsage(); + BOOL bRet = FALSE; -#ifdef SCDBG - /* testing */ - printf("service to create - %s\n", ServiceName); - printf("Binary path - %s\n", BinaryPathName); - printf("Arguments :\n"); - while (*Options) + DWORD dwServiceType = SERVICE_WIN32_OWN_PROCESS; + DWORD dwStartType = SERVICE_DEMAND_START; + DWORD dwErrorControl = SERVICE_ERROR_NORMAL; + LPCTSTR lpBinaryPathName = NULL; + LPCTSTR lpLoadOrderGroup = NULL; + LPDWORD lpdwTagId = NULL; + LPCTSTR lpDependencies = NULL; + LPCTSTR lpServiceStartName = NULL; + LPCTSTR lpPassword = NULL; + + /* quick hack to get it working */ + lpBinaryPathName = *ServiceArgs; + +#ifdef SCDBG + _tprintf(_T("service name - %s\n"), ServiceName); + _tprintf(_T("display name - %s\n"), ServiceName); + _tprintf(_T("service type - %lu\n"), dwServiceType); + _tprintf(_T("start type - %lu\n"), dwStartType); + _tprintf(_T("error control - %lu\n"), dwErrorControl); + _tprintf(_T("Binary path - %s\n"), lpBinaryPathName); + _tprintf(_T("load order group - %s\n"), lpLoadOrderGroup); + _tprintf(_T("tag - %lu\n"), *lpdwTagId); + _tprintf(_T("dependincies - %s\n"), lpDependencies); + _tprintf(_T("account start name - %s\n"), lpServiceStartName); + _tprintf(_T("account password - %s\n"), lpPassword); +#endif + + if (!ServiceName) { - printf("%s\n", *Options); - Options++; + CreateUsage(); + return FALSE; } -#endif - hSc = CreateService(hSCManager, - ServiceName, - ServiceName, - SERVICE_ALL_ACCESS, - SERVICE_WIN32_OWN_PROCESS, - SERVICE_DEMAND_START, - SERVICE_ERROR_NORMAL, - BinaryPathName, - NULL, - NULL, - NULL, - NULL, - NULL); - if (hSc == NULL) + hSCManager = OpenSCManager(NULL, + NULL, + SC_MANAGER_CREATE_SERVICE); + if (hSCManager == NULL) { - _tprintf(_T("CreateService failed\n")); ReportLastError(); return FALSE; } - _tprintf(_T("[SC] CreateService SUCCESS\n")); - CloseServiceHandle(hSc); - return TRUE; + hSc = CreateService(hSCManager, + ServiceName, + ServiceName, + SERVICE_ALL_ACCESS, + dwServiceType, + dwStartType, + dwErrorControl, + lpBinaryPathName, + lpLoadOrderGroup, + lpdwTagId, + lpDependencies, + lpServiceStartName, + lpPassword); + + if (hSc == NULL) + { + ReportLastError(); + CloseServiceHandle(hSCManager); + } + else + { + _tprintf(_T("[SC] CreateService SUCCESS\n")); + + CloseServiceHandle(hSc); + CloseServiceHandle(hSCManager); + bRet = TRUE; + } + + return bRet; } diff --git a/reactos/base/applications/sc/delete.c b/reactos/base/applications/sc/delete.c index 2873108ee3e..aac5b4a43e0 100644 --- a/reactos/base/applications/sc/delete.c +++ b/reactos/base/applications/sc/delete.c @@ -1,11 +1,9 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS SC utility - * FILE: subsys/system/sc/delete.c - * PURPOSE: control ReactOS services - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * Ged Murphy 20/10/05 Created + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/delete.c + * PURPOSE: Delete a service + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy * */ @@ -13,30 +11,37 @@ BOOL Delete(LPCTSTR ServiceName) { - SC_HANDLE hSc; + SC_HANDLE hSCManager = NULL; + SC_HANDLE hSc = NULL; -#ifdef SCDBG - /* testing */ - printf("service to delete - %s\n\n", ServiceName); +#ifdef SCDBG + _tprintf(_T("service to delete - %s\n\n"), ServiceName); #endif - hSc = OpenService(hSCManager, ServiceName, DELETE); - - if (hSc == NULL) + hSCManager = OpenSCManager(NULL, + NULL, + SC_MANAGER_CONNECT); + if (hSCManager != NULL) { - _tprintf(_T("openService failed\n")); - ReportLastError(); - return FALSE; + hSc = OpenService(hSCManager, ServiceName, DELETE); + if (hSc != NULL) + { + if (DeleteService(hSc)) + { + _tprintf(_T("[SC] DeleteService SUCCESS\n")); + + CloseServiceHandle(hSc); + CloseServiceHandle(hSCManager); + + return TRUE; + } + } } - if (! DeleteService(hSc)) - { - _tprintf(_T("DeleteService failed\n")); - ReportLastError(); - return FALSE; - } + ReportLastError(); - _tprintf(_T("[SC] DeleteService SUCCESS\n")); - CloseServiceHandle(hSc); - return TRUE; + if (hSc) CloseServiceHandle(hSc); + if (hSCManager) CloseServiceHandle(hSCManager); + + return FALSE; } diff --git a/reactos/base/applications/sc/print.c b/reactos/base/applications/sc/print.c new file mode 100644 index 00000000000..ead5533508b --- /dev/null +++ b/reactos/base/applications/sc/print.c @@ -0,0 +1,105 @@ +/* + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/print.c + * PURPOSE: print service info + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy + * + */ + +#include "sc.h" + + +VOID +PrintService(LPCTSTR lpServiceName, + LPSERVICE_STATUS_PROCESS pStatus, + BOOL bExtended) +{ + _tprintf(_T("SERVICE_NAME: %s\n"), lpServiceName); + + _tprintf(_T("\tTYPE : %x "), + (unsigned int)pStatus->dwServiceType); + switch (pStatus->dwServiceType) + { + case SERVICE_KERNEL_DRIVER: + _tprintf(_T("KERNEL_DRIVER\n")); + break; + + case SERVICE_FILE_SYSTEM_DRIVER: + _tprintf(_T("FILE_SYSTEM_DRIVER\n")); + break; + + case SERVICE_WIN32_OWN_PROCESS: + _tprintf(_T("WIN32_OWN_PROCESS\n")); + break; + + case SERVICE_WIN32_SHARE_PROCESS: + _tprintf(_T("WIN32_SHARE_PROCESS\n")); + break; + + case SERVICE_WIN32_OWN_PROCESS + SERVICE_INTERACTIVE_PROCESS: + _tprintf(_T("WIN32_OWN_PROCESS (interactive)\n")); + break; + + case SERVICE_WIN32_SHARE_PROCESS + SERVICE_INTERACTIVE_PROCESS: + _tprintf(_T("WIN32_SHARE_PROCESS (interactive)\n")); + break; + + default : _tprintf(_T("\n")); break; + } + + _tprintf(_T("\tSTATE : %x "), + (unsigned int)pStatus->dwCurrentState); + + switch (pStatus->dwCurrentState) + { + case 1 : _tprintf(_T("STOPPED\n")); break; + case 2 : _tprintf(_T("START_PENDING\n")); break; + case 3 : _tprintf(_T("STOP_PENDING\n")); break; + case 4 : _tprintf(_T("RUNNING\n")); break; + case 5 : _tprintf(_T("CONTINUE_PENDING\n")); break; + case 6 : _tprintf(_T("PAUSE_PENDING\n")); break; + case 7 : _tprintf(_T("PAUSED\n")); break; + default : _tprintf(_T("\n")); break; + } + + _tprintf(_T("\t\t\t\t(")); + + if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_STOP) + _tprintf(_T("STOPPABLE,")); + else + _tprintf(_T("NOT_STOPPABLE,")); + + if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_PAUSE_CONTINUE) + _tprintf(_T("PAUSABLE,")); + else + _tprintf(_T("NOT_PAUSABLE,")); + + if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_SHUTDOWN) + _tprintf(_T("ACCEPTS_SHUTDOWN")); + else + _tprintf(_T("IGNORES_SHUTDOWN")); + + _tprintf(_T(")\n")); + + _tprintf(_T("\tWIN32_EXIT_CODE : %d (0x%x)\n"), + (unsigned int)pStatus->dwWin32ExitCode, + (unsigned int)pStatus->dwWin32ExitCode); + _tprintf(_T("\tSERVICE_EXIT_CODE : %d (0x%x)\n"), + (unsigned int)pStatus->dwServiceSpecificExitCode, + (unsigned int)pStatus->dwServiceSpecificExitCode); + _tprintf(_T("\tCHECKPOINT : 0x%x\n"), + (unsigned int)pStatus->dwCheckPoint); + _tprintf(_T("\tWAIT_HINT : 0x%x\n"), + (unsigned int)pStatus->dwWaitHint); + + if (bExtended) + { + _tprintf(_T("\tPID : %lu\n"), + pStatus->dwProcessId); + _tprintf(_T("\tFLAGS : %lu\n"), + pStatus->dwServiceFlags); + } + + _tprintf(_T("\n")); +} diff --git a/reactos/base/applications/sc/query.c b/reactos/base/applications/sc/query.c index c9515844690..128c587b3af 100644 --- a/reactos/base/applications/sc/query.c +++ b/reactos/base/applications/sc/query.c @@ -1,11 +1,9 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS SC utility - * FILE: subsys/system/sc/query.c - * PURPOSE: control ReactOS services - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * Ged Murphy 20/10/05 Created + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/query.c + * PURPOSE: queries service info + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy * */ /* @@ -16,312 +14,235 @@ #include "sc.h" -/* local function decs */ -VOID PrintService(BOOL bExtended); -BOOL EnumServices(DWORD ServiceType, DWORD ServiceState); -BOOL QueryService(LPCTSTR ServiceName, BOOL bExtended); - -/* global variables */ -static ENUM_SERVICE_STATUS_PROCESS *pServiceStatus = NULL; -DWORD NumServices = 0; +LPTSTR QueryOpts[] = { + _T("type="), + _T("state="), + _T("bufsize="), + _T("ri="), + _T("group="), +}; -BOOL -Query(LPCTSTR ServiceName, LPCTSTR *ServiceArgs, BOOL bExtended) +LPSERVICE_STATUS_PROCESS +QueryService(LPCTSTR ServiceName) { - if (! ServiceName) /* display all running services and drivers */ - { - /* get default values */ - EnumServices(SERVICE_WIN32, SERVICE_ACTIVE); - - /* print default values */ - PrintService(bExtended); - } - else if (_tcsicmp(ServiceName, _T("type=")) == 0) - { - LPCTSTR Type = *ServiceArgs; - - if (_tcsicmp(Type, _T("driver")) == 0) - EnumServices(SERVICE_DRIVER, SERVICE_ACTIVE); - else if (_tcsicmp(Type, _T("service")) == 0) - EnumServices(SERVICE_WIN32, SERVICE_ACTIVE); - else if (_tcsicmp(Type, _T("all")) == 0) - EnumServices(SERVICE_DRIVER|SERVICE_WIN32, SERVICE_ACTIVE); - else - { - _tprintf(_T("\nERROR following \"type=\"!\n")); - _tprintf(_T("Must be \"driver\" or \"service\" or \"all\"\n")); - } - - PrintService(bExtended); - } - else if(_tcsicmp(ServiceName, _T("state=")) == 0) - { - LPCTSTR State = *ServiceArgs; - - if (_tcsicmp(State, _T("inactive")) == 0) - EnumServices(SERVICE_WIN32, SERVICE_INACTIVE); - else if (_tcsicmp(State, _T("all")) == 0) - EnumServices(SERVICE_WIN32, SERVICE_STATE_ALL); - else - { - _tprintf(_T("\nERROR following \"state=\"!\n")); - _tprintf(_T("Must be \"active\" or \"inactive\" or \"all\"\n")); - } - - PrintService(bExtended); - } -/* - else if(_tcsicmp(ServiceName, _T("bufsize="))) - - else if(_tcsicmp(ServiceName, _T("ri="))) - - else if(_tcsicmp(ServiceName, _T("group="))) -*/ - else /* print only the service requested */ - { - QueryService(ServiceName, bExtended); - } - - return TRUE; -} - - -BOOL -QueryService(LPCTSTR ServiceName, BOOL bExtended) -{ - SERVICE_STATUS_PROCESS *pServiceInfo = NULL; + SC_HANDLE hSCManager; + LPSERVICE_STATUS_PROCESS pServiceInfo = NULL; SC_HANDLE hSc; DWORD BufSiz = 0; DWORD BytesNeeded = 0; DWORD Ret; - hSc = OpenService(hSCManager, ServiceName, SERVICE_QUERY_STATUS); - - if (hSc == NULL) + hSCManager = OpenSCManager(NULL, + NULL, + SC_MANAGER_CONNECT); + if (hSCManager == NULL) { - _tprintf(_T("QueryService: openService failed\n")); ReportLastError(); - return FALSE; + return NULL; } + hSc = OpenService(hSCManager, + ServiceName, + SERVICE_QUERY_STATUS); + if (hSc == NULL) + goto fail; + Ret = QueryServiceStatusEx(hSc, - SC_STATUS_PROCESS_INFO, - NULL, - BufSiz, - &BytesNeeded); - + SC_STATUS_PROCESS_INFO, + NULL, + BufSiz, + &BytesNeeded); if ((Ret != 0) || (GetLastError() != ERROR_INSUFFICIENT_BUFFER)) + goto fail; + + pServiceInfo = (LPSERVICE_STATUS_PROCESS)HeapAlloc(GetProcessHeap(), + 0, + BytesNeeded); + if (pServiceInfo == NULL) + goto fail; + + if (!QueryServiceStatusEx(hSc, + SC_STATUS_PROCESS_INFO, + (LPBYTE)pServiceInfo, + BytesNeeded, + &BytesNeeded)) + { + goto fail; + } + + return pServiceInfo; + +fail: + ReportLastError(); + if (pServiceInfo) HeapFree(GetProcessHeap(), 0, pServiceInfo); + if (hSc) CloseServiceHandle(hSc); + if (hSCManager) CloseServiceHandle(hSCManager); + return NULL; +} + + +static BOOL +EnumServices(ENUM_SERVICE_STATUS_PROCESS **pServiceStatus, + DWORD ServiceType, + DWORD ServiceState) +{ + SC_HANDLE hSCManager; + DWORD BufSize = 0; + DWORD BytesNeeded = 0; + DWORD ResumeHandle = 0; + DWORD NumServices = 0; + DWORD Ret; + + hSCManager = OpenSCManager(NULL, + NULL, + SC_MANAGER_ENUMERATE_SERVICE); + if (hSCManager == NULL) { - _tprintf(_T("QueryService: First call to QueryServiceStatusEx failed : ")); ReportLastError(); return FALSE; } - else /* Call function again if required size was returned */ - { - /* reserve memory for service info array */ - pServiceInfo = (SERVICE_STATUS_PROCESS *) - HeapAlloc(GetProcessHeap(), 0, BytesNeeded); - if (pServiceInfo == NULL) - { - _tprintf(_T("QueryService: Failed to allocate memory : ")); - ReportLastError(); - return FALSE; - } - /* fill array with service info */ - if (! QueryServiceStatusEx(hSc, - SC_STATUS_PROCESS_INFO, - (LPBYTE)pServiceInfo, - BytesNeeded, - &BytesNeeded)) + Ret = EnumServicesStatusEx(hSCManager, + SC_ENUM_PROCESS_INFO, + ServiceType, + ServiceState, + (LPBYTE)*pServiceStatus, + BufSize, + &BytesNeeded, + &NumServices, + &ResumeHandle, + 0); + + if ((Ret == 0) && (GetLastError() == ERROR_MORE_DATA)) + { + *pServiceStatus = (ENUM_SERVICE_STATUS_PROCESS *) + HeapAlloc(GetProcessHeap(), + 0, + BytesNeeded); + if (*pServiceStatus != NULL) { - _tprintf(_T("QueryService: Second call to QueryServiceStatusEx failed : ")); - ReportLastError(); - HeapFree(GetProcessHeap(), 0, pServiceInfo); - return FALSE; + if (EnumServicesStatusEx(hSCManager, + SC_ENUM_PROCESS_INFO, + ServiceType, + ServiceState, + (LPBYTE)*pServiceStatus, + BytesNeeded, + &BytesNeeded, + &NumServices, + &ResumeHandle, + 0)) + { + return NumServices; + } } } - - _tprintf(_T("SERVICE_NAME: %s\n"), ServiceName); + ReportLastError(); + if (pServiceStatus) + HeapFree(GetProcessHeap(), 0, *pServiceStatus); - _tprintf(_T("\tTYPE : %x "), - (unsigned int)pServiceInfo->dwServiceType); - switch (pServiceInfo->dwServiceType) - { - case 1 : _tprintf(_T("KERNEL_DRIVER\n")); break; - case 2 : _tprintf(_T("FILE_SYSTEM_DRIVER\n")); break; - case 16 : _tprintf(_T("WIN32_OWN_PROCESS\n")); break; - case 32 : _tprintf(_T("WIN32_SHARE_PROCESS\n")); break; - default : _tprintf(_T("\n")); break; - } - - _tprintf(_T("\tSTATE : %x "), - (unsigned int)pServiceInfo->dwCurrentState); - - switch (pServiceInfo->dwCurrentState) - { - case 1 : _tprintf(_T("STOPPED\n")); break; - case 2 : _tprintf(_T("START_PENDING\n")); break; - case 3 : _tprintf(_T("STOP_PENDING\n")); break; - case 4 : _tprintf(_T("RUNNING\n")); break; - case 5 : _tprintf(_T("CONTINUE_PENDING\n")); break; - case 6 : _tprintf(_T("PAUSE_PENDING\n")); break; - case 7 : _tprintf(_T("PAUSED\n")); break; - default : _tprintf(_T("\n")); break; - } - -// _tprintf(_T("\n\taccepted : 0x%x\n\n"), -// pServiceStatus[i].ServiceStatusProcess.dwControlsAccepted); -// (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN) - - _tprintf(_T("\tWIN32_EXIT_CODE : %d (0x%x)\n"), - (unsigned int)pServiceInfo->dwWin32ExitCode, - (unsigned int)pServiceInfo->dwWin32ExitCode); - _tprintf(_T("\tSERVICE_EXIT_CODE : %d (0x%x)\n"), - (unsigned int)pServiceInfo->dwServiceSpecificExitCode, - (unsigned int)pServiceInfo->dwServiceSpecificExitCode); - _tprintf(_T("\tCHECKPOINT : 0x%x\n"), - (unsigned int)pServiceInfo->dwCheckPoint); - _tprintf(_T("\tWAIT_HINT : 0x%x\n"), - (unsigned int)pServiceInfo->dwWaitHint); - if (bExtended) - { - _tprintf(_T("\tPID : %lu\n"), - pServiceInfo->dwProcessId); - _tprintf(_T("\tFLAGS : %lu\n"), - pServiceInfo->dwServiceFlags); - } - - HeapFree(GetProcessHeap(), 0, pServiceInfo); - - return TRUE; + return NumServices; } BOOL -EnumServices(DWORD ServiceType, DWORD ServiceState) +Query(LPCTSTR *ServiceArgs, + DWORD ArgCount, + BOOL bExtended) { - DWORD BufSize = 0; - DWORD BytesNeeded = 0; - DWORD ResumeHandle = 0; - DWORD Ret; + LPENUM_SERVICE_STATUS_PROCESS pServiceStatus = NULL; + DWORD NumServices = 0; + //DWORD ServiceType; + //DWORD ServiceState; + BOOL bServiceName = TRUE; + DWORD OptSize, i; - /* determine required buffer size */ - Ret = EnumServicesStatusEx(hSCManager, - SC_ENUM_PROCESS_INFO, - ServiceType, - ServiceState, - (LPBYTE)pServiceStatus, - BufSize, - &BytesNeeded, - &NumServices, - &ResumeHandle, - 0); + LPCTSTR *TmpArgs; + INT TmpCnt; - if ((Ret != 0) && (GetLastError() != ERROR_MORE_DATA)) +#ifdef SCDBG + TmpArgs = ServiceArgs; + TmpCnt = ArgCount; + _tprintf(_T("Arguments:\n")); + while (TmpCnt) { - _tprintf(_T("EnumServices: First call to EnumServicesStatusEx failed : ")); - ReportLastError(); + _tprintf(_T(" %s\n"), *TmpArgs); + TmpArgs++; + TmpCnt--; + } + _tprintf(_T("\n")); +#endif /* SCDBG */ + + /* display all running services and drivers */ + if (ArgCount == 0) + { + NumServices = EnumServices(&pServiceStatus, + SERVICE_WIN32, + SERVICE_ACTIVE); + + if (NumServices != 0) + { + for (i=0; i < NumServices; i++) + { + PrintService(pServiceStatus[i].lpServiceName, + &pServiceStatus[i].ServiceStatusProcess, + bExtended); + } + + _tprintf(_T("number : %lu\n"), NumServices); + + if (pServiceStatus) + HeapFree(GetProcessHeap(), 0, pServiceStatus); + + return TRUE; + } + return FALSE; } - else /* Call function again if required size was returned */ - { - /* reserve memory for service info array */ - pServiceStatus = (ENUM_SERVICE_STATUS_PROCESS *) - HeapAlloc(GetProcessHeap(), 0, BytesNeeded); - if (pServiceStatus == NULL) - { - _tprintf(_T("EnumServices: Failed to allocate memory : ")); - ReportLastError(); - return FALSE; - } - /* fill array with service info */ - if (! EnumServicesStatusEx(hSCManager, - SC_ENUM_PROCESS_INFO, - ServiceType, - ServiceState, - (LPBYTE)pServiceStatus, - BytesNeeded, - &BytesNeeded, - &NumServices, - &ResumeHandle, - 0)) + TmpArgs = ServiceArgs; + TmpCnt = ArgCount; + OptSize = sizeof(QueryOpts) / sizeof(QueryOpts[0]); + while (TmpCnt--) + { + for (i=0; i < OptSize; i++) { - _tprintf(_T("EnumServices: Second call to EnumServicesStatusEx failed : ")); - ReportLastError(); - HeapFree(GetProcessHeap(), 0, pServiceStatus); - return FALSE; + if (!lstrcmpi(*TmpArgs, QueryOpts[i])) + { + bServiceName = FALSE; + } + } + TmpArgs++; + } + + + /* FIXME: parse options */ + + + /* print only the service requested */ + if (bServiceName) + { + LPSERVICE_STATUS_PROCESS pStatus; + LPCTSTR ServiceName = *ServiceArgs; + + pStatus = QueryService(ServiceName); + if (bExtended) + { + PrintService(ServiceName, + pStatus, + TRUE); + } + else + { + PrintService(ServiceName, + pStatus, + FALSE); } } + if (pServiceStatus) + HeapFree(GetProcessHeap(), 0, pServiceStatus); + return TRUE; } - - -VOID -PrintService(BOOL bExtended) -{ - DWORD i; - - for (i=0; i < NumServices; i++) - { - - _tprintf(_T("SERVICE_NAME: %s\n"), pServiceStatus[i].lpServiceName); - _tprintf(_T("DISPLAY_NAME: %s\n"), pServiceStatus[i].lpDisplayName); - - _tprintf(_T("\tTYPE : %x "), - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwServiceType); - switch (pServiceStatus[i].ServiceStatusProcess.dwServiceType) - { - case 1 : _tprintf(_T("KERNEL_DRIVER\n")); break; - case 2 : _tprintf(_T("FILE_SYSTEM_DRIVER\n")); break; - case 16 : _tprintf(_T("WIN32_OWN_PROCESS\n")); break; - case 32 : _tprintf(_T("WIN32_SHARE_PROCESS\n")); break; - default : _tprintf(_T("\n")); break; - } - - _tprintf(_T("\tSTATE : %x "), - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwCurrentState); - - switch (pServiceStatus[i].ServiceStatusProcess.dwCurrentState) - { - case 1 : _tprintf(_T("STOPPED\n")); break; - case 2 : _tprintf(_T("START_PENDING\n")); break; - case 3 : _tprintf(_T("STOP_PENDING\n")); break; - case 4 : _tprintf(_T("RUNNING\n")); break; - case 5 : _tprintf(_T("CONTINUE_PENDING\n")); break; - case 6 : _tprintf(_T("PAUSE_PENDING\n")); break; - case 7 : _tprintf(_T("PAUSED\n")); break; - default : _tprintf(_T("\n")); break; - } - - // _tprintf(_T("\n\taccepted : 0x%x\n\n"), - // pServiceStatus[i].ServiceStatusProcess.dwControlsAccepted); - // (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN) - - _tprintf(_T("\tWIN32_EXIT_CODE : %d (0x%x)\n"), - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwWin32ExitCode, - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwWin32ExitCode); - _tprintf(_T("\tSERVICE_EXIT_CODE : %d (0x%x)\n"), - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwServiceSpecificExitCode, - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwServiceSpecificExitCode); - _tprintf(_T("\tCHECKPOINT : 0x%x\n"), - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwCheckPoint); - _tprintf(_T("\tWAIT_HINT : 0x%x\n"), - (unsigned int)pServiceStatus[i].ServiceStatusProcess.dwWaitHint); - if (bExtended) - { - _tprintf(_T("\tPID : %lu\n"), - pServiceStatus[i].ServiceStatusProcess.dwProcessId); - _tprintf(_T("\tFLAGS : %lu\n"), - pServiceStatus[i].ServiceStatusProcess.dwServiceFlags); - } - - _tprintf(_T("\n")); - } - - _tprintf(_T("number : %lu\n"), NumServices); -} diff --git a/reactos/base/applications/sc/sc.c b/reactos/base/applications/sc/sc.c index de8333d5306..acf3c840efc 100644 --- a/reactos/base/applications/sc/sc.c +++ b/reactos/base/applications/sc/sc.c @@ -1,11 +1,9 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS SC utility - * FILE: subsys/system/sc/sc.c - * PURPOSE: control ReactOS services - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * Ged Murphy 20/10/05 Created + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/sc.c + * PURPOSE: parse command line + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy * */ @@ -13,13 +11,14 @@ SC_HANDLE hSCManager; -DWORD ReportLastError(VOID) +VOID +ReportLastError(VOID) { LPVOID lpMsgBuf; DWORD RetVal; DWORD ErrorCode = GetLastError(); - if (ErrorCode != ERROR_SUCCESS) + if (ErrorCode != ERROR_SUCCESS) { RetVal = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | @@ -34,106 +33,158 @@ DWORD ReportLastError(VOID) if (RetVal != 0) { _tprintf(_T("%s"), (LPTSTR)lpMsgBuf); - LocalFree(lpMsgBuf); - /* return number of TCHAR's stored in output buffer - * excluding '\0' - as FormatMessage does*/ - return RetVal; } } - return 0; } -INT ScControl(LPTSTR MachineName, // remote machine name - LPCTSTR Command, // sc command - LPCTSTR ServiceName, // name of service - LPCTSTR *ServiceArgs, // any options - DWORD ArgCount) // argument counter +static INT +ScControl(LPCTSTR Server, // remote machine name + LPCTSTR Command, // sc command + LPCTSTR *ServiceArgs, // any options + DWORD ArgCount) // argument counter { - /* count trailing arguments */ - ArgCount -= 3; + LPCTSTR ServiceName = NULL; - if (MachineName) + if (Server) { _tprintf(_T("Remote service control is not yet implemented\n")); return 2; } - - /* if we are emurating the services, we don't need administrator access */ - if ( (_tcsicmp(Command, _T("query")) == 0) || (_tcsicmp(Command, _T("queryex")) == 0) ) - hSCManager = OpenSCManager(MachineName, NULL, SC_MANAGER_ENUMERATE_SERVICE); - else - hSCManager = OpenSCManager(MachineName, NULL, SC_MANAGER_ALL_ACCESS); - if (hSCManager == NULL) - { - _tprintf(_T("[SC] OpenSCManager FAILED %lu:\n\n"), GetLastError()); - ReportLastError(); - return -1; - } - /* emurate command */ - if (_tcsicmp(Command, _T("query")) == 0) - Query(ServiceName, ServiceArgs, FALSE); - - else if (_tcsicmp(Command, _T("queryex")) == 0) - Query(ServiceName, ServiceArgs, TRUE); - - else if (_tcsicmp(Command, _T("start")) == 0) + if (!lstrcmpi(Command, _T("query"))) { + Query(ServiceArgs, + ArgCount, + FALSE); + } + else if (!lstrcmpi(Command, _T("queryex"))) + { + Query(ServiceArgs, + ArgCount, + TRUE); + } + else if (!lstrcmpi(Command, _T("start"))) + { + ServiceName = *ServiceArgs++; + ArgCount--; + if (ServiceName) - Start(ServiceName, ServiceArgs, ArgCount); + { + Start(ServiceName, + ServiceArgs, + ArgCount); + } else StartUsage(); } - else if (_tcsicmp(Command, _T("pause")) == 0) + else if (!lstrcmpi(Command, _T("pause"))) { + ServiceName = *ServiceArgs++; + ArgCount--; + if (ServiceName) - Control(SERVICE_CONTROL_PAUSE, ServiceName, ServiceArgs); + { + Control(SERVICE_CONTROL_PAUSE, + ServiceName, + ServiceArgs, + ArgCount); + } else PauseUsage(); } - else if (_tcsicmp(Command, _T("interrogate")) == 0) + else if (!lstrcmpi(Command, _T("interrogate"))) { + ServiceName = *ServiceArgs++; + ArgCount--; + if (ServiceName) - Control(SERVICE_CONTROL_INTERROGATE, ServiceName, ServiceArgs); + { + Control(SERVICE_CONTROL_INTERROGATE, + ServiceName, + ServiceArgs, + ArgCount); + } else InterrogateUsage(); } - else if (_tcsicmp(Command, _T("stop")) == 0) + else if (!lstrcmpi(Command, _T("stop"))) { + ServiceName = *ServiceArgs++; + ArgCount--; + if (ServiceName) - Control(SERVICE_CONTROL_STOP, ServiceName, ServiceArgs); + { + Control(SERVICE_CONTROL_STOP, + ServiceName, + ServiceArgs, + ArgCount); + } else StopUsage(); } - else if (_tcsicmp(Command, _T("continue")) == 0) + else if (!lstrcmpi(Command, _T("continue"))) { + ServiceName = *ServiceArgs++; + ArgCount--; + if (ServiceName) - Control(SERVICE_CONTROL_CONTINUE, ServiceName, ServiceArgs); + { + Control(SERVICE_CONTROL_CONTINUE, + ServiceName, + ServiceArgs, + ArgCount); + } else ContinueUsage(); } - else if (_tcsicmp(Command, _T("delete")) == 0) + else if (!lstrcmpi(Command, _T("delete"))) { + ServiceName = *ServiceArgs++; + ArgCount--; + if (ServiceName) Delete(ServiceName); else DeleteUsage(); } - else if (_tcsicmp(Command, _T("create")) == 0) + else if (!lstrcmpi(Command, _T("create"))) { + ServiceName = *ServiceArgs++; + ArgCount--; + if (*ServiceArgs) - Create(ServiceName, ServiceArgs); + Create(ServiceName, + ServiceArgs); else CreateUsage(); } - else if (_tcsicmp(Command, _T("control")) == 0) + else if (!lstrcmpi(Command, _T("control"))) { + INT CtlValue; + + ServiceName = *ServiceArgs++; + ArgCount--; + + CtlValue = _ttoi(ServiceArgs[0]); + ServiceArgs++; + ArgCount--; + if (ServiceName) - Control(0, ServiceName, ServiceArgs); - else - ContinueUsage(); + { + if ((CtlValue >=128) && CtlValue <= 255) + { + Control(CtlValue, + ServiceName, + ServiceArgs, + ArgCount); + + return 0; + } + } + + ContinueUsage(); } return 0; } @@ -144,31 +195,45 @@ static int _tmain(int argc, LPCTSTR argv[]) { - LPTSTR MachineName = NULL; // remote machine - LPCTSTR Command = NULL; // sc command - LPCTSTR ServiceName = NULL; // Name of service + LPCTSTR Server = NULL; // remote machine + LPCTSTR Command = NULL; // sc command + LPCTSTR *Args = NULL; // Any remaining args if (argc < 2) - return MainUsage(); + { + MainUsage(); + return -1; + } /* get server name */ if ((argv[1][0] == '\\') && (argv[1][1] == '\\')) { if (argc < 3) - return MainUsage(); + { + MainUsage(); + return -1; + } - _tcscpy(MachineName, argv[1]); + Server = argv[1]; Command = argv[2]; if (argc > 3) - ServiceName = argv[3]; - return ScControl(MachineName, Command, ServiceName, &argv[4], argc); + Args = &argv[3]; + + return ScControl(Server, + Command, + Args, + argc-3); } else { Command = argv[1]; if (argc > 2) - ServiceName = argv[2]; - return ScControl(MachineName, Command, ServiceName, &argv[3], argc); + Args = &argv[2]; + + return ScControl(Server, + Command, + Args, + argc-2); } } @@ -191,13 +256,13 @@ int main( int argc, char **argv ) } swprintf(argvW[i], L"%hs", argv[i]); } - + if (j == 0) { /* no error converting the parameters, call wmain() */ Ret = wmain(argc, (LPCTSTR *)argvW); } - + /* free the arguments */ for (i = 0; i < argc; i++) { @@ -206,7 +271,7 @@ int main( int argc, char **argv ) } free(argvW); } - + return Ret; } #endif diff --git a/reactos/base/applications/sc/sc.h b/reactos/base/applications/sc/sc.h index f6c977c1b26..cec74b921a1 100644 --- a/reactos/base/applications/sc/sc.h +++ b/reactos/base/applications/sc/sc.h @@ -3,28 +3,29 @@ #include #include -extern SC_HANDLE hSCManager; // declared in sc.c - -//#define SCDBG +#define SCDBG /* control functions */ -BOOL Query(LPCTSTR ServiceName, LPCTSTR *ServiceArgs, BOOL bExtended); BOOL Start(LPCTSTR ServiceName, LPCTSTR *ServiceArgs, INT ArgCount); BOOL Create(LPCTSTR ServiceName, LPCTSTR *ServiceArgs); BOOL Delete(LPCTSTR ServiceName); -BOOL Control(DWORD Control, LPCTSTR ServiceName, LPCTSTR *Args); +BOOL Control(DWORD Control, LPCTSTR ServiceName, LPCTSTR *Args, INT ArgCount); +BOOL Query(LPCTSTR *ServiceArgs, DWORD ArgCount, BOOL bExtended); + +LPSERVICE_STATUS_PROCESS QueryService(LPCTSTR ServiceName); /* print and error functions */ -DWORD ReportLastError(VOID); +VOID PrintService(LPCTSTR ServiceName, LPSERVICE_STATUS_PROCESS pStatus, BOOL bExtended); +VOID ReportLastError(VOID); /* usage functions */ -INT MainUsage(VOID); -INT StartUsage(VOID); -INT PauseUsage(VOID); -INT InterrogateUsage(VOID); -INT ContinueUsage(VOID); -INT StopUsage(VOID); -INT ConfigUsage(VOID); -INT DescriptionUsage(VOID); -INT DeleteUsage(VOID); -INT CreateUsage(VOID); +VOID MainUsage(VOID); +VOID StartUsage(VOID); +VOID PauseUsage(VOID); +VOID InterrogateUsage(VOID); +VOID ContinueUsage(VOID); +VOID StopUsage(VOID); +VOID ConfigUsage(VOID); +VOID DescriptionUsage(VOID); +VOID DeleteUsage(VOID); +VOID CreateUsage(VOID); diff --git a/reactos/base/applications/sc/sc.rbuild b/reactos/base/applications/sc/sc.rbuild index c5b82fca2c1..f5d358fa66b 100644 --- a/reactos/base/applications/sc/sc.rbuild +++ b/reactos/base/applications/sc/sc.rbuild @@ -7,12 +7,13 @@ kernel32 advapi32 - sc.c - start.c - query.c control.c create.c delete.c + print.c + query.c + sc.c + start.c usage.c sc.rc sc.h diff --git a/reactos/base/applications/sc/sc.rc b/reactos/base/applications/sc/sc.rc index 86777430848..b46b010878f 100644 --- a/reactos/base/applications/sc/sc.rc +++ b/reactos/base/applications/sc/sc.rc @@ -1,4 +1,10 @@ +#include +#include +#include "resource.h" + #define REACTOS_STR_FILE_DESCRIPTION "Services control application\0" #define REACTOS_STR_INTERNAL_NAME "sc\0" #define REACTOS_STR_ORIGINAL_FILENAME "sc.exe\0" #include + +//#include "En.rc" diff --git a/reactos/base/applications/sc/start.c b/reactos/base/applications/sc/start.c index bb4277d74ae..425de0135d8 100644 --- a/reactos/base/applications/sc/start.c +++ b/reactos/base/applications/sc/start.c @@ -1,11 +1,9 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS SC utility - * FILE: subsys/system/sc/start.c - * PURPOSE: control ReactOS services - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * Ged Murphy 20/10/05 Created + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/start.c + * PURPOSE: Start a service + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy * */ @@ -13,99 +11,67 @@ BOOL Start(LPCTSTR ServiceName, LPCTSTR *ServiceArgs, INT ArgCount) { + SC_HANDLE hSCManager; SC_HANDLE hSc; - SERVICE_STATUS_PROCESS ServiceStatus, ServiceStatus2; - DWORD BytesNeeded; + LPSERVICE_STATUS_PROCESS pServiceInfo = NULL; -#ifdef SCDBG - /* testing */ - _tprintf(_T("service to start - %s\n\n"), ServiceName); - _tprintf(_T("Arguments :\n")); - while (*ServiceArgs) +#ifdef SCDBG + LPCTSTR *TmpArgs = ServiceArgs; + INT TmpCnt = ArgCount; + _tprintf(_T("service to control - %s\n"), ServiceName); + _tprintf(_T("Arguments:\n")); + while (TmpCnt) { - printf("%s\n", *ServiceArgs); - ServiceArgs++; + _tprintf(_T(" %s\n"), *TmpArgs); + TmpArgs++; + TmpCnt--; } -#endif + _tprintf(_T("\n")); +#endif /* SCDBG */ - /* get a handle to the service requested for starting */ - hSc = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS); + hSCManager = OpenSCManager(NULL, + NULL, + SC_MANAGER_CONNECT); + if (hSCManager == NULL) + { + ReportLastError(); + return FALSE; + } + + hSc = OpenService(hSCManager, + ServiceName, + SERVICE_START | SERVICE_QUERY_STATUS); if (hSc == NULL) - { - _tprintf(_T("openService failed\n")); - ReportLastError(); - return FALSE; - } + goto fail; - /* start the service opened */ - if (! StartService(hSc, ArgCount, ServiceArgs)) + if (! StartService(hSc, + ArgCount, + ServiceArgs)) { _tprintf(_T("[SC] StartService FAILED %lu:\n\n"), GetLastError()); - ReportLastError(); - return FALSE; + goto fail; } - - if (! QueryServiceStatusEx( - hSc, - SC_STATUS_PROCESS_INFO, - (LPBYTE)&ServiceStatus, - sizeof(SERVICE_STATUS_PROCESS), - &BytesNeeded)) + + pServiceInfo = QueryService(ServiceName); + if (pServiceInfo != NULL) { - _tprintf(_T("QueryServiceStatusEx 1 failed\n")); - ReportLastError(); - return FALSE; + PrintService(ServiceName, + pServiceInfo, + TRUE); } - - while (ServiceStatus.dwCurrentState == SERVICE_START_PENDING) - { - /* wait before checking status */ - Sleep(ServiceStatus.dwWaitHint); - - /* check status again */ - if (! QueryServiceStatusEx( - hSc, - SC_STATUS_PROCESS_INFO, - (LPBYTE)&ServiceStatus, - sizeof(SERVICE_STATUS_PROCESS), - &BytesNeeded)) - { - _tprintf(_T("QueryServiceStatusEx 2 failed\n")); - ReportLastError(); - return FALSE; - } - } - - QueryServiceStatusEx(hSc, SC_STATUS_PROCESS_INFO, (LPBYTE)&ServiceStatus2, - sizeof(SERVICE_STATUS_PROCESS), &BytesNeeded); - + HeapFree(GetProcessHeap(), 0, pServiceInfo); CloseServiceHandle(hSc); - - if (ServiceStatus.dwCurrentState == SERVICE_RUNNING) - { - _tprintf(_T("\nSERVICE_NAME: %s\n"), ServiceName); - _tprintf(_T("\tTYPE : %lu\n"), ServiceStatus2.dwServiceType); - _tprintf(_T("\tSTATE : %lu\n"), ServiceStatus2.dwCurrentState); - _tprintf(_T("\tWIN32_EXIT_CODE : %lu\n"), ServiceStatus2.dwWin32ExitCode); - _tprintf(_T("\tCHECKPOINT : %lu\n"), ServiceStatus2.dwCheckPoint); - _tprintf(_T("\tWAIT_HINT : %lu\n"), ServiceStatus2.dwWaitHint); - _tprintf(_T("\tPID : %lu\n"), ServiceStatus2.dwProcessId); - _tprintf(_T("\tFLAGS : %lu\n"), ServiceStatus2.dwServiceFlags); + CloseServiceHandle(hSCManager); + + return TRUE; + +fail: + ReportLastError(); + if (pServiceInfo) HeapFree(GetProcessHeap(), 0, pServiceInfo); + if (hSc) CloseServiceHandle(hSc); + if (hSCManager) CloseServiceHandle(hSCManager); + return FALSE; - return TRUE; - } - else - { - _tprintf(_T("Failed to start %s\n"), ServiceName); - _tprintf(_T("Curent state: %lu\n"), ServiceStatus.dwCurrentState); - _tprintf(_T("Exit code: %lu\n"), ServiceStatus.dwWin32ExitCode); - _tprintf(_T("Service Specific exit code: %lu\n"), - ServiceStatus.dwServiceSpecificExitCode); - _tprintf(_T("Check point: %lu\n"), ServiceStatus.dwCheckPoint); - _tprintf(_T("Wait hint: %lu\n"), ServiceStatus.dwWaitHint); - - return FALSE; - } } diff --git a/reactos/base/applications/sc/usage.c b/reactos/base/applications/sc/usage.c index eb0254229a8..add5ea25f29 100644 --- a/reactos/base/applications/sc/usage.c +++ b/reactos/base/applications/sc/usage.c @@ -1,16 +1,14 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS SC utility - * FILE: subsys/system/sc/usage.c - * PURPOSE: control ReactOS services - * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com) - * REVISIONS: - * Ged Murphy 20/10/05 Created + * PROJECT: ReactOS Services + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/system/sc/usage.c + * PURPOSE: display usage info + * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy * */ #include "sc.h" -INT MainUsage(VOID) +VOID MainUsage(VOID) { INT c; @@ -26,7 +24,7 @@ INT MainUsage(VOID) _T("\t query : Queries the status for a service, or\n") _T("\t enumerates the status for types of services.\n") _T("\t queryex : Queries the extended status for a service, or\n") -// _T("\t enumerates the status for types of services.\n" + _T("\t enumerates the status for types of services.\n") _T("\t start : Starts a service.\n") _T("\t pause : Sends a PAUSE control request to a service.\n") _T("\t interrogate : Sends a INTERROGATE control request to a service.\n") @@ -63,7 +61,7 @@ INT MainUsage(VOID) _T(" for that service is returned. Further options do not apply in\n") _T(" this case. If the query command is followed by nothing or one of\n") _T(" the options listed below, the services are enumerated.\n") - _T(" type= Type of services to enumerate (driver, service, all)\n") + _T(" type= Type of services to enumerate (driver, service, interact, all)\n") _T(" (default = service)\n") _T(" state= State of services to enumerate (inactive, all)\n") _T(" (default = active)\n") @@ -85,87 +83,70 @@ INT MainUsage(VOID) // _T("sc query bufsize= 50 - Enumerates with a 50 byte buffer.\n") // _T("sc query ri= 14 - Enumerates with resume index = 14\n") // _T("sc queryex group= "" - Enumerates active services not in a group\n") - _T("sc query type= service type= interact - Enumerates all interactive services\n")); -// _T("sc query type= driver group= NDIS - Enumerates all NDIS drivers\n")); + _T("sc query type= service type= interact - Enumerates all interactive services\n") + _T("sc query type= driver group= NDIS - Enumerates all NDIS drivers\n")); } - - - return 0; } -INT StartUsage(VOID) +VOID StartUsage(VOID) { _tprintf(_T("DESCRIPTION:\n") _T(" Starts a service running.\n") _T("USAGE:\n") _T(" sc start [service name] ...\n")); - - return 0; } -INT PauseUsage(VOID) +VOID PauseUsage(VOID) { _tprintf(_T("DESCRIPTION:\n") _T(" Sends a PAUSE control request to a service.\n") _T("USAGE:\n") _T(" sc pause [service name]\n")); - - return 0; } -INT InterrogateUsage(VOID) +VOID InterrogateUsage(VOID) { _tprintf(_T("DESCRIPTION:\n") _T(" Sends an INTERROGATE control request to a service.\n") _T("USAGE:\n") _T(" sc interrogate [service name]\n")); - - return 0; } -INT StopUsage(VOID) +VOID StopUsage(VOID) { _tprintf(_T("DESCRIPTION:\n") _T(" Sends an STOP control request to a service.\n") _T("USAGE:\n") _T(" sc stop [service name]\n")); - - return 0; } -INT ContinueUsage(VOID) +VOID ContinueUsage(VOID) { _tprintf(_T("DESCRIPTION:\n") _T(" Sends an CONTINUE control request to a service.\n") _T("USAGE:\n") _T(" sc continue [service name]\n")); - - return 0; } -INT ConfigUsage(VOID) +VOID ConfigUsage(VOID) { _tprintf(_T("not yet implemented\n")); - - return 0; } -INT DescriptionUsage(VOID) +VOID DescriptionUsage(VOID) { _tprintf(_T("DESCRIPTION:\n") _T(" Sets the description string for a service.\n") _T("USAGE:\n") _T(" sc description [service name]\n")); - - return 0; } -INT DeleteUsage(VOID) +VOID DeleteUsage(VOID) { _tprintf(_T("DESCRIPTION:\n") _T(" Deletes a service entry from the registry.\n") @@ -174,11 +155,9 @@ INT DeleteUsage(VOID) _T(" for deletion.\n") _T("USAGE:\n") _T(" sc delete [service name]\n")); - - return 0; } -INT CreateUsage(VOID) +VOID CreateUsage(VOID) { _tprintf(_T("Creates a service entry in the registry and Service Database.\n") _T("SYNTAX:\n") @@ -199,6 +178,4 @@ INT CreateUsage(VOID) _T(" (default = LocalSystem)\n") _T(" DisplayName= \n") _T(" password= \n")); - - return 0; } diff --git a/reactos/base/applications/screensavers/matrix/matrix.rbuild b/reactos/base/applications/screensavers/matrix/matrix.rbuild index 235772effe1..f9b2cc717eb 100644 --- a/reactos/base/applications/screensavers/matrix/matrix.rbuild +++ b/reactos/base/applications/screensavers/matrix/matrix.rbuild @@ -2,8 +2,7 @@ . - - -lstdc++ + 0x0501 0x0501 diff --git a/reactos/base/applications/shutdown/shutdown.rbuild b/reactos/base/applications/shutdown/shutdown.rbuild index cc62542cb19..c398f3cb852 100644 --- a/reactos/base/applications/shutdown/shutdown.rbuild +++ b/reactos/base/applications/shutdown/shutdown.rbuild @@ -1,8 +1,11 @@ - . - - 0x0501 - shutdown.c + . + + 0x0501 + advapi32 + user32 + kernel32 + shutdown.c diff --git a/reactos/base/applications/sm/De.rc b/reactos/base/applications/sm/De.rc index a536adea19f..b16cc2dcef9 100644 --- a/reactos/base/applications/sm/De.rc +++ b/reactos/base/applications/sm/De.rc @@ -1,56 +1,56 @@ -#include "resource.h" -/* - * German language file by Daniel Reimer 2006-06-15 - * Moved all hardcoded strings to En.rc. - * By Magnus Olsen 2005 magnus@itkonsult-olsen.com - */ - -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN -STRINGTABLE DISCARDABLE -{ -IDS_boot, "boot subsystem_name" - -IDS_help, "help [command]" - -IDS_info, "info [subsystem_id]" - -IDS_reboot, "reboot subsystem_id" - -IDS_shutdown,"shutdown subsystem_id" - - - -IDS_boot_msg, "bootstrap an optional environment subsystem;" - -IDS_help_msg, "print help for command;" - -IDS_info_msg, "print information about a booted subsystem\n\ -if subsystem_id is omitted, a list of booted\n\ -environment subsystems is printed." - -IDS_reboot_msg, "reboot an optional environment subsystem;" -IDS_shutdown_msg, "shutdown an optional environment subsystem;" - -IDS_Unknown, "Unknown command '%s'.\n" - -IDS_SM1, "SM SubSystem Directory\n\n\ -SSID PID Flags\n\ ----- -------- ------------\n" - -IDS_SM2, "%04x %08lx %04x\n" - -IDS_ID, "SubSystem ID: %d\n\ - Flags: %04x\n\ - Process ID: %ld\n" - -IDS_Not_Imp, "not implemented\n" - -IDS_Mangers, "ReactOS/Win32 - Session Manager Control Tool\n\n" - -IDS_USING, "Usage:\n\ -\tsm\n\ -\tsm help [command]\n\ -\tsm command [arguments]\n\n'sm help' will print the list of valid commands.\n" - -IDS_FAILS_MNG, "Failed to connect to the Session Manager! (Status=0x%08lx)\n" -} +#include "resource.h" +/* + * German language file by Daniel Reimer 2006-06-15 + * Moved all hardcoded strings to En.rc. + * By Magnus Olsen 2005 magnus@itkonsult-olsen.com + */ + +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +STRINGTABLE DISCARDABLE +{ +IDS_boot, "boot subsystem_name" + +IDS_help, "help [command]" + +IDS_info, "info [subsystem_id]" + +IDS_reboot, "reboot subsystem_id" + +IDS_shutdown,"shutdown subsystem_id" + + + +IDS_boot_msg, "bootstrap an optional environment subsystem;" + +IDS_help_msg, "print help for command;" + +IDS_info_msg, "print information about a booted subsystem\n\ +if subsystem_id is omitted, a list of booted\n\ +environment subsystems is printed." + +IDS_reboot_msg, "reboot an optional environment subsystem;" +IDS_shutdown_msg, "shutdown an optional environment subsystem;" + +IDS_Unknown, "Unknown command '%s'.\n" + +IDS_SM1, "SM SubSystem Directory\n\n\ +SSID PID Flags\n\ +---- -------- ------------\n" + +IDS_SM2, "%04x %08lx %04x\n" + +IDS_ID, "SubSystem ID: %d\n\ + Flags: %04x\n\ + Process ID: %ld\n" + +IDS_Not_Imp, "not implemented\n" + +IDS_Mangers, "ReactOS/Win32 - Session Manager Control Tool\n\n" + +IDS_USING, "Usage:\n\ +\tsm\n\ +\tsm help [command]\n\ +\tsm command [arguments]\n\n'sm help' will print the list of valid commands.\n" + +IDS_FAILS_MNG, "Failed to connect to the Session Manager! (Status=0x%08lx)\n" +} diff --git a/reactos/base/applications/sm/En.rc b/reactos/base/applications/sm/En.rc index 7e497c24277..f77ff53ed36 100644 --- a/reactos/base/applications/sm/En.rc +++ b/reactos/base/applications/sm/En.rc @@ -1,55 +1,55 @@ -#include "resource.h" -/* - * Moved all hardcoded strings to En.rc. - * By Magnus Olsen 2005 magnus@itkonsult-olsen.com - */ - -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -STRINGTABLE DISCARDABLE -{ -IDS_boot, "boot subsystem_name" - -IDS_help, "help [command]" - -IDS_info, "info [subsystem_id]" - -IDS_reboot, "reboot subsystem_id" - -IDS_shutdown,"shutdown subsystem_id" - - - -IDS_boot_msg, "bootstrap an optional environment subsystem;" - -IDS_help_msg, "print help for command;" - -IDS_info_msg, "print information about a booted subsystem\n\ -if subsystem_id is omitted, a list of booted\n\ -environment subsystems is printed." - -IDS_reboot_msg, "reboot an optional environment subsystem;" -IDS_shutdown_msg, "shutdown an optional environment subsystem;" - -IDS_Unknown, "Unknown command '%s'.\n" - -IDS_SM1, "SM SubSystem Directory\n\n\ -SSID PID Flags\n\ ----- -------- ------------\n" - -IDS_SM2, "%04x %08lx %04x\n" - -IDS_ID, "SubSystem ID: %d\n\ - Flags: %04x\n\ - Process ID: %ld\n" - -IDS_Not_Imp, "not implemented\n" - -IDS_Mangers, "ReactOS/Win32 - Session Manager Control Tool\n\n" - -IDS_USING, "Usage:\n\ -\tsm\n\ -\tsm help [command]\n\ -\tsm command [arguments]\n\n'sm help' will print the list of valid commands.\n" - -IDS_FAILS_MNG, "Failed to connect to the Session Manager! (Status=0x%08lx)\n" -} +#include "resource.h" +/* + * Moved all hardcoded strings to En.rc. + * By Magnus Olsen 2005 magnus@itkonsult-olsen.com + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +STRINGTABLE DISCARDABLE +{ +IDS_boot, "boot subsystem_name" + +IDS_help, "help [command]" + +IDS_info, "info [subsystem_id]" + +IDS_reboot, "reboot subsystem_id" + +IDS_shutdown,"shutdown subsystem_id" + + + +IDS_boot_msg, "bootstrap an optional environment subsystem;" + +IDS_help_msg, "print help for command;" + +IDS_info_msg, "print information about a booted subsystem\n\ +if subsystem_id is omitted, a list of booted\n\ +environment subsystems is printed." + +IDS_reboot_msg, "reboot an optional environment subsystem;" +IDS_shutdown_msg, "shutdown an optional environment subsystem;" + +IDS_Unknown, "Unknown command '%s'.\n" + +IDS_SM1, "SM SubSystem Directory\n\n\ +SSID PID Flags\n\ +---- -------- ------------\n" + +IDS_SM2, "%04x %08lx %04x\n" + +IDS_ID, "SubSystem ID: %d\n\ + Flags: %04x\n\ + Process ID: %ld\n" + +IDS_Not_Imp, "not implemented\n" + +IDS_Mangers, "ReactOS/Win32 - Session Manager Control Tool\n\n" + +IDS_USING, "Usage:\n\ +\tsm\n\ +\tsm help [command]\n\ +\tsm command [arguments]\n\n'sm help' will print the list of valid commands.\n" + +IDS_FAILS_MNG, "Failed to connect to the Session Manager! (Status=0x%08lx)\n" +} diff --git a/reactos/base/applications/sm/Hu.rc b/reactos/base/applications/sm/Hu.rc index 6fccaa19eff..a7e8feb9681 100644 --- a/reactos/base/applications/sm/Hu.rc +++ b/reactos/base/applications/sm/Hu.rc @@ -1,54 +1,54 @@ -#include "resource.h" -/* - * Moved all hardcoded strings to En.rc. - * By Magnus Olsen 2005 magnus@itkonsult-olsen.com - * Hungarian translation by Robert Horvath - talley at cubeclub.hu - */ - -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL -STRINGTABLE DISCARDABLE -{ -IDS_boot, "boot alrendszer_név" - -IDS_help, "help [parancs]" - -IDS_info, "info [alrendszer_azonosító]" - -IDS_reboot, "alrendszer_azonosító újraindítása" - -IDS_shutdown,"alrendszer_azonosító leállítása" - - - -IDS_boot_msg, "bootstrap an optional environment subsystem;" - -IDS_help_msg, "print help for command;" - -IDS_info_msg, "Információk az elindított alrendszerrõl\n\Ha subsystem_id nincs megadva, az elindított\n\alrendszerek információi jelennek meg." - -IDS_reboot_msg, "Egy opcionális alrendszer újraindítása;" -IDS_shutdown_msg, "Egy opcionális alrendszer lekapcsolása;" - -IDS_Unknown, "Ismeretlen parancs: '%s'.\n" - -IDS_SM1, "SM alrendszer mappa\n\n\ -SSID PID Flags\n\ ----- -------- ------------\n" - -IDS_SM2, "%04x %08lx %04x\n" - -IDS_ID, "Alrendszer azonosító: %d\n\ - Flags: %04x\n\ - Folyamat azonosító: %ld\n" - -IDS_Not_Imp, "A parancs nincs támogatva\n" - -IDS_Mangers, "ReactOS/Win32 - Munkamenet vezérlõ\n\n" - -IDS_USING, "Használat:\n\ -\tsm\n\ -\tsm help [command]\n\ -\tsm parancs [paraméterek]\n\n'sm help' megjeleníti a támogatott parancsokat.\n" - -IDS_FAILS_MNG, "Sikertelen kapcsolat felvétel a munkamenet vezérlõvel! (Status=0x%08lx)\n" -} +#include "resource.h" +/* + * Moved all hardcoded strings to En.rc. + * By Magnus Olsen 2005 magnus@itkonsult-olsen.com + * Hungarian translation by Robert Horvath - talley at cubeclub.hu + */ + +LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +STRINGTABLE DISCARDABLE +{ +IDS_boot, "boot alrendszer_név" + +IDS_help, "help [parancs]" + +IDS_info, "info [alrendszer_azonosító]" + +IDS_reboot, "alrendszer_azonosító újraindítása" + +IDS_shutdown,"alrendszer_azonosító leállítása" + + + +IDS_boot_msg, "bootstrap an optional environment subsystem;" + +IDS_help_msg, "print help for command;" + +IDS_info_msg, "Információk az elindított alrendszerrõl\n\Ha subsystem_id nincs megadva, az elindított\n\alrendszerek információi jelennek meg." + +IDS_reboot_msg, "Egy opcionális alrendszer újraindítása;" +IDS_shutdown_msg, "Egy opcionális alrendszer lekapcsolása;" + +IDS_Unknown, "Ismeretlen parancs: '%s'.\n" + +IDS_SM1, "SM alrendszer mappa\n\n\ +SSID PID Flags\n\ +---- -------- ------------\n" + +IDS_SM2, "%04x %08lx %04x\n" + +IDS_ID, "Alrendszer azonosító: %d\n\ + Flags: %04x\n\ + Folyamat azonosító: %ld\n" + +IDS_Not_Imp, "A parancs nincs támogatva\n" + +IDS_Mangers, "ReactOS/Win32 - Munkamenet vezérlõ\n\n" + +IDS_USING, "Használat:\n\ +\tsm\n\ +\tsm help [command]\n\ +\tsm parancs [paraméterek]\n\n'sm help' megjeleníti a támogatott parancsokat.\n" + +IDS_FAILS_MNG, "Sikertelen kapcsolat felvétel a munkamenet vezérlõvel! (Status=0x%08lx)\n" +} diff --git a/reactos/base/applications/sm/No.rc b/reactos/base/applications/sm/No.rc new file mode 100644 index 00000000000..ec926ee6cdd --- /dev/null +++ b/reactos/base/applications/sm/No.rc @@ -0,0 +1,55 @@ +#include "resource.h" +/* + * Moved all hardcoded strings to En.rc. + * By Magnus Olsen 2005 magnus@itkonsult-olsen.com + */ + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL +STRINGTABLE DISCARDABLE +{ +IDS_boot, "oppstart subsystem_name" + +IDS_help, "hjelp [kommando]" + +IDS_info, "informasjon [undersystem_id]" + +IDS_reboot, "restarter undersystem_id" + +IDS_shutdown,"avslutter undersystem_id" + + + +IDS_boot_msg, "bootstrap en valgfri miljø under-system;" + +IDS_help_msg, "skrive ut hjelp for kommando;" + +IDS_info_msg, "skrive ut informasjon om en oppstart under-system\n\ +hvis subsystem_id er omitted, en liste av oppstart\n\ +miljø under-system er skrivet ut." + +IDS_reboot_msg, "restart en valgfri miljø under-system;" +IDS_shutdown_msg, "avslutt en valgfri miljø under-system;" + +IDS_Unknown, "Ukjent kommando '%s'.\n" + +IDS_SM1, "SM SubSystem Directory\n\n\ +SSID PID Flags\n\ +---- -------- ------------\n" + +IDS_SM2, "%04x %08lx %04x\n" + +IDS_ID, "under-System ID: %d\n\ + flagg: %04x\n\ + Prosess ID: %ld\n" + +IDS_Not_Imp, "ikke implementert\n" + +IDS_Mangers, "ReactOS/Win32 - Session Manager Control Tool\n\n" + +IDS_USING, "anvendelse:\n\ +\tsm\n\ +\tsm help [command]\n\ +\tsm command [arguments]\n\n'sm hjelp' vil trykke listen av gyldig kommando.\n" + +IDS_FAILS_MNG, "Mislykket å koble til Session Manager! (Status=0x%08lx)\n" +} diff --git a/reactos/base/applications/sm/Ru.rc b/reactos/base/applications/sm/Ru.rc index d3010384737..4e8a2d2ffba 100644 --- a/reactos/base/applications/sm/Ru.rc +++ b/reactos/base/applications/sm/Ru.rc @@ -1,51 +1,51 @@ -#include "resource.h" - -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL -STRINGTABLE DISCARDABLE -{ -IDS_boot, "boot èìÿ_ïîäñèñòåìû" - -IDS_help, "help [êîìàíäà]" - -IDS_info, "info [subsystem_id]" - -IDS_reboot, "reboot èäåíòèôèêàòîð_ïîäñèñòåìû" - -IDS_shutdown,"shutdown èäåíòèôèêàòîð_ïîäñèñòåìû" - - - -IDS_boot_msg, "çàãðóçêà äîïîëíèòåëüíîé ïîäñèñòåìû ñðåäû;" - -IDS_help_msg, "âûâîä ñïðàâêè äëÿ êîìàíäû;" - -IDS_info_msg, "âûâîä èíôîðìàöèè î çàãðóæåííîé ïîäñèñòåìå\n\ -åñëè subsystem_id îïóùåí, òî ñïèñîê\n\ -çàãðóæåííûõ ïîäñèñòåì íå âûâîäèòñÿ." - -IDS_reboot_msg, "ïåðåçàãðóçêà äîïîëíèòåëüíîé ïîäñèñòåìû ñðåäû;" -IDS_shutdown_msg, "çàâåðøåíèå äîïîëíèòåëüíîé ïîäñèñòåìû ñðåäû;" - -IDS_Unknown, "Íåèçâåñòíàÿ êîìàíäà '%s'.\n" - -IDS_SM1, "SM êàòàëîã ïîäñèñòåì\n\n\ -SSID PID Ôëàãè\n\ ----- -------- ------------\n" - -IDS_SM2, "%04x %08lx %04x\n" - -IDS_ID, "Ïîäñèñòåìà: %d\n\ - Ôëàãè: %04x\n\ - Ïðîöåññ: %ld\n" - -IDS_Not_Imp, "íå ðåàëèçîâàíî\n" - -IDS_Mangers, "ReactOS/Win32 - Ìåíåäæåð óïðàâëåíèÿ ñåññèÿìè\n\n" - -IDS_USING, "Èñïîëüçîâàíèå:\n\ -\tsm\n\ -\tsm help [êîìàíäà]\n\ -\tsm command [àðãóìåíòû]\n\n'sm help' âûâîäèò ñïèñîê äîñòóïíûõ êîìàíä.\n" - -IDS_FAILS_MNG, "Îøèáêà ñîåäèíåíèÿ ñ Ìåíåäæåðîì Ñåññèé! (Ñòàòóñ=0x%08lx)\n" -} \ No newline at end of file +#include "resource.h" + +LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +STRINGTABLE DISCARDABLE +{ +IDS_boot, "boot èìÿ_ïîäñèñòåìû" + +IDS_help, "help [êîìàíäà]" + +IDS_info, "info [subsystem_id]" + +IDS_reboot, "reboot èäåíòèôèêàòîð_ïîäñèñòåìû" + +IDS_shutdown,"shutdown èäåíòèôèêàòîð_ïîäñèñòåìû" + + + +IDS_boot_msg, "çàãðóçêà äîïîëíèòåëüíîé ïîäñèñòåìû ñðåäû;" + +IDS_help_msg, "âûâîä ñïðàâêè äëÿ êîìàíäû;" + +IDS_info_msg, "âûâîä èíôîðìàöèè î çàãðóæåííîé ïîäñèñòåìå\n\ +åñëè subsystem_id îïóùåí, òî ñïèñîê\n\ +çàãðóæåííûõ ïîäñèñòåì íå âûâîäèòñÿ." + +IDS_reboot_msg, "ïåðåçàãðóçêà äîïîëíèòåëüíîé ïîäñèñòåìû ñðåäû;" +IDS_shutdown_msg, "çàâåðøåíèå äîïîëíèòåëüíîé ïîäñèñòåìû ñðåäû;" + +IDS_Unknown, "Íåèçâåñòíàÿ êîìàíäà '%s'.\n" + +IDS_SM1, "SM êàòàëîã ïîäñèñòåì\n\n\ +SSID PID Ôëàãè\n\ +---- -------- ------------\n" + +IDS_SM2, "%04x %08lx %04x\n" + +IDS_ID, "Ïîäñèñòåìà: %d\n\ + Ôëàãè: %04x\n\ + Ïðîöåññ: %ld\n" + +IDS_Not_Imp, "íå ðåàëèçîâàíî\n" + +IDS_Mangers, "ReactOS/Win32 - Ìåíåäæåð óïðàâëåíèÿ ñåññèÿìè\n\n" + +IDS_USING, "Èñïîëüçîâàíèå:\n\ +\tsm\n\ +\tsm help [êîìàíäà]\n\ +\tsm command [àðãóìåíòû]\n\n'sm help' âûâîäèò ñïèñîê äîñòóïíûõ êîìàíä.\n" + +IDS_FAILS_MNG, "Îøèáêà ñîåäèíåíèÿ ñ Ìåíåäæåðîì Ñåññèé! (Ñòàòóñ=0x%08lx)\n" +} diff --git a/reactos/base/applications/sm/sm.rbuild b/reactos/base/applications/sm/sm.rbuild index 5340cdb7078..0f4888c222d 100644 --- a/reactos/base/applications/sm/sm.rbuild +++ b/reactos/base/applications/sm/sm.rbuild @@ -1,10 +1,12 @@ . + include/reactos/subsys smdll ntdll kernel32 + user32 sm.c win32err.c sm.rc diff --git a/reactos/base/applications/sm/sm.rc b/reactos/base/applications/sm/sm.rc index 909182907f4..252e6526869 100644 --- a/reactos/base/applications/sm/sm.rc +++ b/reactos/base/applications/sm/sm.rc @@ -1,11 +1,13 @@ -#include -#define REACTOS_STR_FILE_DESCRIPTION "ReactOS/Win32 - Session Manager Control Tool\0" -#define REACTOS_STR_INTERNAL_NAME "sm\0" -#define REACTOS_STR_ORIGINAL_FILENAME "sm.exe\0" -#include - -#include "En.rc" -#include "De.rc" -#include "Ja.rc" -#include "Hu.rc" -#include "Ru.rc" +#include +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS/Win32 - Session Manager Control Tool\0" +#define REACTOS_STR_INTERNAL_NAME "sm\0" +#define REACTOS_STR_ORIGINAL_FILENAME "sm.exe\0" +#include + +#include "En.rc" +#include "De.rc" +#include "Ja.rc" +#include "Hu.rc" +#include "No.rc" +#include "Ru.rc" + diff --git a/reactos/base/applications/sndvol32/Uk.rc b/reactos/base/applications/sndvol32/Uk.rc new file mode 100644 index 00000000000..fbf12ae9243 --- /dev/null +++ b/reactos/base/applications/sndvol32/Uk.rc @@ -0,0 +1,51 @@ +/* + * PROJECT: ReactOS Sound Volume Control + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/sndvol32/Uk.rc + * PURPOSE: Ukraianian Language File for Volume Control + * TRANSLATOR: Artem Reznikov + */ + +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT + +IDM_MAINMENU MENU DISCARDABLE +BEGIN + POPUP "&Ïàðàìåòðè" + BEGIN + MENUITEM "&Âëàñòèâîñò³", IDC_PROPERTIES + MENUITEM "&Äîäàòêîâ³ ïàðàìåòðè", IDC_ADVANCED_CONTROLS + MENUITEM SEPARATOR + MENUITEM "Â&èõ³ä", IDC_EXIT + END + POPUP "&Äîâ³äêà" + BEGIN + MENUITEM "&Çì³ñò", IDC_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "&Ïðî ðåãóëÿòîð ãó÷íîñò³", IDC_ABOUT + END +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_SNDVOL32 "Ðåãóëÿòîð ãó÷íîñò³" + IDS_NOMIXERDEVICES "Àêòèâí³ ïðèñòðî¿-ì³êøåðè íåäîñòóïí³! Äîäàòîê çàê³í÷óº ðîáîòó." +END + +IDD_PREFERENCES DIALOGEX 0, 0, 224, 250 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Âëàñòèâîñò³" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "&̳êøåð:", -1, 7,8,48,9 + COMBOBOX IDC_MIXERDEVICE, 55,8,162,80, CBS_DROPDOWNLIST | WS_TABSTOP + GROUPBOX "Ðåãóëÿö³ÿ ãó÷íîñò³ äëÿ:", -1, 7,25,211,77 + PUSHBUTTON "&³äòâîðåííÿ", IDC_PLAYBACK, 13,43,47,8, BS_AUTORADIOBUTTON + PUSHBUTTON "&Çàïèñ", IDC_RECORDING, 13,61,47,8, BS_AUTORADIOBUTTON + PUSHBUTTON "&²íøå:", IDC_OTHER, 13,80,42,8, BS_AUTORADIOBUTTON | WS_DISABLED + COMBOBOX IDC_LINE, 55,80,155,50, CBS_DROPDOWNLIST | WS_TABSTOP | WS_DISABLED + LTEXT "³äîáðàæàòè íàñòóïí³ ðåãóëÿòîðè ãó÷íîñò³:", IDC_LABELCONTROLS, 7, 109, 162, 8 + CONTROL "", IDC_CONTROLS, "SysListView32", LVS_REPORT | LVS_NOCOLUMNHEADER | WS_TABSTOP | WS_BORDER, 7, 122, 211, 96 + + PUSHBUTTON "OK", IDOK, 114,226,50,14 + PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 168,226,50,14 +END diff --git a/reactos/base/applications/sndvol32/misc.c b/reactos/base/applications/sndvol32/misc.c index 0cec222c65e..c97a855c522 100644 --- a/reactos/base/applications/sndvol32/misc.c +++ b/reactos/base/applications/sndvol32/misc.c @@ -79,11 +79,11 @@ AllocAndLoadString(OUT LPWSTR *lpTarget, ln * sizeof(WCHAR)); if ((*lpTarget) != NULL) { - INT Ret; - if (!(Ret = LoadStringW(hInst, - uID, - *lpTarget, - ln))) + INT Ret = LoadStringW(hInst, + uID, + *lpTarget, + ln); + if (!Ret) { LocalFree((HLOCAL)(*lpTarget)); } diff --git a/reactos/base/applications/sndvol32/mixer.c b/reactos/base/applications/sndvol32/mixer.c index dd46aad8d5d..44f0abe74fe 100644 --- a/reactos/base/applications/sndvol32/mixer.c +++ b/reactos/base/applications/sndvol32/mixer.c @@ -25,7 +25,7 @@ */ #include -#define NO_MIXER_SELECTED (~0) +#define NO_MIXER_SELECTED ((UINT)(~0)) static VOID ClearMixerCache(PSND_MIXER Mixer) @@ -394,7 +394,7 @@ SndMixerGetLineName(PSND_MIXER Mixer, { if (Mixer->hmx) { - int lnsz; + UINT lnsz; PSND_MIXER_DESTINATION Line; LPMIXERLINE lpl = NULL; diff --git a/reactos/base/applications/sndvol32/sndvol32.c b/reactos/base/applications/sndvol32/sndvol32.c index a21dc1cfce6..80439313703 100644 --- a/reactos/base/applications/sndvol32/sndvol32.c +++ b/reactos/base/applications/sndvol32/sndvol32.c @@ -70,6 +70,8 @@ FillDeviceComboBox(PSND_MIXER Mixer, LRESULT lres; PPREFERENCES_FILL_DEVICES FillContext = (PPREFERENCES_FILL_DEVICES)Context; + UNREFERENCED_PARAMETER(Mixer); + lres = SendMessage(FillContext->hComboBox, CB_ADDSTRING, 0, @@ -101,7 +103,10 @@ PrefDlgAddLine(PSND_MIXER Mixer, PVOID Context) { PPREFERENCES_CONTEXT PrefContext = (PPREFERENCES_CONTEXT)Context; - + + UNREFERENCED_PARAMETER(Mixer); + UNREFERENCED_PARAMETER(DisplayControls); + switch (Line->dwComponentType) { case MIXERLINE_COMPONENTTYPE_DST_SPEAKERS: @@ -178,6 +183,9 @@ PrefDlgAddConnection(PSND_MIXER Mixer, HWND hwndControls; LVITEM lvi; UINT i; + + UNREFERENCED_PARAMETER(Mixer); + UNREFERENCED_PARAMETER(LineID); if (Line->cControls != 0) { @@ -543,6 +551,7 @@ DlgPreferencesProc(HWND hwndDlg, static VOID DeleteMixerWindowControls(PMIXER_WINDOW MixerWindow) { + UNREFERENCED_PARAMETER(MixerWindow); } static BOOL @@ -797,6 +806,10 @@ WinMain(HINSTANCE hInstance, MSG Msg; int Ret = 1; + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpszCmdLine); + UNREFERENCED_PARAMETER(nCmdShow); + hAppInstance = hInstance; hAppHeap = GetProcessHeap(); diff --git a/reactos/base/applications/sndvol32/sndvol32.rbuild b/reactos/base/applications/sndvol32/sndvol32.rbuild index 431333f57c0..c10fb16fa72 100644 --- a/reactos/base/applications/sndvol32/sndvol32.rbuild +++ b/reactos/base/applications/sndvol32/sndvol32.rbuild @@ -9,6 +9,7 @@ 0x0600 ntdll user32 + advapi32 gdi32 kernel32 comctl32 diff --git a/reactos/base/applications/sndvol32/sndvol32.rc b/reactos/base/applications/sndvol32/sndvol32.rc index 207f8dd972f..95c03d82db8 100644 --- a/reactos/base/applications/sndvol32/sndvol32.rc +++ b/reactos/base/applications/sndvol32/sndvol32.rc @@ -22,5 +22,6 @@ IDI_MAINAPP ICON DISCARDABLE resources/sndvol32.ico #include "Ja.rc" #include "Nl.rc" #include "Sv.rc" +#include "Uk.rc" diff --git a/reactos/base/applications/taskmgr/No.rc b/reactos/base/applications/taskmgr/No.rc new file mode 100644 index 00000000000..19622385209 --- /dev/null +++ b/reactos/base/applications/taskmgr/No.rc @@ -0,0 +1,686 @@ +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_TASKMANAGER MENU DISCARDABLE +BEGIN + POPUP "&Fil" + BEGIN + MENUITEM "&Ny oppgave (Kjør...)", ID_FILE_NEW + MENUITEM SEPARATOR + MENUITEM "A&vslutt oppgavebehandlingen", ID_FILE_EXIT + END + POPUP "&Alternativer" + BEGIN + MENUITEM "&Alltid øverst", ID_OPTIONS_ALWAYSONTOP + , CHECKED + MENUITEM "&Minimer ved bruk", ID_OPTIONS_MINIMIZEONUSE + , CHECKED + MENUITEM "&Skjul når Minimert", ID_OPTIONS_HIDEWHENMINIMIZED + , CHECKED + MENUITEM "&Vis 16-bites oppgaver", ID_OPTIONS_SHOW16BITTASKS + , CHECKED + END + POPUP "&Vis" + BEGIN + MENUITEM "&Oppdater nå", ID_VIEW_REFRESH + POPUP "&Oppdateringshastighet" + BEGIN + MENUITEM "&Høy", ID_VIEW_UPDATESPEED_HIGH + MENUITEM "&Normal", ID_VIEW_UPDATESPEED_NORMAL + , CHECKED + MENUITEM "&Lav", ID_VIEW_UPDATESPEED_LOW + MENUITEM "&Midlertidig stanset", ID_VIEW_UPDATESPEED_PAUSED + + END + MENUITEM SEPARATOR + MENUITEM "St&ore Ikoner", ID_VIEW_LARGE + MENUITEM "S&må Ikoner", ID_VIEW_SMALL + MENUITEM "&Detaljer", ID_VIEW_DETAILS, CHECKED + MENUITEM "&Velg tospaltet...", ID_VIEW_SELECTCOLUMNS + POPUP "&CPU Historie" + BEGIN + MENUITEM "&En graf, per CPU", ID_VIEW_CPUHISTORY_ONEGRAPHALL + + MENUITEM "EN graf &per CPU", ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU + , CHECKED + END + MENUITEM "&Vis Kjernetider", ID_VIEW_SHOWKERNELTIMES + END + POPUP "&Vindu" + BEGIN + MENUITEM "Hele &horisontalt", ID_WINDOWS_TILEHORIZONTALLY + MENUITEM "Hele &vertikalt", ID_WINDOWS_TILEVERTICALLY + MENUITEM "&Minimer", ID_WINDOWS_MINIMIZE + MENUITEM "Ma&ksimer", ID_WINDOWS_MAXIMIZE + MENUITEM "&Overlappet", ID_WINDOWS_CASCADE + MENUITEM "&Plasser lengst frem", ID_WINDOWS_BRINGTOFRONT + END + POPUP "&Hjelp" + BEGIN + MENUITEM "Emner i &hjelp for Oppgavebehandling", ID_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "&Om Oppgavebehandling", ID_HELP_ABOUT + END +END + +IDR_WINDOWSMENU MENU DISCARDABLE +BEGIN + MENUITEM "Hele &horisontalt", ID_WINDOWS_TILEHORIZONTALLY + MENUITEM "Hele &vertikalt", ID_WINDOWS_TILEVERTICALLY + MENUITEM "&Minimer", ID_WINDOWS_MINIMIZE + MENUITEM "Ma&ksimer", ID_WINDOWS_MAXIMIZE + MENUITEM "&Cascade", ID_WINDOWS_CASCADE + MENUITEM "&Plasser lengst frem", ID_WINDOWS_BRINGTOFRONT +END + +IDR_APPLICATION_PAGE_CONTEXT1 MENU DISCARDABLE +BEGIN + POPUP "DUMMY" + BEGIN + MENUITEM "&Ny oppgave (Kjør...)", ID_FILE_NEW + MENUITEM SEPARATOR + MENUITEM "Sto&re ikoner", ID_VIEW_LARGE + MENUITEM "S&må ikoner", ID_VIEW_SMALL + MENUITEM "&Detaljer", ID_VIEW_DETAILS, CHECKED + END +END + +IDR_APPLICATION_PAGE_CONTEXT2 MENU DISCARDABLE +BEGIN + POPUP "DUMMY" + BEGIN + MENUITEM "&Bytt til", ID_APPLICATION_PAGE_SWITCHTO + MENUITEM "&Plasser lengst frem", ID_WINDOWS_BRINGTOFRONT + MENUITEM SEPARATOR + MENUITEM "Hele &horisontalt", ID_WINDOWS_TILEHORIZONTALLY + MENUITEM "Hele &vertikalt", ID_WINDOWS_TILEVERTICALLY + MENUITEM "&Minimer", ID_WINDOWS_MINIMIZE + MENUITEM "Ma&ksimer", ID_WINDOWS_MAXIMIZE + MENUITEM "&Overlappet", ID_WINDOWS_CASCADE + MENUITEM SEPARATOR + MENUITEM "&Avslutt oppgave", ID_APPLICATION_PAGE_ENDTASK + MENUITEM "&Gå til Prosess", ID_APPLICATION_PAGE_GOTOPROCESS + + END +END + +IDR_TRAY_POPUP MENU DISCARDABLE +BEGIN + POPUP "DUMMY" + BEGIN + MENUITEM "&Få tilbake", ID_RESTORE + MENUITEM "&Avslutt", ID_FILE_EXIT + MENUITEM SEPARATOR + MENUITEM "&Alltid på topp", ID_OPTIONS_ALWAYSONTOP + END +END + +IDR_PROCESS_PAGE_CONTEXT MENU DISCARDABLE +BEGIN + POPUP "DUMMY" + BEGIN + MENUITEM "&Avslutt Prosess", ID_PROCESS_PAGE_ENDPROCESS + MENUITEM "Avslutt Prosess&tre", ID_PROCESS_PAGE_ENDPROCESSTREE + + MENUITEM "&Feilsøking", ID_PROCESS_PAGE_DEBUG + MENUITEM SEPARATOR + POPUP "Angi &prioritet" + BEGIN + MENUITEM "&Sanntid", ID_PROCESS_PAGE_SETPRIORITY_REALTIME + + MENUITEM "&Høy", ID_PROCESS_PAGE_SETPRIORITY_HIGH + + MENUITEM "&Høyere enn normalt", ID_PROCESS_PAGE_SETPRIORITY_ABOVENORMAL + + MENUITEM "&Normal", ID_PROCESS_PAGE_SETPRIORITY_NORMAL + + MENUITEM "&Lavere enn normal", ID_PROCESS_PAGE_SETPRIORITY_BELOWNORMAL + + MENUITEM "&Lav", ID_PROCESS_PAGE_SETPRIORITY_LOW + + END + MENUITEM "Sett &tiltrekning ...", ID_PROCESS_PAGE_SETAFFINITY + MENUITEM "Rediger Debug &kanaler...", ID_PROCESS_PAGE_DEBUGCHANNELS + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 259, 210 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "Om Oppgavebehandling" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Oppgavebehandler v1.0\nCopyright (C) 1999 - 2001\nby Brian Palmer (brianp@reactos.org)", + IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,53,28, + 122,26 + DEFPUSHBUTTON "OK",IDOK,183,189,44,14,WS_GROUP + ICON IDI_TASKMANAGER,IDC_STATIC,19,30,20,20 + EDITTEXT IDC_LICENSE_EDIT,53,63,174,107,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +IDD_TASKMGR_DIALOG DIALOG DISCARDABLE 0, 0, 264, 246 +STYLE DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | + WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | + WS_THICKFRAME +CAPTION "Oppgavebehandler" +MENU IDR_TASKMANAGER +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Tab1",IDC_TAB,"SysTabControl32",WS_TABSTOP,3,3,257,228 +END + +IDD_APPLICATION_PAGE DIALOG DISCARDABLE 0, 0, 247, 210 +STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Liste2",IDC_APPLIST,"SysListView32",LVS_REPORT | + LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,7,7,233,177 + PUSHBUTTON "&Ny oppgave...",IDC_NEWTASK,187,189,53,14 + PUSHBUTTON "&Bytt til",IDC_SWITCHTO,131,189,53,14,WS_DISABLED + PUSHBUTTON "&Avslutt oppgave",IDC_ENDTASK,75,189,53,14,WS_DISABLED +END + +IDD_PROCESS_PAGE DIALOG DISCARDABLE 0, 0, 247, 210 +STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Liste2",IDC_PROCESSLIST,"SysListView32",LVS_REPORT | + LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | + WS_BORDER | WS_TABSTOP,7,7,233,177 + PUSHBUTTON "&Avslutt prosess",IDC_ENDPROCESS,171,189,69,14 + CONTROL "&Vis prosesser fra alle brukere",IDC_SHOWALLPROCESSES, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,191,111,10 +END + +//IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 +IDD_PERFORMANCE_PAGE DIALOGEX DISCARDABLE 0, 0, 247, 210 +STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Bruk av CPU",IDC_CPU_USAGE_FRAME,5,5,60,54,WS_TABSTOP, WS_EX_TRANSPARENT + GROUPBOX "Bruk av vekslefil",IDC_MEM_USAGE_FRAME,5,63,60,54,BS_LEFTTEXT, WS_EX_TRANSPARENT + GROUPBOX "Totalt",IDC_TOTALS_FRAME,5,122,111,39,0,WS_EX_TRANSPARENT + GROUPBOX "Tildelt minne (kb)",IDC_COMMIT_CHARGE_FRAME,5,166,111,39,0,WS_EX_TRANSPARENT + GROUPBOX "Fysisk minne (kb)",IDC_PHYSICAL_MEMORY_FRAME,131,122,111,39,0,WS_EX_TRANSPARENT + GROUPBOX "Kjerne minne (kb)",IDC_KERNEL_MEMORY_FRAME,131,166,111,39,0,WS_EX_TRANSPARENT + LTEXT "Referanser",IDS_TOTALS_HANDLE_COUNT,12,131,27,8 + LTEXT "Tråder",IDS_TOTALS_THREAD_COUNT,12,140,27,8 + LTEXT "Prosesser",IDS_TOTALS_PROCESS_COUNT,12,149,34,8 + EDITTEXT IDC_TOTALS_HANDLE_COUNT,65,131,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_TOTALS_THREAD_COUNT,65,140,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_TOTALS_PROCESS_COUNT,65,149,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + LTEXT "Totalt",IDS_COMMIT_CHARGE_TOTAL,12,175,27,8 + LTEXT "Begrensning",IDS_COMMIT_CHARGE_LIMIT,12,184,15,8 + LTEXT "Topp",IDS_COMMIT_CHARGE_PEAK,12,193,34,8 + EDITTEXT IDC_COMMIT_CHARGE_TOTAL,65,174,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_COMMIT_CHARGE_LIMIT,65,184,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_COMMIT_CHARGE_PEAK,65,193,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + LTEXT "Totalt",IDS_PHYSICAL_MEMORY_TOTAL,137,131,27,8 + LTEXT "Tilgjengelig",IDS_PHYSICAL_MEMORY_AVAILABLE,137,140,30,8 + LTEXT "Systembuffer",IDS_PHYSICAL_MEMORY_SYSTEM_CACHE,137,149,46,8 + EDITTEXT IDC_PHYSICAL_MEMORY_TOTAL,185,131,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_PHYSICAL_MEMORY_AVAILABLE,185,140,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_PHYSICAL_MEMORY_SYSTEM_CACHE,185,149,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + LTEXT "Totalt",IDS_KERNEL_MEMORY_TOTAL,137,174,27,8 + LTEXT "Sidevekslet",IDS_KERNEL_MEMORY_PAGED,137,184,21,8 + LTEXT "Ikke sidevekslet",IDS_KERNEL_MEMORY_NONPAGED,137,193,34,8 + EDITTEXT IDC_KERNEL_MEMORY_TOTAL,185,174,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_KERNEL_MEMORY_PAGED,185,184,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_KERNEL_MEMORY_NONPAGED,185,193,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + GROUPBOX "Bruk av CPU",IDC_CPU_USAGE_HISTORY_FRAME,74,5,168,54,0,WS_EX_TRANSPARENT + GROUPBOX "Logg for bruk av sidevekslingsfil",IDC_MEMORY_USAGE_HISTORY_FRAME,74,63,168,54,0,WS_EX_TRANSPARENT + PUSHBUTTON "Vis bruk av CPU",IDC_CPU_USAGE_GRAPH,12,17,47,37,0, + WS_EX_CLIENTEDGE + PUSHBUTTON "Vis bruk av MEM",IDC_MEM_USAGE_GRAPH,12,75,47,37,0, + WS_EX_CLIENTEDGE + PUSHBUTTON "Logg for bruk av CPU",IDC_CPU_USAGE_HISTORY_GRAPH,81,17, + 153,37,0,WS_EX_CLIENTEDGE + PUSHBUTTON "MEM bruk historie",IDC_MEM_USAGE_HISTORY_GRAPH,81,75, + 153,37,0,WS_EX_CLIENTEDGE +END + +IDD_DEBUG_CHANNELS_DIALOG DIALOG DISCARDABLE 0, 0, 247, 210 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Debug kanaler" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "List2",IDC_DEBUG_CHANNELS_LIST,"SysListView32",LVS_REPORT | + LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | + LVS_SORTASCENDING,7,7,233,177 + PUSHBUTTON "Avslutt",IDOK,171,189,69,14 +END + +IDD_AFFINITY_DIALOG DIALOG DISCARDABLE 0, 0, 231, 154 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Prosessor slektskap" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "OK",IDOK,120,133,50,14 + PUSHBUTTON "Avbryt",IDCANCEL,174,133,50,14 + LTEXT "Prosessor slektskap innstilling kontrols som CPU prosessen vil bli godtatt til å kjøre på.", + IDC_STATIC,5,5,220,16 + CONTROL "CPU 0",IDC_CPU0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 11,28,37,10 + CONTROL "CPU 1",IDC_CPU1,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,41,37,10 + CONTROL "CPU 2",IDC_CPU2,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,54,37,10 + CONTROL "CPU 3",IDC_CPU3,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,67,37,10 + CONTROL "CPU 4",IDC_CPU4,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,80,37,10 + CONTROL "CPU 5",IDC_CPU5,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,93,37,10 + CONTROL "CPU 6",IDC_CPU6,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,106,37,10 + CONTROL "CPU 7",IDC_CPU7,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,119,37,10 + CONTROL "CPU 8",IDC_CPU8,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,61,28,37,10 + CONTROL "CPU 9",IDC_CPU9,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,61,41,37,10 + CONTROL "CPU 10",IDC_CPU10,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,54,41,10 + CONTROL "CPU 11",IDC_CPU11,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,67,41,10 + CONTROL "CPU 12",IDC_CPU12,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,80,41,10 + CONTROL "CPU 13",IDC_CPU13,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,93,41,10 + CONTROL "CPU 14",IDC_CPU14,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,106,41,10 + CONTROL "CPU 15",IDC_CPU15,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,119,41,10 + CONTROL "CPU 16",IDC_CPU16,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,28,41,10 + CONTROL "CPU 17",IDC_CPU17,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,41,41,10 + CONTROL "CPU 18",IDC_CPU18,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,54,41,10 + CONTROL "CPU 19",IDC_CPU19,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,67,41,10 + CONTROL "CPU 20",IDC_CPU20,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,80,41,10 + CONTROL "CPU 21",IDC_CPU21,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,93,41,10 + CONTROL "CPU 22",IDC_CPU22,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,106,41,10 + CONTROL "CPU 23",IDC_CPU23,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,119,41,10 + CONTROL "CPU 24",IDC_CPU24,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,28,41,10 + CONTROL "CPU 25",IDC_CPU25,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,41,41,10 + CONTROL "CPU 26",IDC_CPU26,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,54,41,10 + CONTROL "CPU 27",IDC_CPU27,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,67,41,10 + CONTROL "CPU 28",IDC_CPU28,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,80,41,10 + CONTROL "CPU 29",IDC_CPU29,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,93,41,10 + CONTROL "CPU 30",IDC_CPU30,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,106,41,10 + CONTROL "CPU 31",IDC_CPU31,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,119,41,10 +END + +IDD_COLUMNS_DIALOG DIALOG DISCARDABLE 0, 0, 195, 199 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Velg spaltevis" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "OK",IDOK,84,178,50,14 + PUSHBUTTON "Avbryt",IDCANCEL,138,178,50,14 + LTEXT "Velg spaltevis det vil oppstå på Prosess side av oppgavebehandler.", + IDC_STATIC,7,7,181,17 + CONTROL "&Bilde navn",IDC_IMAGENAME,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,7,28,56,10 + CONTROL "&PID (Prosess identifikator)",IDC_PID,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,39,88,10 + CONTROL "&CPU brukt",IDC_CPUUSAGE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,50,53,10 + CONTROL "CPU Ti&d",IDC_CPUTIME,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,61,48,10 + CONTROL "&Minne brukt",IDC_MEMORYUSAGE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,72,63,10 + CONTROL "Minne brukt &Delta",IDC_MEMORYUSAGEDELTA,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,83,82,10 + CONTROL "Ma&ks minne bruk",IDC_PEAKMEMORYUSAGE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,94,82,10 + CONTROL "Side &mangeler",IDC_PAGEFAULTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,105,53,10 + CONTROL "&Bruker objekt",IDC_USEROBJECTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,116,62,10 + CONTROL "I/O Leser",IDC_IOREADS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,127,49,10 + CONTROL "I/O Leser Bytes",IDC_IOREADBYTES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,138,65,10 + CONTROL "&Sesjon ID",IDC_SESSIONID,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,149,50,10 + CONTROL "Bruker &Navn",IDC_USERNAME,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,160,51,10 + CONTROL "Side &mangel Delta",IDC_PAGEFAULTSDELTA,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,28,72,10 + CONTROL "&Virtuelt minne Størrelse",IDC_VIRTUALMEMORYSIZE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,39,77,10 + CONTROL "Si&de innsats",IDC_PAGEDPOOL,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,50,53,10 + CONTROL "I&ngen-side innsats",IDC_NONPAGEDPOOL,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,61,67,10 + CONTROL "Base P&rioritet",IDC_BASEPRIORITY,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,72,55,10 + CONTROL "&Handle regne",IDC_HANDLECOUNT,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,83,59,10 + CONTROL "&Tråd medregne",IDC_THREADCOUNT,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,94,59,10 + CONTROL "GDI Objekt",IDC_GDIOBJECTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,105,55,10 + CONTROL "I/O skriver",IDC_IOWRITES,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,116,49,10 + CONTROL "I/O skriver Bytes",IDC_IOWRITEBYTES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,127,65,10 + CONTROL "I/O Annet",IDC_IOOTHER,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,138,46,10 + CONTROL "I/O Annet Byte",IDC_IOOTHERBYTES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,149,65,10 +END + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""resource.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 252 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END + + IDD_TASKMGR_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 3 + RIGHTMARGIN, 260 + TOPMARGIN, 3 + BOTTOMMARGIN, 231 + END + + IDD_APPLICATION_PAGE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 240 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END + + IDD_PROCESS_PAGE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 240 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END + + IDD_PERFORMANCE_PAGE, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 242 + VERTGUIDE, 12 + VERTGUIDE, 65 + VERTGUIDE, 110 + TOPMARGIN, 5 + BOTTOMMARGIN, 205 + END + + IDD_AFFINITY_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 224 + VERTGUIDE, 11 + VERTGUIDE, 61 + VERTGUIDE, 116 + VERTGUIDE, 175 + TOPMARGIN, 7 + BOTTOMMARGIN, 147 + HORZGUIDE, 28 + HORZGUIDE, 38 + HORZGUIDE, 51 + HORZGUIDE, 64 + HORZGUIDE, 77 + HORZGUIDE, 90 + HORZGUIDE, 103 + HORZGUIDE, 116 + HORZGUIDE, 129 + END + + IDD_COLUMNS_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 188 + VERTGUIDE, 107 + TOPMARGIN, 7 + BOTTOMMARGIN, 192 + HORZGUIDE, 28 + END +END +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_APP_TITLE "Oppgavebehandling" + IDC_TASKMGR "Oppgavebehandling" + IDS_IDLE_PROCESS "System Idle Process" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_FILE_NEW "Kjør et nytt program" + ID_OPTIONS_ALWAYSONTOP "Oppgavebehandler fortsette å være forran av alle andre vinduer uten minimert" + ID_OPTIONS_MINIMIZEONUSE + "Oppgavebehandelen er minimert når en SwitchTo operasjon er oppført" + ID_OPTIONS_HIDEWHENMINIMIZED "Skjule oppgavebehandelen når det er minimert" + ID_VIEW_REFRESH "Nødvendighet for oppgavebehandelen å oppdateres nå, hensynsløs av oppdatering hastighet innstillingen" + ID_VIEW_LARGE "Vis oppgavene ved å bruke store ikoner" + ID_VIEW_SMALL "Vis oppgavene ved å bruke små ikoner" + ID_VIEW_DETAILS "Vis informasjon om hver oppgave" + ID_VIEW_UPDATESPEED_HIGH "Oppdater skjermen to ganger per sekund" + ID_VIEW_UPDATESPEED_NORMAL "Oppdater skjermen hver to sekunds" + ID_VIEW_UPDATESPEED_LOW "Oppdater skjermen hver fire sekund" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_VIEW_UPDATESPEED_PAUSED "Kan ikke automatisk oppdateres" + ID_WINDOWS_TILEHORIZONTALLY + "Tittel vindu horisontalt på skrivebordet" + ID_WINDOWS_TILEVERTICALLY "Tittel vindu vertikalt på skrivebordet" + ID_WINDOWS_MINIMIZE "Minimalisere vinduet" + ID_WINDOWS_MAXIMIZE "Maksimere vinduet" + ID_WINDOWS_CASCADE "Cascades vinduet diagonalt på skrivebordet" + ID_WINDOWS_BRINGTOFRONT "Bringe vinduet front, men kan ikke bryter til det" + ID_HELP_TOPICS "Vis oppgavebehandler emner i hjelp" + ID_HELP_ABOUT "Vis program informasjon, versjon nummer, og enerett" + ID_FILE_EXIT "Avslutt oppgavebehandler applikasjon" + ID_OPTIONS_SHOW16BITTASKS + "Vis 16-bit oppgaver under assosiert ntvdm.exe" + ID_VIEW_SELECTCOLUMNS "Velg hva kolonner vil bli synlig på Prosess side" + ID_VIEW_SHOWKERNELTIMES "Vis kernel tid i utførelse diagramer" + ID_VIEW_CPUHISTORY_ONEGRAPHALL + "En singel historie graf viser totalt CPU bruk" + ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU "Hver CPU har dems egene historie graf" + ID_APPLICATION_PAGE_SWITCHTO + "Skaffe en oppgave til forgrunn, endre fokus til den oppgaven" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_ENDTASK "Fortell valgte oppgave for å avsluttes" + ID_GOTOPROCESS "Endre fokus til prosess av valgte oppgave" + ID_RESTORE "Gjenopprette oppgavebehandelen fra dens skjulte stand" + ID_PROCESS_PAGE_ENDPROCESS "Fjern prosessen fra systemet" + ID_PROCESS_PAGE_ENDPROCESSTREE + "Flytte denne prosessen og alle etterkommer fra systemet" + ID_PROCESS_PAGE_DEBUG "Tilknytte feilsøkingsprogram til denne prosess" + ID_PROCESS_PAGE_SETAFFINITY + "Kontroll hvilken prosessorer prosessen vil bli godtatt å kjøre på" + ID_PROCESS_PAGE_SETPRIORITY_REALTIME + "Sett prosess til EKTETID prioritet klasse" + ID_PROCESS_PAGE_SETPRIORITY_HIGH "Sett prosess til HØY prioritet klasse" + ID_PROCESS_PAGE_SETPRIORITY_ABOVENORMAL + "Sett prosess til OVER NORMAL prioritet klasse" + ID_PROCESS_PAGE_SETPRIORITY_NORMAL + "Sett prosess til NORMAL prioritet klasse" + ID_PROCESS_PAGE_SETPRIORITY_BELOWNORMAL + "Sett prosess til NEDENFOR NORMAL prioritet klasse" + ID_PROCESS_PAGE_SETPRIORITY_LOW "Sett prosess til LAV prioritet klasse" + IDS_LICENSE "Dette programet er gratis programvare; 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.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA." +END + + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TAB_APPS "Programmer" + IDS_TAB_PROCESSES "Prosesser" + IDS_TAB_PERFORMANCE "Ytelse" + IDS_TAB_TASK "Oppgave" + IDS_TAB_STATUS "Status" + IDS_TAB_IMAGENAME "Prosessnavn" + IDS_TAB_PID "PID" + IDS_TAB_USERNAME "Brukernavn" + IDS_TAB_SESSIONID "Sesjon ID" + IDS_TAB_CPU "CPU" + IDS_TAB_CPUTIME "CPU Tid" + IDS_TAB_MEMUSAGE "Bruk av vekslefil" + IDS_TAB_PEAKMEMUSAGE "Maks bruk av Mem" + IDS_TAB_MEMDELTA "Mem Delta" + IDS_TAB_PAGEFAULT "Side mangel" + IDS_TAB_PFDELTA "PF Delta" + IDS_TAB_VMSIZE "VM Størrelse" + IDS_TAB_PAGEDPOOL "Sideveksling samle" + IDS_TAB_NPPOOL "NP samle" + IDS_TAB_BASEPRI "Base Pri" + IDS_TAB_HANDLES "Referanser" + IDS_TAB_THREADS "Tråder" + IDS_TAB_USERPBJECTS "BRUKER Objekt" + IDS_TAB_GDIOBJECTS "GDI Objekt" + IDS_TAB_IOREADS "I/O Leser" + IDS_TAB_IOWRITES "I/O Skriver" + IDS_TAB_IOOTHER "I/O Annet" + IDS_TAB_IOREADBYTES "I/O Leser Byte" + IDS_TAB_IOWRITESBYTES "I/O Skriver Byte" + IDS_TAB_IOOTHERBYTES "I/O Annet Byte" + IDS_MENU_SELECTCOLUMNS "&Velg kollone..." + IDS_MENU_16BITTASK "&Vis 16-biter oppgave" + IDS_MENU_WINDOWS "&Vinduer" + IDS_MENU_LARGEICONS "St&ore Ikoner" + IDS_MENU_SMALLICONS "S&må Ikoner" + IDS_MENU_DETAILS "&Detaljer" + IDS_MENU_ONEGRAPHALLCPUS "&En Graf, Alle CPU" + IDS_MENU_ONEGRAPHPERCPU "En Graf &Per CPU" + IDS_MENU_CPUHISTORY "&CPU Historie" + IDS_MENU_SHOWKERNELTIMES "&Vis Kernel tider" + IDS_CREATENEWTASK "Opprett ny oppgave" + IDS_CREATENEWTASK_DESC "Skriv navnet av et program, mappe, dokument, eller Internett-ressursen, og oppgavebehandelen vil åpne det for deg." + IDS_MSG_ACCESSPROCESSAFF "Ikke i stand til tilgang eller sette Prosess slektskap" + IDS_MSG_PROCESSONEPRO "Prosessen må ha tiltrekning med minst en prosessor." + IDS_MSG_INVALIDOPTION "Ugyldig Operasjon" + IDS_MSG_UNABLEDEBUGPROCESS "Ute av stand til feilsøking prosess" + IDS_MSG_WARNINGDEBUG "ADVARSEL: Feilretning denne prosess kan følge å miste data.\nEr du sikker du vil tilknytte feilsøkingsprogramet?" + IDS_MSG_TASKMGRWARNING "Oppgavebehandler advarsel" + IDS_MSG_WARNINGTERMINATING "ADVARSEL: Avsluttes en prosess kan forutsake uønsket\nresultat inkluderer miste av data og systemet kan bli ustabilt. \nprosessen vil ikke kunne gjenopprette sin tilstand eller \ndata slik de var før avslutting. Er du sikker på at du vil\navslutte prosessen?" + IDS_MSG_UNABLETERMINATEPRO "Ikke i stand til å avslutte prosess" + IDS_MSG_UNABLECHANGEPRIORITY "Ikke i stand til endre prioritet" + IDS_MSG_WARNINGCHANGEPRIORITY "ADVARSEL: Endring av prioritet klasse av denne prosess kan\nforutsake uønsket resultat inkluderer systemet kan bli ustabilt. Er du\nsikker på at du vil endre prioritet klassen?" + IDS_MSG_TRAYICONCPUUSAGE "Bruk av CPU : %d%%" + IDS_STATUS_MEMUSAGE "Tildelt minne: %dK / %dK" + IDS_STATUS_CPUUSAGE "Bruk av CPU: %3d%%" + IDS_STATUS_PROCESSES "Prosesser: %d" + IDS_Not_Responding "Ingen reaksjon" + IDS_Running "Kjører" +END + + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/reactos/base/applications/taskmgr/res/taskmgr.ico b/reactos/base/applications/taskmgr/res/taskmgr.ico index 727ad7be44d..e428f4b4f55 100644 Binary files a/reactos/base/applications/taskmgr/res/taskmgr.ico and b/reactos/base/applications/taskmgr/res/taskmgr.ico differ diff --git a/reactos/base/applications/taskmgr/taskmgr.rbuild b/reactos/base/applications/taskmgr/taskmgr.rbuild index 56b0b0f376b..55a28ea517b 100644 --- a/reactos/base/applications/taskmgr/taskmgr.rbuild +++ b/reactos/base/applications/taskmgr/taskmgr.rbuild @@ -7,8 +7,10 @@ ntdll kernel32 + advapi32 user32 gdi32 + shell32 comctl32 precomp.h diff --git a/reactos/base/applications/taskmgr/taskmgr.rc b/reactos/base/applications/taskmgr/taskmgr.rc index 6491be62d49..8762afee3c2 100644 --- a/reactos/base/applications/taskmgr/taskmgr.rc +++ b/reactos/base/applications/taskmgr/taskmgr.rc @@ -210,5 +210,6 @@ IDB_TRAYICON BITMAP DISCARDABLE res/trayicon.bmp #include "Hu.rc" #include "Ja.rc" #include "Nl.rc" +#include "No.rc" #include "Sv.rc" #include "Uk.rc" diff --git a/reactos/base/applications/testsets/smss/movefile/movefile.cpp b/reactos/base/applications/testsets/smss/movefile/movefile.cpp new file mode 100644 index 00000000000..c3f6d4f303e --- /dev/null +++ b/reactos/base/applications/testsets/smss/movefile/movefile.cpp @@ -0,0 +1,235 @@ +/* + * PROJECT: ReactOS Test applications + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/testsets/smss/movefile.cpp + * PURPOSE: Provides testing for the "move file after reboot" + * function of smss.exe/kernel32.dll + * PROGRAMMERS: Dmitriy Philippov (shedon@mail.ru) + */ + + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include "windows.h" +#include +#include +#include "stdlib.h" +#include "string.h" + + +void Usage() +{ + printf(" Usage: smssTest.exe -g|c|s|d \n \ + g - generate test files \n \ + c - check files after reboot \n \ + s - show registry entry \n \ + d - delete registry value \n"); +} + +int ShowRegValue() +{ + BYTE lpBuff[255]; + memset(lpBuff, 0, sizeof(lpBuff)); + + DWORD lSize = sizeof(lpBuff); + HKEY hKey; + LONG retValue; + // test registry entry + retValue = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Session Manager", 0, KEY_QUERY_VALUE, &hKey); + if( ERROR_SUCCESS != retValue ) { + printf("RegOpenKeyEx err=%ld \n", retValue); + return 1; + } + + retValue = RegQueryValueEx(hKey, "PendingFileRenameOperations", NULL, NULL, lpBuff, &lSize); + if( ERROR_SUCCESS != retValue ) { + printf("RegQueryValueEx err=%ld \n", retValue); + lSize = 0; + } + + printf("reg data: \n"); + for(UINT i=0; i + . + + 0x0500 + 0x0600 + 0x0600 + kernel32 + advapi32 + user32 + movefile.cpp + movefile.rc + \ No newline at end of file diff --git a/reactos/base/applications/testsets/smss/movefile/movefile.rc b/reactos/base/applications/testsets/smss/movefile/movefile.rc new file mode 100644 index 00000000000..877f2b46020 --- /dev/null +++ b/reactos/base/applications/testsets/smss/movefile/movefile.rc @@ -0,0 +1,9 @@ +#include +#include "resource.h" + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Move File after reboot test\0" +#define REACTOS_STR_INTERNAL_NAME "movefiletest\0" +#define REACTOS_STR_ORIGINAL_FILENAME "movefiletest.exe\0" +#include + + diff --git a/reactos/base/applications/testsets/smss/smss.rbuild b/reactos/base/applications/testsets/smss/smss.rbuild new file mode 100644 index 00000000000..bb407f85695 --- /dev/null +++ b/reactos/base/applications/testsets/smss/smss.rbuild @@ -0,0 +1,7 @@ + + + + + + + diff --git a/reactos/base/applications/testsets/testsets.rbuild b/reactos/base/applications/testsets/testsets.rbuild new file mode 100644 index 00000000000..a0cdaa833eb --- /dev/null +++ b/reactos/base/applications/testsets/testsets.rbuild @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/reactos/base/applications/testsets/user32/drawcaption/capicon.c b/reactos/base/applications/testsets/user32/drawcaption/capicon.c new file mode 100644 index 00000000000..3595edced7d --- /dev/null +++ b/reactos/base/applications/testsets/user32/drawcaption/capicon.c @@ -0,0 +1,145 @@ +/* + * Copyright 2006 Saveliy Tretiakov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "windows.h" +#include "stdio.h" +#include "resource.h" + +WCHAR WndClass[] = L"capicon_class"; + +HINSTANCE hInst; +INT testnum = 0; + + +LRESULT CALLBACK WndProc(HWND hWnd, + UINT msg, + WPARAM wParam, + LPARAM lParam) +{ + HICON hIcon; + + switch (msg) + { + case WM_GETICON: + if(testnum>2) + { + if(wParam == ICON_SMALL) + hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON2SM)); + else if(wParam == ICON_BIG) + hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON2BIG)); + else hIcon = (HICON)1; + + if(!hIcon) + { + printf("LoadIcon() failed: %d\n", (INT)GetLastError()); + break; + } + + return (LRESULT)hIcon; + } + break; + + case WM_DESTROY: + PostQuitMessage(0); + return 0; + } + + return DefWindowProc(hWnd, msg, wParam, lParam); +} + + +INT main(INT argc, CHAR **argv) +{ + HWND hWnd; + MSG msg; + WNDCLASSEX wcx; + UINT result; + + if(argc<2) + { + printf("DrawCaption icon test.\n"); + printf("USAGE: drawcap.exe \n\n"); + printf("Available tests:\n" + "1. Class small icon\n" + "2. Class big icon\n" + "3. Class small icon + WM_GETICON\n" + "4. Class big icon + WM_GETICON\n" + "5. WM_GETICON only\n\n"); + return 0; + } + + testnum = atoi(argv[1]); + if(testnum < 1 || testnum > 5) + { + printf("Unknown test %d\n", testnum); + return 1; + } + + hInst = GetModuleHandle(NULL); + + memset(&wcx, 0, sizeof(wcx)); + wcx.cbSize = sizeof(wcx); + wcx.style = CS_HREDRAW | CS_VREDRAW; + wcx.lpfnWndProc = (WNDPROC) WndProc; + wcx.hInstance = hInst; + wcx.hbrBackground = (HBRUSH)COLOR_WINDOW; + wcx.lpszClassName = WndClass; + if(testnum<5)wcx.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON1BIG)); + if(testnum == 1 || testnum == 3) + wcx.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON1SM)); + + if(!(result = RegisterClassEx(&wcx))) + { + printf("Shit! RegisterClassEx failed: %d\n", + (int)GetLastError()); + return 1; + } + + hWnd = CreateWindowEx(0, + WndClass, + L"DrawCaption icon test", + WS_OVERLAPPED|WS_THICKFRAME|WS_SYSMENU, + CW_USEDEFAULT, + CW_USEDEFAULT, + 250, + 100, + NULL, + 0, + hInst, + NULL); + + if(!hWnd) + { + printf("Shit! Can't create wnd!\n"); + UnregisterClass(WndClass, hInst); + return 1; + } + + + ShowWindow(hWnd, SW_SHOW); + UpdateWindow(hWnd); + + while(GetMessage(&msg, NULL, 0, 0 )) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + UnregisterClass(WndClass, hInst); + return 0; +} diff --git a/reactos/base/applications/testsets/user32/drawcaption/capicon.rc b/reactos/base/applications/testsets/user32/drawcaption/capicon.rc new file mode 100644 index 00000000000..70f4c2501db --- /dev/null +++ b/reactos/base/applications/testsets/user32/drawcaption/capicon.rc @@ -0,0 +1,13 @@ +#include +#include "resource.h" + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS DrawCaption icon test\0" +#define REACTOS_STR_INTERNAL_NAME "capicon\0" +#define REACTOS_STR_ORIGINAL_FILENAME "capicon.exe\0" +#include + +ID_ICON1BIG ICON res\icon1big.ico +ID_ICON1SM ICON res\icon1sm.ico +ID_ICON2BIG ICON res\icon2big.ico +ID_ICON2SM ICON res\icon2sm.ico + diff --git a/reactos/base/applications/testsets/user32/drawcaption/drawcap.c b/reactos/base/applications/testsets/user32/drawcaption/drawcap.c new file mode 100644 index 00000000000..31f9dcc9986 --- /dev/null +++ b/reactos/base/applications/testsets/user32/drawcaption/drawcap.c @@ -0,0 +1,289 @@ +/* + * Copyright 2006 Saveliy Tretiakov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "windows.h" +#include "resource.h" +#include "stdio.h" + +WCHAR CaptWndClass[] = L"captwnd_class"; + +HINSTANCE hInst; +INT testnum = 0; + +//BOOL STDCALL (*DrawCaptionTemp) ( +// HWND hwnd, +// HDC hdc, +// const RECT *rect, +// HFONT hFont, +// HICON hIcon, +// LPCWSTR str, +// UINT uFlags); + +VOID CapTest(HWND hWnd, + HDC hDc, + LPRECT pR, + WCHAR *Text, + DWORD Flags, + WCHAR *AddonStr, + DWORD Addon) +{ + WCHAR Buf[512]; + + lstrcpy(Buf, AddonStr); + if(lstrlen(Buf))lstrcat(Buf, L" | "); + lstrcat(Buf, Text); + + DrawText( hDc, Buf, lstrlen(Buf), pR, DT_LEFT ); + + pR->top+=20; + pR->bottom+=20; + + if(!DrawCaption(hWnd, hDc, pR, Flags | Addon)) + { + printf("PAINT: DrawCaption failed: %d\n", (int)GetLastError()); + } + + pR->top+=30; + pR->bottom+=30; +} + +VOID DrawCaptionTest(HWND hWnd, HDC hDc, WCHAR *AddonStr, DWORD Addon) +{ + RECT Rect; + GetClientRect(hWnd, &Rect); + Rect.bottom = 30; + Rect.left = 10; + Rect.right-=10; + Rect.top = 10; + + CapTest(hWnd, hDc, &Rect, L"DC_TEXT:", DC_TEXT, AddonStr, Addon); + + CapTest(hWnd, hDc, &Rect, + L"DC_TEXT | DC_ACTIVE:", + DC_TEXT | DC_ACTIVE, + AddonStr, Addon); + + CapTest(hWnd, hDc, &Rect, + L"DC_TEXT | DC_ICON:" , + DC_TEXT | DC_ICON, + AddonStr, Addon); + + CapTest(hWnd, hDc, &Rect, + L"DC_TEXT | DC_ACTIVE | DC_ICON:" , + DC_TEXT | DC_ACTIVE | DC_ICON, + AddonStr, Addon); + + CapTest(hWnd, hDc, &Rect, + L"DC_TEXT | DC_INBUTTON:" , + DC_TEXT | DC_INBUTTON, + AddonStr, Addon); + + CapTest(hWnd, hDc, &Rect, + L"DC_TEXT | DC_ACTIVE | DC_INBUTTON:" , + DC_TEXT | DC_ACTIVE | DC_INBUTTON, + AddonStr, Addon); + + CapTest(hWnd, hDc, &Rect, + L"DC_TEXT | DC_ICON | DC_INBUTTON:" , + DC_TEXT | DC_ICON | DC_INBUTTON, + AddonStr, Addon); + + CapTest(hWnd, hDc, &Rect, + L"DC_TEXT | DC_ACTIVE | DC_ICON | DC_INBUTTON:" , + DC_TEXT | DC_ACTIVE | DC_ICON | DC_INBUTTON, + AddonStr, Addon); + +} + +LRESULT CALLBACK CaptWndProc(HWND hWnd, + UINT msg, + WPARAM wParam, + LPARAM lParam) +{ + + + switch (msg) + { + + case WM_PAINT: + { + HDC hDc; + PAINTSTRUCT Ps; + + hDc = BeginPaint(hWnd, &Ps); + SetBkMode( hDc, TRANSPARENT ); + + switch(testnum) + { + case 1: + DrawCaptionTest(hWnd, hDc, L"", 0); + break; + case 2: + DrawCaptionTest(hWnd, hDc, L"DC_GRADIENT", DC_GRADIENT); + break; + case 3: + DrawCaptionTest(hWnd, hDc, L"DC_SMALLCAP", DC_SMALLCAP); + break; + case 4: + DrawCaptionTest(hWnd, hDc, L"DC_BUTTONS", DC_BUTTONS); + break; + case 5: + DrawCaptionTest(hWnd, hDc, + L"DC_GRADIENT | DC_SMALLCAP", + DC_GRADIENT | DC_SMALLCAP); + break; + case 6: + DrawCaptionTest(hWnd, hDc, + L"DC_GRADIENT | DC_BUTTONS", + DC_GRADIENT | DC_BUTTONS); + break; + case 7: + DrawCaptionTest(hWnd, hDc, + L"DC_BUTTONS | DC_SMALLCAP", + DC_BUTTONS | DC_SMALLCAP); + break; + case 8: + DrawCaptionTest(hWnd, hDc, + L"DC_BUTTONS | DC_SMALLCAP | DC_GRADIENT", + DC_BUTTONS | DC_SMALLCAP | DC_GRADIENT); + break; + } + + EndPaint(hWnd, &Ps); + + return 0; + } + + case WM_DESTROY: + { + PostQuitMessage(0); + return 0; + } + } + + return DefWindowProc(hWnd, msg, wParam, lParam); +} + + +INT main(INT argc, CHAR **argv) +{ + HWND hWnd; + MSG msg; + WNDCLASSEX wcx; + UINT result; + HBRUSH hBr; + //HMODULE hLib; + + if(argc<2) + { + printf("DrawCaption testcode.\n"); + printf("USAGE: drawcap.exe [useicon]\n\n"); + printf("Available tests:\n" + "1. DrawCaption test\n" + "2. DrawCaption test + DC_GRADIENT\n" + "3. DrawCaption test + DC_SMALLCAP\n" + "4. DrawCaption test + DC_BUTTONS\n" + "5. DrawCaption test + DC_GRADIENT | DC_SMALLCAP\n" + "6. DrawCaption test + DC_GRADIENT | DC_BUTTONS\n" + "7. DrawCaption test + DC_BUTTONS | DC_SMALLCAP\n" + "8. DrawCaption test + DC_BUTTONS | DC_SMALLCAP | DC_GRADIENT\n\n"); + return 0; + } + + testnum = atoi(argv[1]); + if(testnum < 1 || testnum > 8) + { + printf("Unknown test %d\n", testnum); + return 1; + } + + hInst = GetModuleHandle(NULL); + + //hLib = LoadLibrary(L"user32"); + //if(!hLib) + //{ + // printf("Shit! Can't load user32.dll\n"); + // return 1; + //} + + //DrawCaptionTemp = GetProcAddress(hLib, "DrawCaptionTempW"); + //if(!DrawCaptionTemp) + //{ + // printf("Shit! Can't get DrawCaptionTemp address\n"); + // return 1; + //} + + hBr = CreateSolidBrush(RGB(255, 255, 255)); + if(!hBr) + { + printf("Shit! Can't create brush."); + return 1; + } + + memset(&wcx, 0, sizeof(wcx)); + wcx.cbSize = sizeof(wcx); + wcx.style = CS_HREDRAW | CS_VREDRAW; + wcx.lpfnWndProc = (WNDPROC) CaptWndProc; + wcx.hInstance = hInst; + wcx.hbrBackground = hBr; + wcx.lpszClassName = CaptWndClass; + if(argc > 2) wcx.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON1SM)); + + if(!(result = RegisterClassEx(&wcx))) + { + printf("Shit! RegisterClassEx failed: %d\n", + (int)GetLastError()); + DeleteObject(hBr); + return 1; + } + + hWnd = CreateWindowEx(0, + CaptWndClass, + L"DrawCaption test", + WS_OVERLAPPED|WS_THICKFRAME|WS_SYSMENU, + CW_USEDEFAULT, + CW_USEDEFAULT, + 600, + 470, + NULL, + 0, + hInst, + NULL); + + if(!hWnd) + { + printf("Shit! Can't create wnd!\n"); + UnregisterClass(CaptWndClass, hInst); + DeleteObject(hBr); + return 1; + } + + + ShowWindow(hWnd, SW_SHOW); + UpdateWindow(hWnd); + + while(GetMessage(&msg, NULL, 0, 0 )) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + DeleteObject(hBr); + UnregisterClass(CaptWndClass, hInst); + return 0; +} diff --git a/reactos/base/applications/testsets/user32/drawcaption/drawcap.rc b/reactos/base/applications/testsets/user32/drawcaption/drawcap.rc new file mode 100644 index 00000000000..2ff0a125e76 --- /dev/null +++ b/reactos/base/applications/testsets/user32/drawcaption/drawcap.rc @@ -0,0 +1,11 @@ +#include +#include "resource.h" + +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS DrawCaption test\0" +#define REACTOS_STR_INTERNAL_NAME "drawcap\0" +#define REACTOS_STR_ORIGINAL_FILENAME "drawcap.exe\0" +#include + +ID_ICON1SM ICON res\icon1sm.ico + + diff --git a/reactos/base/applications/testsets/user32/drawcaption/drawcaption.rbuild b/reactos/base/applications/testsets/user32/drawcaption/drawcaption.rbuild new file mode 100644 index 00000000000..9f9024ac2bc --- /dev/null +++ b/reactos/base/applications/testsets/user32/drawcaption/drawcaption.rbuild @@ -0,0 +1,29 @@ + + . + + + + 0x0500 + 0x0600 + 0x0600 + kernel32 + user32 + gdi32 + drawcap.c + drawcap.rc + + + + . + + + + 0x0500 + 0x0600 + 0x0600 + kernel32 + user32 + gdi32 + capicon.c + capicon.rc + diff --git a/reactos/base/applications/testsets/user32/drawcaption/res/icon1big.ico b/reactos/base/applications/testsets/user32/drawcaption/res/icon1big.ico new file mode 100644 index 00000000000..2f4358ac9f8 Binary files /dev/null and b/reactos/base/applications/testsets/user32/drawcaption/res/icon1big.ico differ diff --git a/reactos/base/applications/testsets/user32/drawcaption/res/icon1sm.ico b/reactos/base/applications/testsets/user32/drawcaption/res/icon1sm.ico new file mode 100644 index 00000000000..523c7fc57f3 Binary files /dev/null and b/reactos/base/applications/testsets/user32/drawcaption/res/icon1sm.ico differ diff --git a/reactos/base/applications/testsets/user32/drawcaption/res/icon2big.ico b/reactos/base/applications/testsets/user32/drawcaption/res/icon2big.ico new file mode 100644 index 00000000000..909dbd0621b Binary files /dev/null and b/reactos/base/applications/testsets/user32/drawcaption/res/icon2big.ico differ diff --git a/reactos/base/applications/testsets/user32/drawcaption/res/icon2sm.ico b/reactos/base/applications/testsets/user32/drawcaption/res/icon2sm.ico new file mode 100644 index 00000000000..eeba9f57c65 Binary files /dev/null and b/reactos/base/applications/testsets/user32/drawcaption/res/icon2sm.ico differ diff --git a/reactos/base/applications/testsets/user32/drawcaption/resource.h b/reactos/base/applications/testsets/user32/drawcaption/resource.h new file mode 100644 index 00000000000..b967ebaf3be --- /dev/null +++ b/reactos/base/applications/testsets/user32/drawcaption/resource.h @@ -0,0 +1,10 @@ +#ifndef _CAPICON_RESOURCE_H +#define _CAPICON_RESOURCE_H + +#define ID_ICON1BIG 101 +#define ID_ICON1SM 102 +#define ID_ICON2BIG 103 +#define ID_ICON2SM 104 + + +#endif /* _CAPICON_RESOURCE_H */ diff --git a/reactos/base/applications/testsets/user32/sysicon/sysicon.c b/reactos/base/applications/testsets/user32/sysicon/sysicon.c new file mode 100644 index 00000000000..e6f38c643e4 --- /dev/null +++ b/reactos/base/applications/testsets/user32/sysicon/sysicon.c @@ -0,0 +1,163 @@ +/* + * Copyright 2006 Saveliy Tretiakov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + /* This testapp demonstrates WS_SYSMENU + WS_EX_DLGMODALFRAME + * behavior and shows that DrawCaption does care + * about WS_EX_DLGMODALFRAME and WS_EX_TOOLWINDOW + */ + +#include "windows.h" +#include "stdio.h" +#include "resource.h" + +WCHAR WndClass[] = L"sysicon_class"; + +LRESULT CALLBACK WndProc(HWND hWnd, + UINT msg, + WPARAM wParam, + LPARAM lParam) +{ + + switch (msg) + { + + case WM_PAINT: + { + HDC hDc; + PAINTSTRUCT Ps; + RECT Rect; + GetClientRect(hWnd, &Rect); + + Rect.left = 10; + Rect.top = 10; + Rect.right-=10; + Rect.bottom = 25; + + hDc = BeginPaint(hWnd, &Ps); + SetBkMode( hDc, TRANSPARENT ); + + DrawCaption(hWnd, hDc, &Rect, DC_GRADIENT | DC_ACTIVE | DC_TEXT | DC_ICON); + + EndPaint(hWnd, &Ps); + + return 0; + } + + case WM_DESTROY: + PostQuitMessage(0); + return 0; + } + + return DefWindowProc(hWnd, msg, wParam, lParam); +} + +int APIENTRY WinMain(HINSTANCE hInst, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nCmdShow) +{ + HWND hWnd1, hWnd2, hWnd3; + MSG msg; + WNDCLASSEX wcx; + UINT result; + + memset(&wcx, 0, sizeof(wcx)); + wcx.cbSize = sizeof(wcx); + wcx.lpfnWndProc = (WNDPROC) WndProc; + wcx.hInstance = hInst; + wcx.hbrBackground = (HBRUSH)COLOR_WINDOW; + wcx.lpszClassName = WndClass; + + if(!(result = RegisterClassEx(&wcx))) + { + return 1; + } + + /* WS_EX_DLGMODALFRAME */ + hWnd1 = CreateWindowEx(WS_EX_DLGMODALFRAME, + WndClass, + L"WS_SYSMENU | WS_EX_DLGMODALFRAME", + WS_CAPTION | WS_SYSMENU , + CW_USEDEFAULT, + CW_USEDEFAULT, + 400, + 100, + NULL, + 0, + hInst, + NULL); + + if(!hWnd1) + { + return 1; + } + + ShowWindow(hWnd1, SW_SHOW); + UpdateWindow(hWnd1); + + hWnd2 = CreateWindowEx(WS_EX_TOOLWINDOW, + WndClass, + L"WS_SYSMENU | WS_EX_TOOLWINDOW", + WS_CAPTION | WS_SYSMENU , + CW_USEDEFAULT, + CW_USEDEFAULT, + 400, + 100, + NULL, + 0, + hInst, + NULL); + + if(!hWnd2) + { + return 1; + } + + ShowWindow(hWnd2, SW_SHOW); + UpdateWindow(hWnd2); + + hWnd3 = CreateWindowEx(0, + WndClass, + L"WS_SYSMENU ", + WS_CAPTION | WS_SYSMENU , + CW_USEDEFAULT, + CW_USEDEFAULT, + 400, + 100, + NULL, + 0, + hInst, + NULL); + + if(!hWnd3) + { + return 1; + } + + ShowWindow(hWnd3, SW_SHOW); + UpdateWindow(hWnd3); + + while(GetMessage(&msg, NULL, 0, 0 )) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + UnregisterClass(WndClass, hInst); + return 0; +} diff --git a/reactos/base/applications/testsets/user32/sysicon/sysicon.rbuild b/reactos/base/applications/testsets/user32/sysicon/sysicon.rbuild new file mode 100644 index 00000000000..e94e0ba443d --- /dev/null +++ b/reactos/base/applications/testsets/user32/sysicon/sysicon.rbuild @@ -0,0 +1,13 @@ + + . + + + + 0x0500 + 0x0600 + 0x0600 + kernel32 + user32 + gdi32 + sysicon.c + diff --git a/reactos/base/applications/testsets/user32/user32.rbuild b/reactos/base/applications/testsets/user32/user32.rbuild new file mode 100644 index 00000000000..d72d18db67e --- /dev/null +++ b/reactos/base/applications/testsets/user32/user32.rbuild @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/reactos/base/applications/tsclient/MissTosca.sln b/reactos/base/applications/tsclient/MissTosca.sln new file mode 100644 index 00000000000..7c035a066dd --- /dev/null +++ b/reactos/base/applications/tsclient/MissTosca.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rdesktop-core", "rdesktop\rdesktop-core.vcproj", "{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstsc", "mstsc\mstsc.vcproj", "{1B415732-1F37-415F-957B-EA436301860D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstscax", "mstscax\mstscax.vcproj", "{2C217E9E-9D77-4D6A-9259-216FD56BA56F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rdesktop-core-tester", "porting-tools\rdesktop-core-tester\rdesktop-core-tester.vcproj", "{B172A623-E2BD-4E3F-86E6-620548FE255B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.ActiveCfg = Debug|Win32 + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.Build.0 = Debug|Win32 + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.ActiveCfg = Release|Win32 + {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.Build.0 = Release|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.ActiveCfg = Debug|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.Build.0 = Debug|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.ActiveCfg = Release|Win32 + {1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.Build.0 = Release|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.Build.0 = Debug|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.ActiveCfg = Release|Win32 + {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.Build.0 = Release|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.ActiveCfg = Debug|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.Build.0 = Debug|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.ActiveCfg = Release|Win32 + {B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/reactos/base/applications/tsclient/mstsc/mstsc.cpp b/reactos/base/applications/tsclient/mstsc/mstsc.cpp new file mode 100644 index 00000000000..91806ac5f3b --- /dev/null +++ b/reactos/base/applications/tsclient/mstsc/mstsc.cpp @@ -0,0 +1,7 @@ +#include "stdafx.h" + +int _tmain(int argc, _TCHAR* argv[]) +{ + return 0; +} + diff --git a/reactos/base/applications/tsclient/mstsc/mstsc.vcproj b/reactos/base/applications/tsclient/mstsc/mstsc.vcproj new file mode 100644 index 00000000000..a6d58a9cc1c --- /dev/null +++ b/reactos/base/applications/tsclient/mstsc/mstsc.vcproj @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reactos/base/applications/tsclient/mstsc/stdafx.cpp b/reactos/base/applications/tsclient/mstsc/stdafx.cpp new file mode 100644 index 00000000000..cc6f8043102 --- /dev/null +++ b/reactos/base/applications/tsclient/mstsc/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// mstsc.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/reactos/base/applications/tsclient/mstsc/stdafx.h b/reactos/base/applications/tsclient/mstsc/stdafx.h new file mode 100644 index 00000000000..83cd4a71993 --- /dev/null +++ b/reactos/base/applications/tsclient/mstsc/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/reactos/base/applications/tsclient/mstscax/mstscax.cpp b/reactos/base/applications/tsclient/mstscax/mstscax.cpp new file mode 100644 index 00000000000..91806ac5f3b --- /dev/null +++ b/reactos/base/applications/tsclient/mstscax/mstscax.cpp @@ -0,0 +1,7 @@ +#include "stdafx.h" + +int _tmain(int argc, _TCHAR* argv[]) +{ + return 0; +} + diff --git a/reactos/base/applications/tsclient/mstscax/mstscax.vcproj b/reactos/base/applications/tsclient/mstscax/mstscax.vcproj new file mode 100644 index 00000000000..7b3b3b0144f --- /dev/null +++ b/reactos/base/applications/tsclient/mstscax/mstscax.vcproj @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reactos/base/applications/tsclient/mstscax/stdafx.cpp b/reactos/base/applications/tsclient/mstscax/stdafx.cpp new file mode 100644 index 00000000000..166b44effc9 --- /dev/null +++ b/reactos/base/applications/tsclient/mstscax/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// mstscax.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/reactos/base/applications/tsclient/mstscax/stdafx.h b/reactos/base/applications/tsclient/mstscax/stdafx.h new file mode 100644 index 00000000000..83cd4a71993 --- /dev/null +++ b/reactos/base/applications/tsclient/mstscax/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.cpp b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.cpp new file mode 100644 index 00000000000..66bc2f1e440 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.cpp @@ -0,0 +1,5011 @@ +#include "stdafx.h" + +namespace +{ + using namespace MSTSCLib; + + typedef HRESULT (STDAPICALLTYPE * PFNDLLGETCLASSOBJECT)(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID FAR * ppv); + typedef HRESULT (STDAPICALLTYPE * PFNDLLCANUNLOADNOW)(void); + typedef ULONG (STDAPICALLTYPE * PFNDLLGETTSCCTLVER)(void); + + PFNDLLGETCLASSOBJECT pfnDllGetClassObject = NULL; + PFNDLLCANUNLOADNOW pfnDllCanUnloadNow = NULL; + PFNDLLGETTSCCTLVER pfnDllGetTscCtlVer = NULL; + + HMODULE hmMstscax = NULL; + + extern "C" char __ImageBase; + static const HMODULE hmSelf = reinterpret_cast(&__ImageBase); + + void init() + { + if(hmMstscax) + return; + + TCHAR szFileName[MAX_PATH + 1]; + GetModuleFileName(hmSelf, szFileName, MAX_PATH); + + std::basic_string strFileName(&szFileName[0]); + std::reverse_iterator::const_iterator > begin(strFileName.end()); + std::reverse_iterator::const_iterator > end(strFileName.begin()); + std::basic_string::const_iterator endPath = std::find(begin, end, TEXT('\\')).base(); + + std::basic_string strPath(strFileName.begin(), endPath); + strPath.append(TEXT("original\\mstscax.dll")); + + hmMstscax = LoadLibrary(strPath.c_str()); + pfnDllGetClassObject = (PFNDLLGETCLASSOBJECT)GetProcAddress(hmMstscax, "DllGetClassObject"); + pfnDllCanUnloadNow = (PFNDLLCANUNLOADNOW)GetProcAddress(hmMstscax, "DllCanUnloadNow"); + pfnDllGetTscCtlVer = (PFNDLLGETTSCCTLVER)GetProcAddress(hmMstscax, "DllGetTscCtlVer"); + } + + void dbgprintf(LPCTSTR fmt, ...) + { + TCHAR buf[0x1000]; + + va_list args; + va_start(args, fmt); + StringCbVPrintf(buf, sizeof(buf), fmt, args); + va_end(args); + + StringCbCat(buf, sizeof(buf), TEXT("\n")); + + OutputDebugString(buf); + } + +#if 0 + const IID MsTscAxIIDs[] = + { + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient[] = + { + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient2[] = + { + IID_IMsRdpClient2, + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient3[] = + { + IID_IMsRdpClient3, + IID_IMsRdpClient2, + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + }; + + const IID MsRdpClient4[] = + { + IID_IMsRdpClient4, + IID_IMsRdpClient3, + IID_IMsRdpClient2, + IID_IMsRdpClient, + IID_IMsTscAx, + //IID_IMsTscAxEvents, + IID_IMsTscNonScriptable, + IID_IMsRdpClientNonScriptable, + IID_IMsRdpClientNonScriptable2, + }; +#endif + + std::wstring UUIDToString(const UUID& uuid) + { + std::wstring s; + LPOLESTR str; + StringFromCLSID(uuid, &str); + s += str; + CoTaskMemFree(str); + return s; + } + + std::wstring MonikerToString(IMoniker * pmk) + { + LPOLESTR pszName = NULL; + + if(SUCCEEDED(pmk->GetDisplayName(NULL, NULL, &pszName))) + { + std::wstring s(pszName); + CoTaskMemFree(pszName); + return s; + } + else + return std::wstring(L""); + } + + std::basic_string RectToString(const RECT& rc) + { + if(&rc == NULL) + return TEXT(""); + + std::basic_ostringstream o; + o << "{" << " left:" << rc.left << " top:" << rc.top << " right:" << rc.right << " bottom:" << rc.bottom << " }"; + return o.str(); + } + + std::basic_string RectToString(const RECTL& rc) + { + if(&rc == NULL) + return TEXT(""); + + std::basic_ostringstream o; + o << "{" << " left:" << rc.left << " top:" << rc.top << " right:" << rc.right << " bottom:" << rc.bottom << " }"; + return o.str(); + } + + std::basic_string SizeToString(const SIZE& sz) + { + if(&sz == NULL) + return TEXT(""); + + std::basic_ostringstream o; + o << "{ " << " cx:" << sz.cx << " cy:" << sz.cy << " }"; + return o.str(); + } + + template LPCTSTR BooleanToString(const T& X) + { + return X ? TEXT("true") : TEXT("false"); + } + + std::basic_string VariantToString(const VARIANT& var) + { + std::basic_ostringstream o; + + switch(var.vt & VT_TYPEMASK) + { + case VT_EMPTY: o << ""; break; + case VT_NULL: o << ""; break; + case VT_I2: o << "short"; break; + case VT_I4: o << "long"; break; + case VT_R4: o << "float"; break; + case VT_R8: o << "double"; break; + case VT_CY: o << "CURRENCY"; break; + case VT_DATE: o << "DATE"; break; + case VT_BSTR: o << "string"; break; + case VT_DISPATCH: o << "IDispatch *"; break; + case VT_ERROR: o << "SCODE"; break; + case VT_BOOL: o << "bool"; break; + case VT_VARIANT: o << "VARIANT *"; break; + case VT_UNKNOWN: o << "IUnknown *"; break; + case VT_DECIMAL: o << "DECIMAL"; break; + case VT_I1: o << "char"; break; + case VT_UI1: o << "unsigned char"; break; + case VT_UI2: o << "unsigned short"; break; + case VT_UI4: o << "unsigned long"; break; + case VT_I8: o << "long long"; break; + case VT_UI8: o << "unsigned long long"; break; + case VT_INT: o << "int"; break; + case VT_UINT: o << "unsigned int"; break; + case VT_VOID: o << "void"; break; + case VT_HRESULT: o << "HRESULT"; break; + case VT_PTR: o << "void *"; break; + case VT_SAFEARRAY: o << "SAFEARRAY *"; break; + case VT_LPSTR: o << "LPSTR"; break; + case VT_LPWSTR: o << "LPWSTR"; break; + case VT_RECORD: o << "struct { }"; break; + case VT_INT_PTR: o << "intptr_t"; break; + case VT_UINT_PTR: o << "uintptr_t"; break; + case VT_FILETIME: o << "FILETIME"; break; + default: o << "???"; break; + } + + if(var.vt & VT_ARRAY) + o << "[]"; + else if(var.vt & VT_BYREF) + o << " *"; + else + { + switch(var.vt & VT_TYPEMASK) + { + case VT_EMPTY: + case VT_NULL: + case VT_RECORD: + case VT_VOID: + + // TODO + case VT_CY: + case VT_DATE: + case VT_DECIMAL: + case VT_FILETIME: + break; + + default: + o << " = "; + } + + switch(var.vt & VT_TYPEMASK) + { + case VT_I2: o << var.iVal; break; + case VT_I4: o << var.lVal; break; + case VT_R4: o << var.fltVal; break; + case VT_R8: o << var.dblVal; break; + case VT_BSTR: o << std::wstring(var.bstrVal, var.bstrVal + SysStringLen(var.bstrVal)); break; + case VT_BOOL: o << var.boolVal ? "true" : "false"; break; + case VT_I1: o << int(var.cVal); break; + case VT_UI1: o << unsigned int(var.bVal); break; + case VT_UI2: o << var.uiVal; break; + case VT_UI4: o << var.ulVal; break; + case VT_I8: o << var.llVal; break; + case VT_UI8: o << var.ullVal; break; + case VT_INT: o << var.intVal; break; + case VT_UINT: o << var.uintVal; break; + case VT_LPSTR: o << LPSTR(var.byref); break; + case VT_LPWSTR: o << LPWSTR(var.byref); break; + case VT_INT_PTR: o << var.intVal; break; // BUGBUG + case VT_UINT_PTR: o << var.uintVal; break; // BUGBUG + + case VT_DISPATCH: + case VT_VARIANT: + case VT_UNKNOWN: + case VT_PTR: + case VT_SAFEARRAY: + case VT_RECORD: + o << var.byref; break; + + case VT_ERROR: + case VT_HRESULT: + o << std::hex << var.ulVal; break; + + case VT_EMPTY: + case VT_NULL: + case VT_VOID: + break; + + default: + assert(0); + } + } + + return o.str(); + } + +#pragma warning(disable:4584) + + IConnectionPointContainer * HookIConnectionPointContainer(IConnectionPointContainer * p); + IEnumConnectionPoints * HookIEnumConnectionPoints(IEnumConnectionPoints * p); + IConnectionPoint * HookIConnectionPoint(IConnectionPoint * p); + IEnumConnections * HookIEnumConnections(IEnumConnections * p); + + class CConnectionPointContainer: public IConnectionPointContainer + { + private: + LONG m_refCount; + IConnectionPointContainer * m_IConnectionPointContainer; + + public: + CConnectionPointContainer(IConnectionPointContainer * pIConnectionPointContainer): + m_refCount(1), + m_IConnectionPointContainer(pIConnectionPointContainer) + { } + + ~CConnectionPointContainer() { m_IConnectionPointContainer->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CConnectionPointContainer::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IConnectionPointContainer) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CConnectionPointContainer::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE EnumConnectionPoints(IEnumConnectionPoints ** ppEnum) + { + dbgprintf(TEXT("CConnectionPointContainer::EnumConnectionPoints(%p)"), ppEnum); + HRESULT hr = m_IConnectionPointContainer->EnumConnectionPoints(ppEnum); + dbgprintf(TEXT("CConnectionPointContainer::EnumConnectionPoints -> %08X, pEnum = %p"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnectionPoints(*ppEnum); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE FindConnectionPoint(REFIID riid, IConnectionPoint ** ppCP) + { + dbgprintf(TEXT("CConnectionPointContainer::FindConnectionPoint(%ls, %p)"), UUIDToString(riid).c_str(), ppCP); + HRESULT hr = m_IConnectionPointContainer->FindConnectionPoint(riid, ppCP); + dbgprintf(TEXT("CConnectionPointContainer::FindConnectionPoint -> %08X, pCP = %p"), hr, *ppCP); + + if(SUCCEEDED(hr)) + *ppCP = HookIConnectionPoint(*ppCP); + + return hr; + } + }; + + class CEnumConnectionPoints: public IEnumConnectionPoints + { + private: + LONG m_refCount; + IEnumConnectionPoints * m_IEnumConnectionPoints; + + public: + CEnumConnectionPoints(IEnumConnectionPoints * pIEnumConnectionPoints): + m_refCount(1), + m_IEnumConnectionPoints(pIEnumConnectionPoints) + { } + + ~CEnumConnectionPoints() { m_IEnumConnectionPoints->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CEnumConnectionPoints::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IEnumConnectionPoints) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CEnumConnectionPoints::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE Next(ULONG cConnections, LPCONNECTIONPOINT * ppCP, ULONG * pcFetched) + { + dbgprintf(TEXT("CEnumConnectionPoints::Next(%lu, %p, %p)"), cConnections, ppCP, pcFetched); + HRESULT hr = m_IEnumConnectionPoints->Next(cConnections, ppCP, pcFetched); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X, pCP = %p, cFetched = %lu"), hr, *ppCP, *pcFetched); + + if(SUCCEEDED(hr)) + *ppCP = HookIConnectionPoint(*ppCP); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Skip(ULONG cConnections) + { + dbgprintf(TEXT("CEnumConnectionPoints::Skip(%lu)"), cConnections); + HRESULT hr = m_IEnumConnectionPoints->Skip(cConnections); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Reset(void) + { + dbgprintf(TEXT("CEnumConnectionPoints::Reset()")); + HRESULT hr = m_IEnumConnectionPoints->Reset(); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Clone(IEnumConnectionPoints ** ppEnum) + { + dbgprintf(TEXT("CEnumConnectionPoints::Clone(%p)"), ppEnum); + HRESULT hr = m_IEnumConnectionPoints->Clone(ppEnum); + dbgprintf(TEXT("CEnumConnectionPoints:: -> %08X, pEnum"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnectionPoints(*ppEnum); + + return hr; + } + }; + + class CConnectionPoint: public IConnectionPoint + { + private: + LONG m_refCount; + IConnectionPoint * m_IConnectionPoint; + + public: + CConnectionPoint(IConnectionPoint * pIConnectionPoint): + m_refCount(1), + m_IConnectionPoint(pIConnectionPoint) + { } + + ~CConnectionPoint() { m_IConnectionPoint->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CConnectionPoint::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IConnectionPoint) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CConnectionPoint::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE GetConnectionInterface(IID * pIID) + { + dbgprintf(TEXT("CConnectionPoint::GetConnectionInterface(%p)"), pIID); + HRESULT hr = m_IConnectionPoint->GetConnectionInterface(pIID); + dbgprintf(TEXT("CConnectionPoint::GetConnectionInterface -> %08X, IID = %ls"), hr, UUIDToString(*pIID).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetConnectionPointContainer(IConnectionPointContainer ** ppCPC) + { + dbgprintf(TEXT("CConnectionPoint::GetConnectionPointContainer(%p)"), ppCPC); + HRESULT hr = m_IConnectionPoint->GetConnectionPointContainer(ppCPC); + dbgprintf(TEXT("CConnectionPoint::GetConnectionPointContainer -> %08X, pCPC = %p"), hr, *ppCPC); + + if(SUCCEEDED(hr)) + *ppCPC = HookIConnectionPointContainer(*ppCPC); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Advise(IUnknown * pUnkSink, DWORD * pdwCookie) + { + dbgprintf(TEXT("CConnectionPoint::Advise(%p, %p)"), pUnkSink, pdwCookie); + HRESULT hr = m_IConnectionPoint->Advise(pUnkSink, pdwCookie); + dbgprintf(TEXT("CConnectionPoint::Advise -> %08X, dwCookie = %lu"), hr, *pdwCookie); + // TODO: hook sink + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Unadvise(DWORD dwCookie) + { + dbgprintf(TEXT("CConnectionPoint::Unadvise(%lu)"), dwCookie); + HRESULT hr = m_IConnectionPoint->Unadvise(dwCookie); + dbgprintf(TEXT("CConnectionPoint::Unadvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumConnections(IEnumConnections ** ppEnum) + { + dbgprintf(TEXT("CConnectionPoint::EnumConnections(%p)"), ppEnum); + HRESULT hr = m_IConnectionPoint->EnumConnections(ppEnum); + dbgprintf(TEXT("CConnectionPoint::EnumConnections -> %08X, pEnum = %p"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnections(*ppEnum); + + return hr; + } + }; + + class CEnumConnections: public IEnumConnections + { + private: + LONG m_refCount; + IEnumConnections * m_IEnumConnections; + + public: + CEnumConnections(IEnumConnections * pIEnumConnections): + m_refCount(1), + m_IEnumConnections(pIEnumConnections) + { } + + ~CEnumConnections() { m_IEnumConnections->Release(); } + + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + dbgprintf(TEXT("CEnumConnections::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + + if(riid == IID_IUnknown || riid == IID_IEnumConnections) + *ppvObject = this; + else + { + *ppvObject = NULL; + hr = E_NOINTERFACE; + } + + dbgprintf(TEXT("CEnumConnections::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual HRESULT STDMETHODCALLTYPE Next(ULONG cConnections, LPCONNECTDATA pCD, ULONG * pcFetched) + { + dbgprintf(TEXT("CEnumConnections::Next(%lu, %p, %p)"), cConnections, pCD, pcFetched); + HRESULT hr = m_IEnumConnections->Next(cConnections, pCD, pcFetched); + dbgprintf(TEXT("CEnumConnections:: -> %08X, CD = { pUnk = %p, dwCookie = %lu }, cFetched = %lu"), hr, pCD->pUnk, pCD->dwCookie, *pcFetched); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Skip(ULONG cConnections) + { + dbgprintf(TEXT("CEnumConnections::Skip(%lu)"), cConnections); + HRESULT hr = m_IEnumConnections->Skip(cConnections); + dbgprintf(TEXT("CEnumConnections:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Reset(void) + { + dbgprintf(TEXT("CEnumConnections::Reset()")); + HRESULT hr = m_IEnumConnections->Reset(); + dbgprintf(TEXT("CEnumConnections:: -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Clone(IEnumConnections ** ppEnum) + { + dbgprintf(TEXT("CEnumConnections::Clone(%p)"), ppEnum); + HRESULT hr = m_IEnumConnections->Clone(ppEnum); + dbgprintf(TEXT("CEnumConnections:: -> %08X, pEnum"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnections(*ppEnum); + + return hr; + } + }; + + IConnectionPointContainer * HookIConnectionPointContainer(IConnectionPointContainer * p) + { + return new CConnectionPointContainer(p); + } + + IEnumConnectionPoints * HookIEnumConnectionPoints(IEnumConnectionPoints * p) + { + return new CEnumConnectionPoints(p); + } + + IConnectionPoint * HookIConnectionPoint(IConnectionPoint * p) + { + return new CConnectionPoint(p); + } + + IEnumConnections * HookIEnumConnections(IEnumConnections * p) + { + return new CEnumConnections(p); + } + + class CAdvancedSettings: public IMsRdpClientAdvancedSettings4 + { + private: + LONG m_refCount; + IUnknown * m_IUnknown; + IDispatch * m_IDispatch; + IMsTscAdvancedSettings * m_IMsTscAdvancedSettings; + IMsRdpClientAdvancedSettings * m_IMsRdpClientAdvancedSettings; + IMsRdpClientAdvancedSettings2 * m_IMsRdpClientAdvancedSettings2; + IMsRdpClientAdvancedSettings3 * m_IMsRdpClientAdvancedSettings3; + IMsRdpClientAdvancedSettings4 * m_IMsRdpClientAdvancedSettings4; + + IDispatch * getIDispatch() + { + assert(m_IDispatch); + return m_IDispatch; + } + + IMsTscAdvancedSettings * getIMsTscAdvancedSettings() + { + if(m_IMsTscAdvancedSettings) + return m_IMsTscAdvancedSettings; + else if(m_IMsRdpClientAdvancedSettings) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings; + else if(m_IMsRdpClientAdvancedSettings2) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings2; + else if(m_IMsRdpClientAdvancedSettings3) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsTscAdvancedSettings = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsTscAdvancedSettings) + { + m_IMsTscAdvancedSettings->AddRef(); + return m_IMsTscAdvancedSettings; + } + + m_IUnknown->QueryInterface(&m_IMsTscAdvancedSettings); + return m_IMsTscAdvancedSettings; + } + + IMsRdpClientAdvancedSettings * getIMsRdpClientAdvancedSettings() + { + if(m_IMsRdpClientAdvancedSettings) + return m_IMsRdpClientAdvancedSettings; + else if(m_IMsRdpClientAdvancedSettings2) + m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings2; + else if(m_IMsRdpClientAdvancedSettings3) + m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings) + { + m_IMsRdpClientAdvancedSettings->AddRef(); + return m_IMsRdpClientAdvancedSettings; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings); + return m_IMsRdpClientAdvancedSettings; + } + + IMsRdpClientAdvancedSettings2 * getIMsRdpClientAdvancedSettings2() + { + if(m_IMsRdpClientAdvancedSettings2) + return m_IMsRdpClientAdvancedSettings2; + else if(m_IMsRdpClientAdvancedSettings3) + m_IMsRdpClientAdvancedSettings2 = m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings2 = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings2) + { + m_IMsRdpClientAdvancedSettings2->AddRef(); + return m_IMsRdpClientAdvancedSettings2; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings2); + return m_IMsRdpClientAdvancedSettings2; + } + + IMsRdpClientAdvancedSettings3 * getIMsRdpClientAdvancedSettings3() + { + if(m_IMsRdpClientAdvancedSettings3) + return m_IMsRdpClientAdvancedSettings3; + else if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings3 = m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings3) + { + m_IMsRdpClientAdvancedSettings3->AddRef(); + return m_IMsRdpClientAdvancedSettings3; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings3); + return m_IMsRdpClientAdvancedSettings3; + } + + IMsRdpClientAdvancedSettings4 * getIMsRdpClientAdvancedSettings4() + { + if(m_IMsRdpClientAdvancedSettings4) + return m_IMsRdpClientAdvancedSettings4; + + if(m_IMsRdpClientAdvancedSettings4) + { + m_IMsRdpClientAdvancedSettings4->AddRef(); + return m_IMsRdpClientAdvancedSettings4; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientAdvancedSettings4); + return m_IMsRdpClientAdvancedSettings4; + } + + ~CAdvancedSettings() + { + m_IUnknown->Release(); + m_IDispatch->Release(); + + if(m_IMsTscAdvancedSettings) + m_IMsTscAdvancedSettings->Release(); + + if(m_IMsRdpClientAdvancedSettings) + m_IMsRdpClientAdvancedSettings->Release(); + + if(m_IMsRdpClientAdvancedSettings2) + m_IMsRdpClientAdvancedSettings2->Release(); + + if(m_IMsRdpClientAdvancedSettings3) + m_IMsRdpClientAdvancedSettings3->Release(); + + if(m_IMsRdpClientAdvancedSettings4) + m_IMsRdpClientAdvancedSettings4->Release(); + } + + void Init(IMsTscAdvancedSettings * p) + { + m_IMsTscAdvancedSettings = p; + } + + void Init(IMsRdpClientAdvancedSettings * p) + { + m_IMsRdpClientAdvancedSettings = p; + } + + void Init(IMsRdpClientAdvancedSettings2 * p) + { + m_IMsRdpClientAdvancedSettings2 = p; + } + + void Init(IMsRdpClientAdvancedSettings3 * p) + { + m_IMsRdpClientAdvancedSettings3 = p; + } + + void Init(IMsRdpClientAdvancedSettings4 * p) + { + m_IMsRdpClientAdvancedSettings4 = p; + } + + public: + template CAdvancedSettings(Interface * p): + m_refCount(1), + m_IUnknown(p), + m_IDispatch(p), + m_IMsTscAdvancedSettings(NULL), + m_IMsRdpClientAdvancedSettings(NULL), + m_IMsRdpClientAdvancedSettings2(NULL), + m_IMsRdpClientAdvancedSettings3(NULL), + m_IMsRdpClientAdvancedSettings4(NULL) + { + assert(p); + p->AddRef(); + p->AddRef(); + Init(p); + } + + /* IUnknown */ + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr; + IUnknown * pvObject; + + dbgprintf(TEXT("CAdvancedSettings::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + +#define QIBEGIN() \ + if(riid == IID_IUnknown) \ + { \ + hr = S_OK; \ + pvObject = (IUnknown *)(this); \ + } + +#define QI(I) \ + else if(riid == IID_ ## I) \ + { \ + if(m_ ## I) \ + { \ + m_ ## I->AddRef(); \ + hr = S_OK; \ + } \ + else \ + { \ + hr = m_IUnknown->QueryInterface(&m_ ## I); \ + } \ + \ + if(SUCCEEDED(hr)) \ + pvObject = static_cast(this); \ + } + +#define QIEND() \ + else \ + { \ + hr = E_NOINTERFACE; \ + pvObject = NULL; \ + } + + QIBEGIN() + QI(IDispatch) + QI(IMsTscAdvancedSettings) + QI(IMsRdpClientAdvancedSettings) + QI(IMsRdpClientAdvancedSettings2) + QI(IMsRdpClientAdvancedSettings3) + QI(IMsRdpClientAdvancedSettings4) + QIEND() + +#undef QIBEGIN +#undef QIEND +#undef QI + + if(SUCCEEDED(hr)) + { + assert(pvObject); + pvObject->AddRef(); + } + else + { + assert(pvObject == NULL); + } + + *ppvObject = pvObject; + + dbgprintf(TEXT("CAdvancedSettings::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + /* IDispatch */ + /* + * p = get(); + dbgprintf(TEXT("CAdvancedSettings::()"), ); + HRESULT hr = p->(); + dbgprintf(TEXT("CAdvancedSettings:: -> %08X, "), hr, ); + return hr; + */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfoCount(%p)"), pctinfo); + HRESULT hr = pIDispatch->GetTypeInfoCount(pctinfo); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfoCount -> %08X, ctinfo = %u"), hr, *pctinfo); + return hr; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfo(%u, %lu, %p)"), iTInfo, lcid, ppTInfo); + HRESULT hr = pIDispatch->GetTypeInfo(iTInfo, lcid, ppTInfo); + dbgprintf(TEXT("CAdvancedSettings::GetTypeInfo -> %08X, pTInfo = %p"), hr, *ppTInfo); + return hr; + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::GetIDsOfNames(%ls, %ls, %d, %lu, %p)"), UUIDToString(riid).c_str(), *rgszNames, cNames, lcid, rgDispId); + HRESULT hr = pIDispatch->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId); + dbgprintf(TEXT("CAdvancedSettings::GetIDsOfNames -> %08X, rgDispId = %ld"), hr, *rgDispId); + return hr; + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + // TODO + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("CAdvancedSettings::Invoke()")/*, */); + HRESULT hr = pIDispatch->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + dbgprintf(TEXT("CAdvancedSettings::Invoke -> %08X, "), hr/*, */); + return hr; + } + + /* IMsTscAdvancedSettings */ + virtual STDMETHODIMP IMsTscAdvancedSettings::put_Compress(long pcompress) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_Compress(%ld)"), pcompress); + HRESULT hr = pIMsTscAdvancedSettings->put_Compress(pcompress); + dbgprintf(TEXT("CAdvancedSettings::put_Compress -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_Compress(long * pcompress) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_Compress(%p)"), pcompress); + HRESULT hr = pIMsTscAdvancedSettings->get_Compress(pcompress); + dbgprintf(TEXT("CAdvancedSettings::get_Compress -> %08X, compress = %ld"), hr, *pcompress); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_BitmapPeristence(long pbitmapPeristence) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPeristence(%ld)"), pbitmapPeristence); + HRESULT hr = pIMsTscAdvancedSettings->put_BitmapPeristence(pbitmapPeristence); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPeristence -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_BitmapPeristence(long * pbitmapPeristence) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPeristence(%p)"), pbitmapPeristence); + HRESULT hr = pIMsTscAdvancedSettings->get_BitmapPeristence(pbitmapPeristence); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPeristence -> %08X, bitmapPeristence = %ld"), hr, *pbitmapPeristence); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_allowBackgroundInput(long pallowBackgroundInput) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_allowBackgroundInput(%ld)"), pallowBackgroundInput); + HRESULT hr = pIMsTscAdvancedSettings->put_allowBackgroundInput(pallowBackgroundInput); + dbgprintf(TEXT("CAdvancedSettings::put_allowBackgroundInput -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_allowBackgroundInput(long * pallowBackgroundInput) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_allowBackgroundInput(%p)"), pallowBackgroundInput); + HRESULT hr = pIMsTscAdvancedSettings->get_allowBackgroundInput(pallowBackgroundInput); + dbgprintf(TEXT("CAdvancedSettings::get_allowBackgroundInput -> %08X, allowBackgroundInput = %ld"), hr, *pallowBackgroundInput); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_KeyBoardLayoutStr(BSTR rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyBoardLayoutStr(%ls)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_KeyBoardLayoutStr(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_KeyBoardLayoutStr -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_PluginDlls(BSTR rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PluginDlls(%ls)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_PluginDlls(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_PluginDlls -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconFile(BSTR rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_IconFile(%ls)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_IconFile(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_IconFile -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconIndex(long rhs) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_IconIndex(%ld)"), rhs); + HRESULT hr = pIMsTscAdvancedSettings->put_IconIndex(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_IconIndex -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_ContainerHandledFullScreen(long pContainerHandledFullScreen) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ContainerHandledFullScreen(%ld)"), pContainerHandledFullScreen); + HRESULT hr = pIMsTscAdvancedSettings->put_ContainerHandledFullScreen(pContainerHandledFullScreen); + dbgprintf(TEXT("CAdvancedSettings::put_ContainerHandledFullScreen -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_ContainerHandledFullScreen(long * pContainerHandledFullScreen) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ContainerHandledFullScreen(%p)"), pContainerHandledFullScreen); + HRESULT hr = pIMsTscAdvancedSettings->get_ContainerHandledFullScreen(pContainerHandledFullScreen); + dbgprintf(TEXT("CAdvancedSettings::get_ContainerHandledFullScreen -> %08X, ContainerHandledFullScreen = %ld"), hr, *pContainerHandledFullScreen); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_DisableRdpdr(long pDisableRdpdr) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DisableRdpdr(%ld)"), pDisableRdpdr); + HRESULT hr = pIMsTscAdvancedSettings->put_DisableRdpdr(pDisableRdpdr); + dbgprintf(TEXT("CAdvancedSettings::put_DisableRdpdr -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_DisableRdpdr(long * pDisableRdpdr) + { + IMsTscAdvancedSettings * pIMsTscAdvancedSettings = getIMsTscAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DisableRdpdr(%p)"), pDisableRdpdr); + HRESULT hr = pIMsTscAdvancedSettings->get_DisableRdpdr(pDisableRdpdr); + dbgprintf(TEXT("CAdvancedSettings::get_DisableRdpdr -> %08X, DisableRdpdr = %ld"), hr, *pDisableRdpdr); + return hr; + } + + /* IMsRdpClientAdvancedSettings */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmoothScroll(long psmoothScroll) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_SmoothScroll(%ld)"), psmoothScroll); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_SmoothScroll(psmoothScroll); + dbgprintf(TEXT("CAdvancedSettings::put_SmoothScroll -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmoothScroll(long * psmoothScroll) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_SmoothScroll(%p)"), psmoothScroll); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_SmoothScroll(psmoothScroll); + dbgprintf(TEXT("CAdvancedSettings::get_SmoothScroll -> %08X, smoothScroll = %ld"), hr, *psmoothScroll); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_AcceleratorPassthrough(long pacceleratorPassthrough) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_AcceleratorPassthrough(%ld)"), pacceleratorPassthrough); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_AcceleratorPassthrough(pacceleratorPassthrough); + dbgprintf(TEXT("CAdvancedSettings::put_AcceleratorPassthrough -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_AcceleratorPassthrough(long * pacceleratorPassthrough) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_AcceleratorPassthrough(%p)"), pacceleratorPassthrough); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_AcceleratorPassthrough(pacceleratorPassthrough); + dbgprintf(TEXT("CAdvancedSettings::get_AcceleratorPassthrough -> %08X, acceleratorPassthrough = %ld"), hr, *pacceleratorPassthrough); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ShadowBitmap(long pshadowBitmap) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ShadowBitmap(%ld)"), pshadowBitmap); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ShadowBitmap(pshadowBitmap); + dbgprintf(TEXT("CAdvancedSettings::put_ShadowBitmap -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ShadowBitmap(long * pshadowBitmap) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ShadowBitmap(%p)"), pshadowBitmap); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_ShadowBitmap(pshadowBitmap); + dbgprintf(TEXT("CAdvancedSettings::get_ShadowBitmap -> %08X, shadowBitmap = %ld"), hr, *pshadowBitmap); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_TransportType(long ptransportType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_TransportType(%ld)"), ptransportType); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_TransportType(ptransportType); + dbgprintf(TEXT("CAdvancedSettings::put_TransportType -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_TransportType(long * ptransportType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_TransportType(%p)"), ptransportType); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_TransportType(ptransportType); + dbgprintf(TEXT("CAdvancedSettings::get_TransportType -> %08X, transportType = %ld"), hr, *ptransportType); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SasSequence(long psasSequence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_SasSequence(%ld)"), psasSequence); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_SasSequence(psasSequence); + dbgprintf(TEXT("CAdvancedSettings::put_SasSequence -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SasSequence(long * psasSequence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_SasSequence(%p)"), psasSequence); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_SasSequence(psasSequence); + dbgprintf(TEXT("CAdvancedSettings::get_SasSequence -> %08X, sasSequence = %ld"), hr, *psasSequence); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EncryptionEnabled(long pencryptionEnabled) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_EncryptionEnabled(%ld)"), pencryptionEnabled); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_EncryptionEnabled(pencryptionEnabled); + dbgprintf(TEXT("CAdvancedSettings::put_EncryptionEnabled -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EncryptionEnabled(long * pencryptionEnabled) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_EncryptionEnabled(%p)"), pencryptionEnabled); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_EncryptionEnabled(pencryptionEnabled); + dbgprintf(TEXT("CAdvancedSettings::get_EncryptionEnabled -> %08X, encryptionEnabled = %ld"), hr, *pencryptionEnabled); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DedicatedTerminal(long pdedicatedTerminal) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DedicatedTerminal(%ld)"), pdedicatedTerminal); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DedicatedTerminal(pdedicatedTerminal); + dbgprintf(TEXT("CAdvancedSettings::put_DedicatedTerminal -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DedicatedTerminal(long * pdedicatedTerminal) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DedicatedTerminal(%p)"), pdedicatedTerminal); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DedicatedTerminal(pdedicatedTerminal); + dbgprintf(TEXT("CAdvancedSettings::get_DedicatedTerminal -> %08X, dedicatedTerminal = %ld"), hr, *pdedicatedTerminal); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RDPPort(long prdpPort) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RDPPort(%ld)"), prdpPort); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RDPPort(prdpPort); + dbgprintf(TEXT("CAdvancedSettings::put_RDPPort -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RDPPort(long * prdpPort) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RDPPort(%p)"), prdpPort); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RDPPort(prdpPort); + dbgprintf(TEXT("CAdvancedSettings::get_RDPPort -> %08X, rdpPort = %ld"), hr, *prdpPort); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableMouse(long penableMouse) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_EnableMouse(%ld)"), penableMouse); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_EnableMouse(penableMouse); + dbgprintf(TEXT("CAdvancedSettings::put_EnableMouse -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableMouse(long * penableMouse) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_EnableMouse(%p)"), penableMouse); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_EnableMouse(penableMouse); + dbgprintf(TEXT("CAdvancedSettings::get_EnableMouse -> %08X, enableMouse = %ld"), hr, *penableMouse); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisableCtrlAltDel(long pdisableCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DisableCtrlAltDel(%ld)"), pdisableCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DisableCtrlAltDel(pdisableCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::put_DisableCtrlAltDel -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisableCtrlAltDel(long * pdisableCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DisableCtrlAltDel(%p)"), pdisableCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DisableCtrlAltDel(pdisableCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::get_DisableCtrlAltDel -> %08X, disableCtrlAltDel = %ld"), hr, *pdisableCtrlAltDel); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableWindowsKey(long penableWindowsKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_EnableWindowsKey(%ld)"), penableWindowsKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_EnableWindowsKey(penableWindowsKey); + dbgprintf(TEXT("CAdvancedSettings::put_EnableWindowsKey -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableWindowsKey(long * penableWindowsKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_EnableWindowsKey(%p)"), penableWindowsKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_EnableWindowsKey(penableWindowsKey); + dbgprintf(TEXT("CAdvancedSettings::get_EnableWindowsKey -> %08X, enableWindowsKey = %ld"), hr, *penableWindowsKey); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DoubleClickDetect(long pdoubleClickDetect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DoubleClickDetect(%ld)"), pdoubleClickDetect); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DoubleClickDetect(pdoubleClickDetect); + dbgprintf(TEXT("CAdvancedSettings::put_DoubleClickDetect -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DoubleClickDetect(long * pdoubleClickDetect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DoubleClickDetect(%p)"), pdoubleClickDetect); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DoubleClickDetect(pdoubleClickDetect); + dbgprintf(TEXT("CAdvancedSettings::get_DoubleClickDetect -> %08X, doubleClickDetect = %ld"), hr, *pdoubleClickDetect); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MaximizeShell(long pmaximizeShell) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_MaximizeShell(%ld)"), pmaximizeShell); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_MaximizeShell(pmaximizeShell); + dbgprintf(TEXT("CAdvancedSettings::put_MaximizeShell -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MaximizeShell(long * pmaximizeShell) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_MaximizeShell(%p)"), pmaximizeShell); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_MaximizeShell(pmaximizeShell); + dbgprintf(TEXT("CAdvancedSettings::get_MaximizeShell -> %08X, maximizeShell = %ld"), hr, *pmaximizeShell); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyFullScreen(long photKeyFullScreen) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyFullScreen(%ld)"), photKeyFullScreen); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyFullScreen(photKeyFullScreen); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyFullScreen -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyFullScreen(long * photKeyFullScreen) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyFullScreen(%p)"), photKeyFullScreen); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyFullScreen(photKeyFullScreen); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyFullScreen -> %08X, hotKeyFullScreen = %ld"), hr, *photKeyFullScreen); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlEsc(long photKeyCtrlEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlEsc(%ld)"), photKeyCtrlEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyCtrlEsc(photKeyCtrlEsc); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlEsc -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlEsc(long * photKeyCtrlEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlEsc(%p)"), photKeyCtrlEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyCtrlEsc(photKeyCtrlEsc); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlEsc -> %08X, hotKeyCtrlEsc = %ld"), hr, *photKeyCtrlEsc); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltEsc(long photKeyAltEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltEsc(%ld)"), photKeyAltEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltEsc(photKeyAltEsc); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltEsc -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltEsc(long * photKeyAltEsc) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltEsc(%p)"), photKeyAltEsc); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltEsc(photKeyAltEsc); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltEsc -> %08X, hotKeyAltEsc = %ld"), hr, *photKeyAltEsc); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltTab(long photKeyAltTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltTab(%ld)"), photKeyAltTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltTab(photKeyAltTab); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltTab -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltTab(long * photKeyAltTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltTab(%p)"), photKeyAltTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltTab(photKeyAltTab); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltTab -> %08X, hotKeyAltTab = %ld"), hr, *photKeyAltTab); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltShiftTab(long photKeyAltShiftTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltShiftTab(%ld)"), photKeyAltShiftTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltShiftTab(photKeyAltShiftTab); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltShiftTab -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltShiftTab(long * photKeyAltShiftTab) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltShiftTab(%p)"), photKeyAltShiftTab); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltShiftTab(photKeyAltShiftTab); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltShiftTab -> %08X, hotKeyAltShiftTab = %ld"), hr, *photKeyAltShiftTab); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltSpace(long photKeyAltSpace) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltSpace(%ld)"), photKeyAltSpace); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyAltSpace(photKeyAltSpace); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyAltSpace -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltSpace(long * photKeyAltSpace) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltSpace(%p)"), photKeyAltSpace); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyAltSpace(photKeyAltSpace); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyAltSpace -> %08X, hotKeyAltSpace = %ld"), hr, *photKeyAltSpace); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlAltDel(long photKeyCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlAltDel(%ld)"), photKeyCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_HotKeyCtrlAltDel(photKeyCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::put_HotKeyCtrlAltDel -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlAltDel(long * photKeyCtrlAltDel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlAltDel(%p)"), photKeyCtrlAltDel); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_HotKeyCtrlAltDel(photKeyCtrlAltDel); + dbgprintf(TEXT("CAdvancedSettings::get_HotKeyCtrlAltDel -> %08X, hotKeyCtrlAltDel = %ld"), hr, *photKeyCtrlAltDel); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_orderDrawThreshold(long porderDrawThreshold) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_orderDrawThreshold(%ld)"), porderDrawThreshold); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_orderDrawThreshold(porderDrawThreshold); + dbgprintf(TEXT("CAdvancedSettings::put_orderDrawThreshold -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_orderDrawThreshold(long * porderDrawThreshold) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_orderDrawThreshold(%p)"), porderDrawThreshold); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_orderDrawThreshold(porderDrawThreshold); + dbgprintf(TEXT("CAdvancedSettings::get_orderDrawThreshold -> %08X, orderDrawThreshold = %ld"), hr, *porderDrawThreshold); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapCacheSize(long pbitmapCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapCacheSize(%ld)"), pbitmapCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapCacheSize(pbitmapCacheSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapCacheSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapCacheSize(long * pbitmapCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapCacheSize(%p)"), pbitmapCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapCacheSize(pbitmapCacheSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapCacheSize -> %08X, bitmapCacheSize = %ld"), hr, *pbitmapCacheSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCacheSize(long pbitmapVirtualCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCacheSize(%ld)"), pbitmapVirtualCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapVirtualCacheSize(pbitmapVirtualCacheSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCacheSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCacheSize(long * pbitmapVirtualCacheSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCacheSize(%p)"), pbitmapVirtualCacheSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapVirtualCacheSize(pbitmapVirtualCacheSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCacheSize -> %08X, bitmapVirtualCacheSize = %ld"), hr, *pbitmapVirtualCacheSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ScaleBitmapCachesByBPP(long pbScale) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ScaleBitmapCachesByBPP(%ld)"), pbScale); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ScaleBitmapCachesByBPP(pbScale); + dbgprintf(TEXT("CAdvancedSettings::put_ScaleBitmapCachesByBPP -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ScaleBitmapCachesByBPP(long * pbScale) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ScaleBitmapCachesByBPP(%p)"), pbScale); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_ScaleBitmapCachesByBPP(pbScale); + dbgprintf(TEXT("CAdvancedSettings::get_ScaleBitmapCachesByBPP -> %08X, bScale = %ld"), hr, *pbScale); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NumBitmapCaches(long pnumBitmapCaches) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_NumBitmapCaches(%ld)"), pnumBitmapCaches); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_NumBitmapCaches(pnumBitmapCaches); + dbgprintf(TEXT("CAdvancedSettings::put_NumBitmapCaches -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NumBitmapCaches(long * pnumBitmapCaches) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_NumBitmapCaches(%p)"), pnumBitmapCaches); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_NumBitmapCaches(pnumBitmapCaches); + dbgprintf(TEXT("CAdvancedSettings::get_NumBitmapCaches -> %08X, numBitmapCaches = %ld"), hr, *pnumBitmapCaches); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_CachePersistenceActive(long pcachePersistenceActive) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_CachePersistenceActive(%ld)"), pcachePersistenceActive); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_CachePersistenceActive(pcachePersistenceActive); + dbgprintf(TEXT("CAdvancedSettings::put_CachePersistenceActive -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_CachePersistenceActive(long * pcachePersistenceActive) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_CachePersistenceActive(%p)"), pcachePersistenceActive); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_CachePersistenceActive(pcachePersistenceActive); + dbgprintf(TEXT("CAdvancedSettings::get_CachePersistenceActive -> %08X, cachePersistenceActive = %ld"), hr, *pcachePersistenceActive); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PersistCacheDirectory(BSTR rhs) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PersistCacheDirectory(%ls)"), rhs); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_PersistCacheDirectory(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_PersistCacheDirectory -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_brushSupportLevel(long pbrushSupportLevel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_brushSupportLevel(%ld)"), pbrushSupportLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_brushSupportLevel(pbrushSupportLevel); + dbgprintf(TEXT("CAdvancedSettings::put_brushSupportLevel -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_brushSupportLevel(long * pbrushSupportLevel) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_brushSupportLevel(%p)"), pbrushSupportLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_brushSupportLevel(pbrushSupportLevel); + dbgprintf(TEXT("CAdvancedSettings::get_brushSupportLevel -> %08X, brushSupportLevel = %ld"), hr, *pbrushSupportLevel); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_minInputSendInterval(long pminInputSendInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_minInputSendInterval(%ld)"), pminInputSendInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_minInputSendInterval(pminInputSendInterval); + dbgprintf(TEXT("CAdvancedSettings::put_minInputSendInterval -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_minInputSendInterval(long * pminInputSendInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_minInputSendInterval(%p)"), pminInputSendInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_minInputSendInterval(pminInputSendInterval); + dbgprintf(TEXT("CAdvancedSettings::get_minInputSendInterval -> %08X, minInputSendInterval = %ld"), hr, *pminInputSendInterval); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_InputEventsAtOnce(long pinputEventsAtOnce) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_InputEventsAtOnce(%ld)"), pinputEventsAtOnce); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_InputEventsAtOnce(pinputEventsAtOnce); + dbgprintf(TEXT("CAdvancedSettings::put_InputEventsAtOnce -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_InputEventsAtOnce(long * pinputEventsAtOnce) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_InputEventsAtOnce(%p)"), pinputEventsAtOnce); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_InputEventsAtOnce(pinputEventsAtOnce); + dbgprintf(TEXT("CAdvancedSettings::get_InputEventsAtOnce -> %08X, inputEventsAtOnce = %ld"), hr, *pinputEventsAtOnce); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_maxEventCount(long pmaxEventCount) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_maxEventCount(%ld)"), pmaxEventCount); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_maxEventCount(pmaxEventCount); + dbgprintf(TEXT("CAdvancedSettings::put_maxEventCount -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_maxEventCount(long * pmaxEventCount) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_maxEventCount(%p)"), pmaxEventCount); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_maxEventCount(pmaxEventCount); + dbgprintf(TEXT("CAdvancedSettings::get_maxEventCount -> %08X, maxEventCount = %ld"), hr, *pmaxEventCount); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_keepAliveInterval(long pkeepAliveInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_keepAliveInterval(%ld)"), pkeepAliveInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_keepAliveInterval(pkeepAliveInterval); + dbgprintf(TEXT("CAdvancedSettings::put_keepAliveInterval -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_keepAliveInterval(long * pkeepAliveInterval) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_keepAliveInterval(%p)"), pkeepAliveInterval); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_keepAliveInterval(pkeepAliveInterval); + dbgprintf(TEXT("CAdvancedSettings::get_keepAliveInterval -> %08X, keepAliveInterval = %ld"), hr, *pkeepAliveInterval); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_shutdownTimeout(long pshutdownTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_shutdownTimeout(%ld)"), pshutdownTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_shutdownTimeout(pshutdownTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_shutdownTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_shutdownTimeout(long * pshutdownTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_shutdownTimeout(%p)"), pshutdownTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_shutdownTimeout(pshutdownTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_shutdownTimeout -> %08X, shutdownTimeout = %ld"), hr, *pshutdownTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_overallConnectionTimeout(long poverallConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_overallConnectionTimeout(%ld)"), poverallConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_overallConnectionTimeout(poverallConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_overallConnectionTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_overallConnectionTimeout(long * poverallConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_overallConnectionTimeout(%p)"), poverallConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_overallConnectionTimeout(poverallConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_overallConnectionTimeout -> %08X, overallConnectionTimeout = %ld"), hr, *poverallConnectionTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_singleConnectionTimeout(long psingleConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_singleConnectionTimeout(%ld)"), psingleConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_singleConnectionTimeout(psingleConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_singleConnectionTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_singleConnectionTimeout(long * psingleConnectionTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_singleConnectionTimeout(%p)"), psingleConnectionTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_singleConnectionTimeout(psingleConnectionTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_singleConnectionTimeout -> %08X, singleConnectionTimeout = %ld"), hr, *psingleConnectionTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardType(long pkeyboardType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardType(%ld)"), pkeyboardType); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_KeyboardType(pkeyboardType); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardType -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardType(long * pkeyboardType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardType(%p)"), pkeyboardType); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_KeyboardType(pkeyboardType); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardType -> %08X, keyboardType = %ld"), hr, *pkeyboardType); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardSubType(long pkeyboardSubType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardSubType(%ld)"), pkeyboardSubType); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_KeyboardSubType(pkeyboardSubType); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardSubType -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardSubType(long * pkeyboardSubType) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardSubType(%p)"), pkeyboardSubType); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_KeyboardSubType(pkeyboardSubType); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardSubType -> %08X, keyboardSubType = %ld"), hr, *pkeyboardSubType); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardFunctionKey(long pkeyboardFunctionKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardFunctionKey(%ld)"), pkeyboardFunctionKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_KeyboardFunctionKey(pkeyboardFunctionKey); + dbgprintf(TEXT("CAdvancedSettings::put_KeyboardFunctionKey -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardFunctionKey(long * pkeyboardFunctionKey) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardFunctionKey(%p)"), pkeyboardFunctionKey); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_KeyboardFunctionKey(pkeyboardFunctionKey); + dbgprintf(TEXT("CAdvancedSettings::get_KeyboardFunctionKey -> %08X, keyboardFunctionKey = %ld"), hr, *pkeyboardFunctionKey); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_WinceFixedPalette(long pwinceFixedPalette) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_WinceFixedPalette(%ld)"), pwinceFixedPalette); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_WinceFixedPalette(pwinceFixedPalette); + dbgprintf(TEXT("CAdvancedSettings::put_WinceFixedPalette -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_WinceFixedPalette(long * pwinceFixedPalette) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_WinceFixedPalette(%p)"), pwinceFixedPalette); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_WinceFixedPalette(pwinceFixedPalette); + dbgprintf(TEXT("CAdvancedSettings::get_WinceFixedPalette -> %08X, winceFixedPalette = %ld"), hr, *pwinceFixedPalette); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectToServerConsole(VARIANT_BOOL pConnectToConsole) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectToServerConsole(%s)"), BooleanToString(pConnectToConsole)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ConnectToServerConsole(pConnectToConsole); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectToServerConsole -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ConnectToServerConsole(VARIANT_BOOL * pConnectToConsole) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectToServerConsole(%p)"), pConnectToConsole); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_ConnectToServerConsole(pConnectToConsole); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectToServerConsole -> %08X, ConnectToConsole = %s"), hr, BooleanToString(*pConnectToConsole)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapPersistence(long pbitmapPersistence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPersistence(%ld)"), pbitmapPersistence); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapPersistence(pbitmapPersistence); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapPersistence -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapPersistence(long * pbitmapPersistence) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPersistence(%p)"), pbitmapPersistence); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapPersistence(pbitmapPersistence); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapPersistence -> %08X, bitmapPersistence = %ld"), hr, *pbitmapPersistence); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MinutesToIdleTimeout(long pminutesToIdleTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_MinutesToIdleTimeout(%ld)"), pminutesToIdleTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_MinutesToIdleTimeout(pminutesToIdleTimeout); + dbgprintf(TEXT("CAdvancedSettings::put_MinutesToIdleTimeout -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MinutesToIdleTimeout(long * pminutesToIdleTimeout) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_MinutesToIdleTimeout(%p)"), pminutesToIdleTimeout); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_MinutesToIdleTimeout(pminutesToIdleTimeout); + dbgprintf(TEXT("CAdvancedSettings::get_MinutesToIdleTimeout -> %08X, minutesToIdleTimeout = %ld"), hr, *pminutesToIdleTimeout); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmartSizing(VARIANT_BOOL pfSmartSizing) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_SmartSizing(%s)"), BooleanToString(pfSmartSizing)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_SmartSizing(pfSmartSizing); + dbgprintf(TEXT("CAdvancedSettings::put_SmartSizing -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmartSizing(VARIANT_BOOL * pfSmartSizing) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_SmartSizing(%p)"), pfSmartSizing); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_SmartSizing(pfSmartSizing); + dbgprintf(TEXT("CAdvancedSettings::get_SmartSizing -> %08X, fSmartSizing = %s"), hr, BooleanToString(*pfSmartSizing)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrLocalPrintingDocName(BSTR pLocalPrintingDocName) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrLocalPrintingDocName(%ls)"), pLocalPrintingDocName); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RdpdrLocalPrintingDocName(pLocalPrintingDocName); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrLocalPrintingDocName -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrLocalPrintingDocName(BSTR * pLocalPrintingDocName) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrLocalPrintingDocName(%p)"), pLocalPrintingDocName); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RdpdrLocalPrintingDocName(pLocalPrintingDocName); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrLocalPrintingDocName -> %08X, LocalPrintingDocName = %ls"), hr, *pLocalPrintingDocName); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipCleanTempDirString(BSTR clipCleanTempDirString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipCleanTempDirString(%ls)"), clipCleanTempDirString); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RdpdrClipCleanTempDirString(clipCleanTempDirString); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipCleanTempDirString -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipCleanTempDirString(BSTR * clipCleanTempDirString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipCleanTempDirString(%p)"), clipCleanTempDirString); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RdpdrClipCleanTempDirString(clipCleanTempDirString); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipCleanTempDirString -> %08X, clipCleanTempDirString = %ls"), hr, *clipCleanTempDirString); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipPasteInfoString(BSTR clipPasteInfoString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipPasteInfoString(%ls)"), clipPasteInfoString); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RdpdrClipPasteInfoString(clipPasteInfoString); + dbgprintf(TEXT("CAdvancedSettings::put_RdpdrClipPasteInfoString -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipPasteInfoString(BSTR * clipPasteInfoString) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipPasteInfoString(%p)"), clipPasteInfoString); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RdpdrClipPasteInfoString(clipPasteInfoString); + dbgprintf(TEXT("CAdvancedSettings::get_RdpdrClipPasteInfoString -> %08X, clipPasteInfoString = %ls"), hr, *clipPasteInfoString); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ClearTextPassword(BSTR rhs) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ClearTextPassword(%ls)"), rhs); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ClearTextPassword(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_ClearTextPassword -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisplayConnectionBar(VARIANT_BOOL pDisplayConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_DisplayConnectionBar(%s)"), BooleanToString(pDisplayConnectionBar)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_DisplayConnectionBar(pDisplayConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::put_DisplayConnectionBar -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisplayConnectionBar(VARIANT_BOOL * pDisplayConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_DisplayConnectionBar(%p)"), pDisplayConnectionBar); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_DisplayConnectionBar(pDisplayConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::get_DisplayConnectionBar -> %08X, DisplayConnectionBar = %s"), hr, BooleanToString(*pDisplayConnectionBar)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PinConnectionBar(VARIANT_BOOL pPinConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PinConnectionBar(%s)"), BooleanToString(pPinConnectionBar)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_PinConnectionBar(pPinConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::put_PinConnectionBar -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PinConnectionBar(VARIANT_BOOL * pPinConnectionBar) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_PinConnectionBar(%p)"), pPinConnectionBar); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_PinConnectionBar(pPinConnectionBar); + dbgprintf(TEXT("CAdvancedSettings::get_PinConnectionBar -> %08X, PinConnectionBar = %s"), hr, BooleanToString(*pPinConnectionBar)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_GrabFocusOnConnect(VARIANT_BOOL pfGrabFocusOnConnect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_GrabFocusOnConnect(%s)"), BooleanToString(pfGrabFocusOnConnect)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_GrabFocusOnConnect(pfGrabFocusOnConnect); + dbgprintf(TEXT("CAdvancedSettings::put_GrabFocusOnConnect -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_GrabFocusOnConnect(VARIANT_BOOL * pfGrabFocusOnConnect) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_GrabFocusOnConnect(%p)"), pfGrabFocusOnConnect); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_GrabFocusOnConnect(pfGrabFocusOnConnect); + dbgprintf(TEXT("CAdvancedSettings::get_GrabFocusOnConnect -> %08X, fGrabFocusOnConnect = %s"), hr, BooleanToString(*pfGrabFocusOnConnect)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_LoadBalanceInfo(BSTR pLBInfo) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_LoadBalanceInfo(%ls)"), pLBInfo); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_LoadBalanceInfo(pLBInfo); + dbgprintf(TEXT("CAdvancedSettings::put_LoadBalanceInfo -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_LoadBalanceInfo(BSTR * pLBInfo) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_LoadBalanceInfo(%p)"), pLBInfo); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_LoadBalanceInfo(pLBInfo); + dbgprintf(TEXT("CAdvancedSettings::get_LoadBalanceInfo -> %08X, LBInfo = %ls"), hr, *pLBInfo); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectDrives(VARIANT_BOOL pRedirectDrives) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectDrives(%s)"), BooleanToString(pRedirectDrives)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectDrives(pRedirectDrives); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectDrives -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectDrives(VARIANT_BOOL * pRedirectDrives) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectDrives(%p)"), pRedirectDrives); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectDrives(pRedirectDrives); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectDrives -> %08X, RedirectDrives = %s"), hr, BooleanToString(*pRedirectDrives)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPrinters(VARIANT_BOOL pRedirectPrinters) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPrinters(%s)"), BooleanToString(pRedirectPrinters)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectPrinters(pRedirectPrinters); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPrinters -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPrinters(VARIANT_BOOL * pRedirectPrinters) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPrinters(%p)"), pRedirectPrinters); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectPrinters(pRedirectPrinters); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPrinters -> %08X, RedirectPrinters = %s"), hr, BooleanToString(*pRedirectPrinters)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPorts(VARIANT_BOOL pRedirectPorts) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPorts(%s)"), BooleanToString(pRedirectPorts)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectPorts(pRedirectPorts); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectPorts -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPorts(VARIANT_BOOL * pRedirectPorts) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPorts(%p)"), pRedirectPorts); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectPorts(pRedirectPorts); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectPorts -> %08X, RedirectPorts = %s"), hr, BooleanToString(*pRedirectPorts)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectSmartCards(VARIANT_BOOL pRedirectSmartCards) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectSmartCards(%s)"), BooleanToString(pRedirectSmartCards)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_RedirectSmartCards(pRedirectSmartCards); + dbgprintf(TEXT("CAdvancedSettings::put_RedirectSmartCards -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectSmartCards(VARIANT_BOOL * pRedirectSmartCards) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectSmartCards(%p)"), pRedirectSmartCards); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_RedirectSmartCards(pRedirectSmartCards); + dbgprintf(TEXT("CAdvancedSettings::get_RedirectSmartCards -> %08X, RedirectSmartCards = %s"), hr, BooleanToString(*pRedirectSmartCards)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache16BppSize(long pBitmapVirtualCache16BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache16BppSize(%ld)"), pBitmapVirtualCache16BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapVirtualCache16BppSize(pBitmapVirtualCache16BppSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache16BppSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache16BppSize(long * pBitmapVirtualCache16BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache16BppSize(%p)"), pBitmapVirtualCache16BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapVirtualCache16BppSize(pBitmapVirtualCache16BppSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache16BppSize -> %08X, BitmapVirtualCache16BppSize = %ld"), hr, *pBitmapVirtualCache16BppSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache24BppSize(long pBitmapVirtualCache24BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache24BppSize(%ld)"), pBitmapVirtualCache24BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_BitmapVirtualCache24BppSize(pBitmapVirtualCache24BppSize); + dbgprintf(TEXT("CAdvancedSettings::put_BitmapVirtualCache24BppSize -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache24BppSize(long * pBitmapVirtualCache24BppSize) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache24BppSize(%p)"), pBitmapVirtualCache24BppSize); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_BitmapVirtualCache24BppSize(pBitmapVirtualCache24BppSize); + dbgprintf(TEXT("CAdvancedSettings::get_BitmapVirtualCache24BppSize -> %08X, BitmapVirtualCache24BppSize = %ld"), hr, *pBitmapVirtualCache24BppSize); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PerformanceFlags(long pDisableList) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_PerformanceFlags(%ld)"), pDisableList); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_PerformanceFlags(pDisableList); + dbgprintf(TEXT("CAdvancedSettings::put_PerformanceFlags -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PerformanceFlags(long * pDisableList) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_PerformanceFlags(%p)"), pDisableList); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_PerformanceFlags(pDisableList); + dbgprintf(TEXT("CAdvancedSettings::get_PerformanceFlags -> %08X, DisableList = %ld"), hr, *pDisableList); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectWithEndpoint(VARIANT * rhs) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectWithEndpoint(%s)"), VariantToString(*rhs).c_str()); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_ConnectWithEndpoint(rhs); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectWithEndpoint -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NotifyTSPublicKey(VARIANT_BOOL pfNotify) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::put_NotifyTSPublicKey(%s)"), BooleanToString(pfNotify)); + HRESULT hr = pIMsRdpClientAdvancedSettings->put_NotifyTSPublicKey(pfNotify); + dbgprintf(TEXT("CAdvancedSettings::put_NotifyTSPublicKey -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NotifyTSPublicKey(VARIANT_BOOL * pfNotify) + { + IMsRdpClientAdvancedSettings * pIMsRdpClientAdvancedSettings = getIMsRdpClientAdvancedSettings(); + dbgprintf(TEXT("CAdvancedSettings::get_NotifyTSPublicKey(%p)"), pfNotify); + HRESULT hr = pIMsRdpClientAdvancedSettings->get_NotifyTSPublicKey(pfNotify); + dbgprintf(TEXT("CAdvancedSettings::get_NotifyTSPublicKey -> %08X, fNotify = %s"), hr, BooleanToString(*pfNotify)); + return hr; + } + + /* IMsRdpClientAdvancedSettings2 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_CanAutoReconnect(VARIANT_BOOL * pfCanAutoReconnect) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::get_CanAutoReconnect(%p)"), pfCanAutoReconnect); + HRESULT hr = pIMsRdpClientAdvancedSettings2->get_CanAutoReconnect(pfCanAutoReconnect); + dbgprintf(TEXT("CAdvancedSettings::get_CanAutoReconnect -> %08X, fCanAutoReconnect = %s"), hr, BooleanToString(*pfCanAutoReconnect)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_EnableAutoReconnect(VARIANT_BOOL pfEnableAutoReconnect) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::put_EnableAutoReconnect(%s)"), BooleanToString(pfEnableAutoReconnect)); + HRESULT hr = pIMsRdpClientAdvancedSettings2->put_EnableAutoReconnect(pfEnableAutoReconnect); + dbgprintf(TEXT("CAdvancedSettings::put_EnableAutoReconnect -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_EnableAutoReconnect(VARIANT_BOOL * pfEnableAutoReconnect) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::get_EnableAutoReconnect(%p)"), pfEnableAutoReconnect); + HRESULT hr = pIMsRdpClientAdvancedSettings2->get_EnableAutoReconnect(pfEnableAutoReconnect); + dbgprintf(TEXT("CAdvancedSettings::get_EnableAutoReconnect -> %08X, fEnableAutoReconnect = %s"), hr, BooleanToString(*pfEnableAutoReconnect)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_MaxReconnectAttempts(long pMaxReconnectAttempts) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::put_MaxReconnectAttempts(%ld)"), pMaxReconnectAttempts); + HRESULT hr = pIMsRdpClientAdvancedSettings2->put_MaxReconnectAttempts(pMaxReconnectAttempts); + dbgprintf(TEXT("CAdvancedSettings::put_MaxReconnectAttempts -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_MaxReconnectAttempts(long * pMaxReconnectAttempts) + { + IMsRdpClientAdvancedSettings2 * pIMsRdpClientAdvancedSettings2 = getIMsRdpClientAdvancedSettings2(); + dbgprintf(TEXT("CAdvancedSettings::get_MaxReconnectAttempts(%p)"), pMaxReconnectAttempts); + HRESULT hr = pIMsRdpClientAdvancedSettings2->get_MaxReconnectAttempts(pMaxReconnectAttempts); + dbgprintf(TEXT("CAdvancedSettings::get_MaxReconnectAttempts -> %08X, MaxReconnectAttempts = %ld"), hr, *pMaxReconnectAttempts); + return hr; + } + + /* IMsRdpClientAdvancedSettings3 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowMinimizeButton(VARIANT_BOOL pfShowMinimize) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowMinimizeButton(%s)"), BooleanToString(pfShowMinimize)); + HRESULT hr = pIMsRdpClientAdvancedSettings3->put_ConnectionBarShowMinimizeButton(pfShowMinimize); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowMinimizeButton -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowMinimizeButton(VARIANT_BOOL * pfShowMinimize) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowMinimizeButton(%p)"), pfShowMinimize); + HRESULT hr = pIMsRdpClientAdvancedSettings3->get_ConnectionBarShowMinimizeButton(pfShowMinimize); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowMinimizeButton -> %08X, fShowMinimize = %s"), hr, BooleanToString(*pfShowMinimize)); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowRestoreButton(VARIANT_BOOL pfShowRestore) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowRestoreButton(%s)"), BooleanToString(pfShowRestore)); + HRESULT hr = pIMsRdpClientAdvancedSettings3->put_ConnectionBarShowRestoreButton(pfShowRestore); + dbgprintf(TEXT("CAdvancedSettings::put_ConnectionBarShowRestoreButton -> %08X"), hr); + return hr; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowRestoreButton(VARIANT_BOOL * pfShowRestore) + { + IMsRdpClientAdvancedSettings3 * pIMsRdpClientAdvancedSettings3 = getIMsRdpClientAdvancedSettings3(); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowRestoreButton(%p)"), pfShowRestore); + HRESULT hr = pIMsRdpClientAdvancedSettings3->get_ConnectionBarShowRestoreButton(pfShowRestore); + dbgprintf(TEXT("CAdvancedSettings::get_ConnectionBarShowRestoreButton -> %08X, fShowRestore = %s"), hr, BooleanToString(*pfShowRestore)); + return hr; + } + + /* IMsRdpClientAdvancedSettings4 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::put_AuthenticationLevel(unsigned int puiAuthLevel) + { + IMsRdpClientAdvancedSettings4 * pIMsRdpClientAdvancedSettings4 = getIMsRdpClientAdvancedSettings4(); + dbgprintf(TEXT("CAdvancedSettings::put_AuthenticationLevel(%u)"), puiAuthLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings4->put_AuthenticationLevel(puiAuthLevel); + dbgprintf(TEXT("CAdvancedSettings::put_AuthenticationLevel -> %08X"), hr); + return hr; + } + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::get_AuthenticationLevel(unsigned int * puiAuthLevel) + { + IMsRdpClientAdvancedSettings4 * pIMsRdpClientAdvancedSettings4 = getIMsRdpClientAdvancedSettings4(); + dbgprintf(TEXT("CAdvancedSettings::get_AuthenticationLevel(%p)"), puiAuthLevel); + HRESULT hr = pIMsRdpClientAdvancedSettings4->get_AuthenticationLevel(puiAuthLevel); + dbgprintf(TEXT("CAdvancedSettings::get_AuthenticationLevel -> %08X, uiAuthLevel = %ld"), hr, *puiAuthLevel); + return hr; + } + }; + + class CoClass: + /* Standard interfaces */ + public IUnknown, + public IDispatch, + public IConnectionPointContainer, + public IDataObject, + public IObjectSafety, + public IOleControl, + public IOleInPlaceActiveObject, + public IOleInPlaceObject, + public IOleObject, + public IOleWindow, + public IPersist, + public IPersistPropertyBag, + public IPersistStorage, + public IPersistStreamInit, + public IProvideClassInfo, + public IProvideClassInfo2, + public IQuickActivate, + public ISpecifyPropertyPages, + public IViewObject, + public IViewObject2, + + /* RDP client interfaces */ + public IMsRdpClient4, + public IMsRdpClientNonScriptable2 + { + private: + LONG m_refCount; + + IUnknown * m_IUnknown; + + IDispatch * m_IDispatch; + IConnectionPointContainer * m_IConnectionPointContainer; + IDataObject * m_IDataObject; + IObjectSafety * m_IObjectSafety; + IOleControl * m_IOleControl; + IOleInPlaceActiveObject * m_IOleInPlaceActiveObject; + IOleInPlaceObject * m_IOleInPlaceObject; + IOleObject * m_IOleObject; + IOleWindow * m_IOleWindow; + IPersist * m_IPersist; + IPersistPropertyBag * m_IPersistPropertyBag; + IPersistStorage * m_IPersistStorage; + IPersistStreamInit * m_IPersistStreamInit; + IProvideClassInfo * m_IProvideClassInfo; + IProvideClassInfo2 * m_IProvideClassInfo2; + IQuickActivate * m_IQuickActivate; + ISpecifyPropertyPages * m_ISpecifyPropertyPages; + IViewObject * m_IViewObject; + IViewObject2 * m_IViewObject2; + + IMsRdpClient * m_IMsRdpClient; + IMsRdpClient2 * m_IMsRdpClient2; + IMsRdpClient3 * m_IMsRdpClient3; + IMsRdpClient4 * m_IMsRdpClient4; + IMsTscAx * m_IMsTscAx; + IMsTscNonScriptable * m_IMsTscNonScriptable; + IMsRdpClientNonScriptable * m_IMsRdpClientNonScriptable; + IMsRdpClientNonScriptable2 * m_IMsRdpClientNonScriptable2; + + IDispatch * getIDispatch() + { + if(m_IDispatch) + return m_IDispatch; + + if(m_IMsRdpClient) + m_IDispatch = m_IMsRdpClient; + else if(m_IMsRdpClient2) + m_IDispatch = m_IMsRdpClient2; + else if(m_IMsRdpClient3) + m_IDispatch = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IDispatch = m_IMsRdpClient4; + else if(m_IMsTscAx) + m_IDispatch = m_IMsTscAx; + + if(m_IDispatch) + { + m_IDispatch->AddRef(); + return m_IDispatch; + } + + if(SUCCEEDED(m_IUnknown->QueryInterface(&m_IDispatch))) + return m_IDispatch; + + return NULL; + } + + IConnectionPointContainer * getIConnectionPointContainer() + { + if(m_IConnectionPointContainer) + return m_IConnectionPointContainer; + + m_IUnknown->QueryInterface(&m_IConnectionPointContainer); + return m_IConnectionPointContainer; + + } + + IDataObject * getIDataObject() + { + if(m_IDataObject) + return m_IDataObject; + + m_IUnknown->QueryInterface(&m_IDataObject); + return m_IDataObject; + } + + IObjectSafety * getIObjectSafety() + { + if(m_IObjectSafety) + return m_IObjectSafety; + + m_IUnknown->QueryInterface(&m_IObjectSafety); + return m_IObjectSafety; + } + + IOleControl * getIOleControl() + { + if(m_IOleControl) + return m_IOleControl; + + m_IUnknown->QueryInterface(&m_IOleControl); + return m_IOleControl; + } + + IOleInPlaceActiveObject * getIOleInPlaceActiveObject() + { + if(m_IOleInPlaceActiveObject) + return m_IOleInPlaceActiveObject; + + m_IUnknown->QueryInterface(&m_IOleInPlaceActiveObject); + return m_IOleInPlaceActiveObject; + } + + IOleInPlaceObject * getIOleInPlaceObject() + { + if(m_IOleInPlaceObject) + return m_IOleInPlaceObject; + + m_IUnknown->QueryInterface(&m_IOleInPlaceObject); + return m_IOleInPlaceObject; + } + + IOleObject * getIOleObject() + { + if(m_IOleObject) + return m_IOleObject; + + m_IUnknown->QueryInterface(&m_IOleObject); + return m_IOleObject; + } + + IOleWindow * getIOleWindow() + { + if(m_IOleWindow) + return m_IOleWindow; + + if(m_IOleInPlaceActiveObject) + m_IOleWindow = m_IOleInPlaceActiveObject; + + if(m_IOleWindow) + { + m_IOleWindow->AddRef(); + return m_IOleWindow; + } + + m_IUnknown->QueryInterface(&m_IOleWindow); + return m_IOleWindow; + } + + IPersist * getIPersist() + { + if(m_IPersist) + return m_IPersist; + + if(m_IPersistPropertyBag) + m_IPersist = m_IPersistPropertyBag; + else if(m_IPersistStorage) + m_IPersist = m_IPersistStorage; + else if(m_IPersistStreamInit) + m_IPersist = m_IPersistStreamInit; + + if(m_IPersist) + { + m_IPersist->AddRef(); + return m_IPersist; + } + + m_IUnknown->QueryInterface(&m_IPersist); + return m_IPersist; + } + + IPersistPropertyBag * getIPersistPropertyBag() + { + if(m_IPersistPropertyBag) + return m_IPersistPropertyBag; + + m_IUnknown->QueryInterface(&m_IPersistPropertyBag); + return m_IPersistPropertyBag; + } + + IPersistStorage * getIPersistStorage() + { + if(m_IPersistStorage) + return m_IPersistStorage; + + m_IUnknown->QueryInterface(&m_IPersistStorage); + return m_IPersistStorage; + } + + IPersistStreamInit * getIPersistStreamInit() + { + if(m_IPersistStreamInit) + return m_IPersistStreamInit; + + m_IUnknown->QueryInterface(&m_IPersistStreamInit); + return m_IPersistStreamInit; + } + + IProvideClassInfo * getIProvideClassInfo() + { + if(m_IProvideClassInfo) + return m_IProvideClassInfo; + + if(m_IProvideClassInfo2) + m_IProvideClassInfo = m_IProvideClassInfo2; + + if(m_IProvideClassInfo) + { + m_IProvideClassInfo->AddRef(); + return m_IProvideClassInfo; + } + + m_IUnknown->QueryInterface(&m_IProvideClassInfo); + return m_IProvideClassInfo; + } + + IProvideClassInfo2 * getIProvideClassInfo2() + { + if(m_IProvideClassInfo2) + return m_IProvideClassInfo2; + + m_IUnknown->QueryInterface(&m_IProvideClassInfo2); + return m_IProvideClassInfo2; + } + + IQuickActivate * getIQuickActivate() + { + if(m_IQuickActivate) + return m_IQuickActivate; + + m_IUnknown->QueryInterface(&m_IQuickActivate); + return m_IQuickActivate; + } + + ISpecifyPropertyPages * getISpecifyPropertyPages() + { + if(m_ISpecifyPropertyPages) + return m_ISpecifyPropertyPages; + + m_IUnknown->QueryInterface(&m_ISpecifyPropertyPages); + return m_ISpecifyPropertyPages; + } + + IViewObject * getIViewObject() + { + if(m_IViewObject) + return m_IViewObject; + + if(m_IViewObject2) + m_IViewObject = m_IViewObject2; + + if(m_IViewObject) + { + m_IViewObject->AddRef(); + return m_IViewObject; + } + + m_IUnknown->QueryInterface(&m_IViewObject); + return m_IViewObject; + } + + IViewObject2 * getIViewObject2() + { + if(m_IViewObject2) + return m_IViewObject2; + + m_IUnknown->QueryInterface(&m_IViewObject2); + return m_IViewObject2; + } + + IMsRdpClient * getIMsRdpClient() + { + if(m_IMsRdpClient) + return m_IMsRdpClient; + + if(m_IMsRdpClient2) + m_IMsRdpClient = m_IMsRdpClient2; + else if(m_IMsRdpClient3) + m_IMsRdpClient = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IMsRdpClient = m_IMsRdpClient4; + + if(m_IMsRdpClient) + { + m_IMsRdpClient->AddRef(); + return m_IMsRdpClient; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClient); + return m_IMsRdpClient; + } + + IMsRdpClient2 * getIMsRdpClient2() + { + if(m_IMsRdpClient2) + return m_IMsRdpClient2; + + if(m_IMsRdpClient3) + m_IMsRdpClient2 = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IMsRdpClient2 = m_IMsRdpClient4; + + if(m_IMsRdpClient2) + { + m_IMsRdpClient2->AddRef(); + return m_IMsRdpClient2; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClient2); + return m_IMsRdpClient2; + } + + IMsRdpClient3 * getIMsRdpClient3() + { + if(m_IMsRdpClient3) + return m_IMsRdpClient3; + + if(m_IMsRdpClient4) + m_IMsRdpClient3 = m_IMsRdpClient4; + + if(m_IMsRdpClient3) + { + m_IMsRdpClient3->AddRef(); + return m_IMsRdpClient3; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClient3); + return m_IMsRdpClient3; + } + + IMsRdpClient4 * getIMsRdpClient4() + { + if(m_IMsRdpClient4) + return m_IMsRdpClient4; + + m_IUnknown->QueryInterface(&m_IMsRdpClient4); + return m_IMsRdpClient4; + } + + IMsTscAx * getIMsTscAx() + { + if(m_IMsTscAx) + return m_IMsTscAx; + + if(m_IMsRdpClient) + m_IMsTscAx = m_IMsRdpClient; + else if(m_IMsRdpClient2) + m_IMsTscAx = m_IMsRdpClient2; + else if(m_IMsRdpClient3) + m_IMsTscAx = m_IMsRdpClient3; + else if(m_IMsRdpClient4) + m_IMsTscAx = m_IMsRdpClient4; + + if(m_IMsTscAx) + { + m_IMsTscAx->AddRef(); + return m_IMsTscAx; + } + + m_IUnknown->QueryInterface(&m_IMsTscAx); + return m_IMsTscAx; + } + + IMsTscNonScriptable * getIMsTscNonScriptable() + { + if(m_IMsTscNonScriptable) + return m_IMsTscNonScriptable; + + if(m_IMsRdpClientNonScriptable) + m_IMsTscNonScriptable = m_IMsRdpClientNonScriptable; + else if(m_IMsRdpClientNonScriptable2) + m_IMsTscNonScriptable = m_IMsRdpClientNonScriptable2; + + if(m_IMsTscNonScriptable) + { + m_IMsTscNonScriptable->AddRef(); + return m_IMsTscNonScriptable; + } + + m_IUnknown->QueryInterface(&m_IMsTscNonScriptable); + return m_IMsTscNonScriptable; + } + + IMsRdpClientNonScriptable * getIMsRdpClientNonScriptable() + { + if(m_IMsRdpClientNonScriptable) + return m_IMsRdpClientNonScriptable; + + if(m_IMsRdpClientNonScriptable2) + m_IMsRdpClientNonScriptable = m_IMsRdpClientNonScriptable2; + + if(m_IMsRdpClientNonScriptable) + { + m_IMsRdpClientNonScriptable->AddRef(); + return m_IMsRdpClientNonScriptable; + } + + m_IUnknown->QueryInterface(&m_IMsRdpClientNonScriptable); + return m_IMsRdpClientNonScriptable; + } + + IMsRdpClientNonScriptable2 * getIMsRdpClientNonScriptable2() + { + if(m_IMsRdpClientNonScriptable2) + return m_IMsRdpClientNonScriptable2; + + m_IUnknown->QueryInterface(&m_IMsRdpClientNonScriptable2); + return m_IMsRdpClientNonScriptable2; + } + + private: + IUnknown * m_outer; + + HRESULT queryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr; + IUnknown * pvObject = NULL; + + dbgprintf(TEXT("IUnknown::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + +#define QIBEGIN() \ + if(riid == IID_IUnknown) \ + { \ + assert(0); \ + } + +#define QI(I) \ + else if(riid == IID_ ## I) \ + { \ + if(m_ ## I) \ + { \ + m_ ## I->AddRef(); \ + hr = S_OK; \ + } \ + else \ + { \ + hr = m_IUnknown->QueryInterface(&m_ ## I); \ + } \ + \ + if(SUCCEEDED(hr)) \ + pvObject = static_cast(this); \ + } + +#define QIEND() \ + else \ + { \ + hr = E_NOINTERFACE; \ + pvObject = NULL; \ + } + + QIBEGIN() + + /* Standard interfaces */ + QI(IDispatch) + QI(IConnectionPointContainer) + QI(IDataObject) + QI(IObjectSafety) + QI(IOleControl) + QI(IOleInPlaceActiveObject) + QI(IOleInPlaceObject) + QI(IOleObject) + QI(IOleWindow) + QI(IPersist) + QI(IPersistPropertyBag) + QI(IPersistStorage) + QI(IPersistStreamInit) + QI(IProvideClassInfo) + QI(IProvideClassInfo2) + QI(IQuickActivate) + QI(ISpecifyPropertyPages) + QI(IViewObject) + QI(IViewObject2) + + /* Terminal services client */ + QI(IMsRdpClient) + QI(IMsRdpClient2) + QI(IMsRdpClient3) + QI(IMsRdpClient4) + QI(IMsTscAx) + QI(IMsTscNonScriptable) + QI(IMsRdpClientNonScriptable) + QI(IMsRdpClientNonScriptable2) + QIEND() + +#undef QIBEGIN +#undef QIEND +#undef QI + + if(SUCCEEDED(hr)) + { + assert(pvObject); + pvObject->AddRef(); + } + else + { + assert(pvObject == NULL); + } + + *ppvObject = pvObject; + + dbgprintf(TEXT("IUnknown::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + ULONG addRef() + { + return InterlockedIncrement(&m_refCount); + } + + ULONG release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + friend class CoClassInner; + + class CoClassInner: public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + if(riid == IID_IUnknown) + { + AddRef(); + *ppvObject = this; + return S_OK; + } + + return InnerToOuter(this)->queryInterface(riid, ppvObject); + } + + virtual ULONG STDMETHODCALLTYPE AddRef() + { + return InnerToOuter(this)->addRef(); + } + + virtual ULONG STDMETHODCALLTYPE Release() + { + return InnerToOuter(this)->release(); + } + } + m_inner; + + static CoClass * InnerToOuter(CoClassInner * inner) + { + return CONTAINING_RECORD(inner, CoClass, m_inner); + } + + private: + CoClass(IUnknown * pUnknw, IUnknown * pUnkOuter): + m_refCount(1), + m_outer(pUnkOuter), + m_IUnknown(pUnknw), + m_IDispatch(NULL), + m_IConnectionPointContainer(NULL), + m_IDataObject(NULL), + m_IObjectSafety(NULL), + m_IOleControl(NULL), + m_IOleInPlaceActiveObject(NULL), + m_IOleInPlaceObject(NULL), + m_IOleObject(NULL), + m_IOleWindow(NULL), + m_IPersist(NULL), + m_IPersistPropertyBag(NULL), + m_IPersistStorage(NULL), + m_IPersistStreamInit(NULL), + m_IProvideClassInfo(NULL), + m_IProvideClassInfo2(NULL), + m_IQuickActivate(NULL), + m_ISpecifyPropertyPages(NULL), + m_IViewObject(NULL), + m_IViewObject2(NULL), + m_IMsRdpClient(NULL), + m_IMsRdpClient2(NULL), + m_IMsRdpClient3(NULL), + m_IMsRdpClient4(NULL), + m_IMsTscAx(NULL), + m_IMsTscNonScriptable(NULL), + m_IMsRdpClientNonScriptable(NULL), + m_IMsRdpClientNonScriptable2(NULL) + { + if(m_outer == NULL) + m_outer = &m_inner; + } + + public: + static HRESULT CreateInstance(IUnknown * pUnknw, IUnknown * pUnkOuter, REFIID riid, void ** ppvObject) + { + HRESULT hr = S_OK; + + if(pUnkOuter && riid != IID_IUnknown) + hr = CLASS_E_NOAGGREGATION; + else + { + CoClass * p = new CoClass(pUnknw, pUnkOuter); + + if(p == NULL) + hr = E_OUTOFMEMORY; + else + { + hr = p->m_inner.QueryInterface(riid, ppvObject); + + if(FAILED(hr)) + delete p; + else + p->m_inner.Release(); + } + } + + if(FAILED(hr)) + pUnknw->Release(); + + return hr; + } + + private: + ~CoClass() + { + if(m_IUnknown) + m_IUnknown->Release(); + + if(m_IDispatch) + m_IDispatch->Release(); + + if(m_IConnectionPointContainer) + m_IConnectionPointContainer->Release(); + + if(m_IDataObject) + m_IDataObject->Release(); + + if(m_IObjectSafety) + m_IObjectSafety->Release(); + + if(m_IOleControl) + m_IOleControl->Release(); + + if(m_IOleInPlaceActiveObject) + m_IOleInPlaceActiveObject->Release(); + + if(m_IOleInPlaceObject) + m_IOleInPlaceObject->Release(); + + if(m_IOleObject) + m_IOleObject->Release(); + + if(m_IOleWindow) + m_IOleWindow->Release(); + + if(m_IPersist) + m_IPersist->Release(); + + if(m_IPersistPropertyBag) + m_IPersistPropertyBag->Release(); + + if(m_IPersistStorage) + m_IPersistStorage->Release(); + + if(m_IPersistStreamInit) + m_IPersistStreamInit->Release(); + + if(m_IProvideClassInfo) + m_IProvideClassInfo->Release(); + + if(m_IProvideClassInfo2) + m_IProvideClassInfo2->Release(); + + if(m_IQuickActivate) + m_IQuickActivate->Release(); + + if(m_ISpecifyPropertyPages) + m_ISpecifyPropertyPages->Release(); + + if(m_IViewObject) + m_IViewObject->Release(); + + if(m_IViewObject2) + m_IViewObject2->Release(); + + if(m_IMsRdpClient) + m_IMsRdpClient->Release(); + + if(m_IMsRdpClient2) + m_IMsRdpClient2->Release(); + + if(m_IMsRdpClient3) + m_IMsRdpClient3->Release(); + + if(m_IMsRdpClient4) + m_IMsRdpClient4->Release(); + + if(m_IMsTscAx) + m_IMsTscAx->Release(); + + if(m_IMsTscNonScriptable) + m_IMsTscNonScriptable->Release(); + + if(m_IMsRdpClientNonScriptable) + m_IMsRdpClientNonScriptable->Release(); + + if(m_IMsRdpClientNonScriptable2) + m_IMsRdpClientNonScriptable2->Release(); + } + + /* IUnknown */ + public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + return m_outer->QueryInterface(riid, ppvObject); + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return m_outer->AddRef(); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + return m_outer->Release(); + } + + /* IDispatch */ + private: + static void FreeExcepInfo(const EXCEPINFO& excepInfo) + { + if(excepInfo.bstrSource) + SysFreeString(excepInfo.bstrSource); + + if(excepInfo.bstrDescription) + SysFreeString(excepInfo.bstrDescription); + + if(excepInfo.bstrHelpFile) + SysFreeString(excepInfo.bstrHelpFile); + } + + static std::basic_string ExcepInfoToString(const EXCEPINFO& excepInfo) + { + std::basic_ostringstream o; + + o << "{"; + o << " code: " << excepInfo.wCode << " from: " << std::basic_string(excepInfo.bstrSource, excepInfo.bstrSource + SysStringLen(excepInfo.bstrSource)); + + BSTR bstrDescription = NULL; + + if(excepInfo.bstrDescription) + bstrDescription = excepInfo.bstrDescription; + else if(excepInfo.pfnDeferredFillIn) + { + EXCEPINFO excepInfoCopy = excepInfo; + + if(SUCCEEDED(excepInfoCopy.pfnDeferredFillIn(&excepInfoCopy)) && excepInfoCopy.bstrDescription) + { + bstrDescription = excepInfoCopy.bstrDescription; + excepInfoCopy.bstrDescription = NULL; + } + + if(excepInfoCopy.bstrSource == excepInfo.bstrSource) + excepInfoCopy.bstrSource = NULL; + + if(excepInfoCopy.bstrHelpFile == excepInfo.bstrDescription) + excepInfoCopy.bstrDescription = NULL; + + FreeExcepInfo(excepInfoCopy); + } + + if(bstrDescription) + { + o << " msg: " << std::basic_string(bstrDescription, bstrDescription + SysStringLen(bstrDescription)); + + if(excepInfo.bstrDescription == NULL) + SysFreeString(bstrDescription); + } + + o << " }"; + + return o.str().c_str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT * pctinfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("IDispatch::GetTypeInfoCount(%p)"), pctinfo); + HRESULT hr = pIDispatch->GetTypeInfoCount(pctinfo); + dbgprintf(TEXT("IDispatch::GetTypeInfoCount -> %08X, ctinfo = %lu"), hr, *pctinfo); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + IDispatch * pIDispatch = getIDispatch(); + dbgprintf(TEXT("IDispatch::GetTypeInfo(%lu, %08X, %p)"), iTInfo, lcid, ppTInfo); + HRESULT hr = pIDispatch->GetTypeInfo(iTInfo, lcid, ppTInfo); + dbgprintf(TEXT("IDispatch::GetTypeInfo -> %08X, pTInfo = %p"), hr, *ppTInfo); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + IDispatch * pIDispatch = getIDispatch(); + std::wstring strtemp; + + std::wostringstream strtempo; + + strtemp.resize(0); + strtemp += L"[ "; + + for(UINT i = 0; i < cNames; ++ i) + { + if(i) + strtemp += L", "; + + strtemp += rgszNames[i]; + } + + strtemp += L" ]"; + + dbgprintf(TEXT("IDispatch::GetIDsOfNames(%ls, %ls, %lu, %08X, %p)"), UUIDToString(riid).c_str(), strtemp.c_str(), cNames, lcid, rgDispId); + HRESULT hr = pIDispatch->GetIDsOfNames(riid, rgszNames, cNames, lcid, rgDispId); + + strtemp.resize(0); + strtempo.str(strtemp); + + strtempo << L"[ "; + + for(UINT i = 0; i < cNames; ++ i) + { + if(i) + strtempo << L", "; + + strtempo << rgDispId[i]; + } + + strtempo << L" ]"; + + dbgprintf(TEXT("IDispatch::GetIDsOfNames -> %08X, rgDispId = %ls"), hr, strtempo.str().c_str()); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + IDispatch * pIDispatch = getIDispatch(); + + std::basic_ostringstream strtempo; + + strtempo << L"{"; + + for(unsigned int i = pDispParams->cArgs, j = pDispParams->cNamedArgs; j < pDispParams->cArgs; -- i, ++ j) + { + strtempo << L" "; + strtempo << VariantToString(pDispParams->rgvarg[i - 1]); + strtempo << L","; + } + + for(unsigned int i = pDispParams->cArgs - pDispParams->cNamedArgs; i > 0; -- i) + { + strtempo << L" "; + strtempo << L"["; strtempo << pDispParams->rgdispidNamedArgs[i - 1]; strtempo << L"] => "; + strtempo << VariantToString(pDispParams->rgvarg[i - 1]); + strtempo << L","; + } + + strtempo << L" }"; + + dbgprintf(TEXT("IDispatch::Invoke(%ld, %ls, %08X, %04X, %s, %p, %p, %p)"), dispIdMember, UUIDToString(riid).c_str(), lcid, wFlags, strtempo.str().c_str(), pVarResult, pExcepInfo, puArgErr); + + VARIANT VarResult = { }; + EXCEPINFO ExcepInfo = { }; + + if(pVarResult == NULL) + pVarResult = &VarResult; + + if(pExcepInfo == NULL) + pExcepInfo = &ExcepInfo; + + HRESULT hr = pIDispatch->Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + dbgprintf(TEXT("IDispatch::Invoke -> %08X, returns %s, throws %s"), hr, VariantToString(*pVarResult).c_str(), ExcepInfoToString(*pExcepInfo).c_str()); + + FreeExcepInfo(ExcepInfo); + + return hr; + } + + /* IConnectionPointContainer */ + public: + virtual HRESULT STDMETHODCALLTYPE EnumConnectionPoints(IEnumConnectionPoints ** ppEnum) + { + IConnectionPointContainer * pIConnectionPointContainer = getIConnectionPointContainer(); + dbgprintf(TEXT("IConnectionPointContainer::EnumConnectionPoints(%p)"), ppEnum); + HRESULT hr = pIConnectionPointContainer->EnumConnectionPoints(ppEnum); + dbgprintf(TEXT("IConnectionPointContainer::EnumConnectionPoints -> %08X, pEnum = %p"), hr, *ppEnum); + + if(SUCCEEDED(hr)) + *ppEnum = HookIEnumConnectionPoints(*ppEnum); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE FindConnectionPoint(REFIID riid, IConnectionPoint ** ppCP) + { + IConnectionPointContainer * pIConnectionPointContainer = getIConnectionPointContainer(); + dbgprintf(TEXT("IConnectionPointContainer::FindConnectionPoint(%ls, %p)"), UUIDToString(riid).c_str(), ppCP); + HRESULT hr = pIConnectionPointContainer->FindConnectionPoint(riid, ppCP); + dbgprintf(TEXT("IConnectionPointContainer::FindConnectionPoint -> %08X, pCP = %p"), hr, *ppCP); + + if(SUCCEEDED(hr)) + *ppCP = HookIConnectionPoint(*ppCP); + + return hr; + } + + /* IDataObject */ + private: + static std::basic_string TargetDeviceToString(const DVTARGETDEVICE& targetdev) + { + if(&targetdev == NULL) + return TEXT(""); + + std::basic_ostringstream o; + + o << "{"; + o << LPCWSTR(targetdev.tdData[targetdev.tdDriverNameOffset]); + + if(targetdev.tdDeviceNameOffset) + { + o << ","; + o << LPCWSTR(targetdev.tdData[targetdev.tdDeviceNameOffset]); + } + + if(targetdev.tdPortNameOffset) + { + o << ","; + o << LPCWSTR(targetdev.tdData[targetdev.tdPortNameOffset]); + } + + o << " }"; + + return o.str(); + } + + static LPCTSTR AspectToString(DWORD aspect) + { + switch(aspect) + { + case DVASPECT_CONTENT: return TEXT("content"); + case DVASPECT_THUMBNAIL: return TEXT("thumbnail"); + case DVASPECT_ICON: return TEXT("icon"); + case DVASPECT_DOCPRINT: return TEXT("printable"); + default: return TEXT(""); + } + } + + static LPCTSTR TymedToString(DWORD tymed) + { + switch(tymed) + { + case TYMED_HGLOBAL: return TEXT("memory"); + case TYMED_FILE: return TEXT("file"); + case TYMED_ISTREAM: return TEXT("IStream"); + case TYMED_ISTORAGE: return TEXT("IStorage"); + case TYMED_GDI: return TEXT("bitmap"); + case TYMED_MFPICT: return TEXT("metafile"); + case TYMED_ENHMF: return TEXT("enhanced metafile"); + case TYMED_NULL: return TEXT(""); + default: return TEXT(""); + } + } + + static std::basic_string FormatEtcToString(const FORMATETC& formatetc) + { + std::basic_ostringstream o; + + o << "{"; + + // cfFormat + o << " format: "; + + switch(formatetc.cfFormat) + { + case CF_TEXT: o << "ANSI text"; break; + case CF_BITMAP: o << "bitmap"; break; + case CF_METAFILEPICT: o << "metafile"; break; + case CF_SYLK: o << "symlink"; break; + case CF_DIF: o << "DIF"; break; + case CF_TIFF: o << "TIFF"; break; + case CF_OEMTEXT: o << "OEM text"; break; + case CF_DIB: o << "DIBv4"; break; + case CF_PALETTE: o << "palette"; break; + case CF_PENDATA: o << "pen data"; break; + case CF_RIFF: o << "RIFF"; break; + case CF_WAVE: o << "WAV"; break; + case CF_UNICODETEXT: o << "Unicode text"; break; + case CF_ENHMETAFILE: o << "enhanced metafile"; break; + case CF_HDROP: o << "list of files"; break; + case CF_LOCALE: o << "LCID"; break; + case CF_DIBV5: o << "DIBv5"; break; + case CF_OWNERDISPLAY: o << ""; break; + case CF_DSPTEXT: o << ""; break; + case CF_DSPBITMAP: o << ""; break; + case CF_DSPMETAFILEPICT: o << ""; break; + case CF_DSPENHMETAFILE: o << ""; break; + + default: + o << "<"; + + if(formatetc.cfFormat >= CF_PRIVATEFIRST && formatetc.cfFormat <= CF_PRIVATELAST) + o << "private"; + else if(formatetc.cfFormat >= CF_GDIOBJFIRST && formatetc.cfFormat <= CF_GDIOBJLAST) + o << "GDI object"; + else + o << "unknown"; + + o << " " << std::hex << formatetc.cfFormat << std::dec << ">"; + } + + // ptd + if(formatetc.ptd) + o << " device: " << TargetDeviceToString(*formatetc.ptd); + + // dwAspect + o << " aspect: " << AspectToString(formatetc.dwAspect); + + // lindex + if(formatetc.dwAspect == DVASPECT_CONTENT || formatetc.dwAspect == DVASPECT_DOCPRINT) + o << " page split: " << formatetc.lindex; + + // tymed + o << " medium: " << TymedToString(formatetc.tymed); + + return o.str(); + } + + static std::basic_string MediumToString(const STGMEDIUM& medium) + { + std::basic_ostringstream o; + + o << "{ "; + o << TymedToString(medium.tymed); + o << " }"; + + return o.str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE GetData(FORMATETC * pformatetcIn, STGMEDIUM * pmedium) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::GetData(%s, %p)"), FormatEtcToString(*pformatetcIn).c_str(), pmedium); + HRESULT hr = pIDataObject->GetData(pformatetcIn, pmedium); + dbgprintf(TEXT("IDataObject::GetData -> %08X, %s"), hr, MediumToString(*pmedium).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetDataHere(FORMATETC * pformatetc, STGMEDIUM * pmedium) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::GetDataHere(%s, %p)"), FormatEtcToString(*pformatetc).c_str(), pmedium); + HRESULT hr = pIDataObject->GetDataHere(pformatetc, pmedium); + dbgprintf(TEXT("IDataObject::GetDataHere -> %08X, medium = %s"), hr, MediumToString(*pmedium).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE QueryGetData(FORMATETC * pformatetc) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::QueryGetData(%s)"), FormatEtcToString(*pformatetc).c_str()); + HRESULT hr = pIDataObject->QueryGetData(pformatetc); + dbgprintf(TEXT("IDataObject::QueryGetData -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(FORMATETC * pformatectIn, FORMATETC * pformatetcOut) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::GetCanonicalFormatEtc(%s, %p)"), FormatEtcToString(*pformatectIn).c_str(), pformatetcOut); + HRESULT hr = pIDataObject->GetCanonicalFormatEtc(pformatectIn, pformatetcOut); + dbgprintf(TEXT("IDataObject::GetCanonicalFormatEtc -> %08X, formatetcOut = %s"), hr, FormatEtcToString(*pformatetcOut).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetData(FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::SetData(%s, %p, %s)"), FormatEtcToString(*pformatetc).c_str(), MediumToString(*pmedium).c_str(), fRelease ? TEXT("true") : TEXT("false")); + HRESULT hr = pIDataObject->SetData(pformatetc, pmedium, fRelease); + dbgprintf(TEXT("IDataObject::SetData -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC ** ppenumFormatEtc) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::EnumFormatEtc(%lu, %p)"), dwDirection, ppenumFormatEtc); + HRESULT hr = pIDataObject->EnumFormatEtc(dwDirection, ppenumFormatEtc); + dbgprintf(TEXT("IDataObject::EnumFormatEtc -> %08X, penumFormatEtc = %p"), hr, *ppenumFormatEtc); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE DAdvise(FORMATETC * pformatetc, DWORD advf, IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::DAdvise(%s, %lu, %p, %p)"), FormatEtcToString(*pformatetc).c_str(), advf, pAdvSink, pdwConnection); + HRESULT hr = pIDataObject->DAdvise(pformatetc, advf, pAdvSink, pdwConnection); + dbgprintf(TEXT("IDataObject::DAdvise -> %08X, dwConnection = %lu"), hr, *pdwConnection); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE DUnadvise(DWORD dwConnection) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::DUnadvise(%lu)"), dwConnection); + HRESULT hr = pIDataObject->DUnadvise(dwConnection); + dbgprintf(TEXT("IDataObject::DUnadvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(IEnumSTATDATA ** ppenumAdvise) + { + IDataObject * pIDataObject = getIDataObject(); + dbgprintf(TEXT("IDataObject::EnumDAdvise(%p)"), ppenumAdvise); + HRESULT hr = pIDataObject->EnumDAdvise(ppenumAdvise); + dbgprintf(TEXT("IDataObject::EnumDAdvise -> %08X, penumAdvise = %p"), hr, *ppenumAdvise); + // TODO: hook + return hr; + } + + /* IObjectSafety */ + public: + virtual HRESULT STDMETHODCALLTYPE IObjectSafety::GetInterfaceSafetyOptions(REFIID riid, DWORD * pdwSupportedOptions, DWORD * pdwEnabledOptions) + { + IObjectSafety * pIObjectSafety = getIObjectSafety(); + dbgprintf(TEXT("IObjectSafety::GetInterfaceSafetyOptions(%ls, %p, %p)"), UUIDToString(riid).c_str(), pdwSupportedOptions, pdwEnabledOptions); + HRESULT hr = pIObjectSafety->GetInterfaceSafetyOptions(riid, pdwSupportedOptions, pdwEnabledOptions); + dbgprintf(TEXT("IObjectSafety::GetInterfaceSafetyOptions -> %08X, dwSupportedOptions = %08X, dwEnabledOptions = %08X"), hr, *pdwSupportedOptions, *pdwEnabledOptions); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IObjectSafety::SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions) + { + IObjectSafety * pIObjectSafety = getIObjectSafety(); + dbgprintf(TEXT("IObjectSafety::SetInterfaceSafetyOptions(%ls, %08X, %08X)"), UUIDToString(riid).c_str(), dwOptionSetMask, dwEnabledOptions); + HRESULT hr = pIObjectSafety->SetInterfaceSafetyOptions(riid, dwOptionSetMask, dwEnabledOptions); + dbgprintf(TEXT("IObjectSafety::SetInterfaceSafetyOptions -> %08X"), hr); + return hr; + } + + /* IOleControl */ + private: + std::basic_string ControlInfoToString(const CONTROLINFO& ci) + { + std::basic_ostringstream o; + + int firstdone = 0; + + o << "{ "; + + if(ci.cAccel && ci.hAccel) + { + LPACCEL pAccel = static_cast(GlobalLock(ci.hAccel)); + + if(pAccel) + { + for(USHORT i = 0; i < ci.cAccel; ++ i) + { + if(i) + o << ", "; + + if(pAccel[i].fVirt & FSHIFT) + o << "SHIFT + "; + + if(pAccel[i].fVirt & FCONTROL) + o << "CONTROL + "; + + if(pAccel[i].fVirt & FALT) + o << "ALT + "; + + if(pAccel[i].fVirt & FVIRTKEY) + o << ""; + else + o << wchar_t(pAccel[i].key); + + o << " " << std::hex << pAccel[i].cmd << std::dec; + } + + firstdone = ci.cAccel; + + GlobalUnlock(pAccel); + } + } + + if(ci.dwFlags & CTRLINFO_EATS_RETURN) + { + if(!firstdone) + { + o << ", "; + ++ firstdone; + } + + o << "ENTER"; + } + + if(ci.dwFlags & CTRLINFO_EATS_ESCAPE) + { + if(!firstdone) + { + o << ", "; + ++ firstdone; + } + + o << "ESC"; + } + + if(firstdone) + o << " "; + + o << "}"; + + return o.str(); + } + + std::basic_string MnemonicToString(const MSG& msg) + { + std::basic_ostringstream o; + + o << "["; + + switch(msg.message) + { + case WM_SYSKEYDOWN: + o << "ALT + "; + + case WM_KEYDOWN: + TCHAR sz[1024]; + GetKeyNameText(LONG(msg.lParam), sz, ARRAYSIZE(sz)); + o << sz; + + default: + o << ""; + } + + o << "]"; + + return o.str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE GetControlInfo(CONTROLINFO * pCI) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::GetControlInfo(%p)"), pCI); + HRESULT hr = pIOleControl->GetControlInfo(pCI); + dbgprintf(TEXT("IOleControl::GetControlInfo -> %08X, %s"), hr, ControlInfoToString(*pCI).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnMnemonic(MSG * pMsg) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::OnMnemonic(%s)"), MnemonicToString(*pMsg).c_str()); + HRESULT hr = pIOleControl->OnMnemonic(pMsg); + dbgprintf(TEXT("IOleControl::OnMnemonic -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnAmbientPropertyChange(DISPID dispID) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::OnAmbientPropertyChange(%08X)"), dispID); + HRESULT hr = pIOleControl->OnAmbientPropertyChange(dispID); + dbgprintf(TEXT("IOleControl::OnAmbientPropertyChange -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE FreezeEvents(BOOL bFreeze) + { + IOleControl * pIOleControl = getIOleControl(); + dbgprintf(TEXT("IOleControl::FreezeEvents(%s)"), BooleanToString(bFreeze)); + HRESULT hr = pIOleControl->FreezeEvents(bFreeze); + dbgprintf(TEXT("IOleControl::FreezeEvents -> %08X"), hr); + return hr; + } + + /* IOleInPlaceActiveObject */ + public: + virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG lpmsg) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::TranslateAccelerator(%s)"), MnemonicToString(*lpmsg).c_str()); + HRESULT hr = pIOleInPlaceActiveObject->TranslateAccelerator(lpmsg); + dbgprintf(TEXT("IOleInPlaceActiveObject::TranslateAccelerator -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(BOOL fActivate) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnFrameWindowActivate(%s)"), BooleanToString(fActivate)); + HRESULT hr = pIOleInPlaceActiveObject->OnFrameWindowActivate(fActivate); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnFrameWindowActivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(BOOL fActivate) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnDocWindowActivate(%s)"), BooleanToString(fActivate)); + HRESULT hr = pIOleInPlaceActiveObject->OnDocWindowActivate(fActivate); + dbgprintf(TEXT("IOleInPlaceActiveObject::OnDocWindowActivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow * pUIWindow, BOOL fFrameWindow) + { + // TODO: hook pUIWindow + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::ResizeBorder(%s)"), RectToString(*prcBorder).c_str(), pUIWindow, BooleanToString(fFrameWindow)); + HRESULT hr = pIOleInPlaceActiveObject->ResizeBorder(prcBorder, pUIWindow, fFrameWindow); + dbgprintf(TEXT("IOleInPlaceActiveObject::ResizeBorder -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL fEnable) + { + IOleInPlaceActiveObject * pIOleInPlaceActiveObject = getIOleInPlaceActiveObject(); + dbgprintf(TEXT("IOleInPlaceActiveObject::EnableModeless(%s)"), BooleanToString(fEnable)); + HRESULT hr = pIOleInPlaceActiveObject->EnableModeless(fEnable); + dbgprintf(TEXT("IOleInPlaceActiveObject::EnableModeless -> %08X"), hr); + return hr; + } + + /* IOleInPlaceObject */ + public: + virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate(void) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::InPlaceDeactivate()")); + HRESULT hr = pIOleInPlaceObject->InPlaceDeactivate(); + dbgprintf(TEXT("IOleInPlaceObject::InPlaceDeactivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE UIDeactivate(void) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::UIDeactivate()")); + HRESULT hr = pIOleInPlaceObject->UIDeactivate(); + dbgprintf(TEXT("IOleInPlaceObject::UIDeactivate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::SetObjectRects(%s, %s)"), RectToString(*lprcPosRect).c_str(), RectToString(*lprcClipRect).c_str()); + HRESULT hr = pIOleInPlaceObject->SetObjectRects(lprcPosRect, lprcClipRect); + dbgprintf(TEXT("IOleInPlaceObject::SetObjectRects -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo(void) + { + IOleInPlaceObject * pIOleInPlaceObject = getIOleInPlaceObject(); + dbgprintf(TEXT("IOleInPlaceObject::ReactivateAndUndo()")); + HRESULT hr = pIOleInPlaceObject->ReactivateAndUndo(); + dbgprintf(TEXT("IOleInPlaceObject::ReactivateAndUndo -> %08X"), hr); + return hr; + } + + /* IOleWindow */ + public: + virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND * phwnd) + { + IOleWindow * pIOleWindow = getIOleWindow(); + dbgprintf(TEXT("IOleWindow::GetWindow(%p)"), phwnd); + HRESULT hr = pIOleWindow->GetWindow(phwnd); + dbgprintf(TEXT("IOleWindow::GetWindow -> %08X, hwnd = %X"), hr, *phwnd); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode) + { + IOleWindow * pIOleWindow = getIOleWindow(); + dbgprintf(TEXT("IOleWindow::ContextSensitiveHelp(%s)"), BooleanToString(fEnterMode)); + HRESULT hr = pIOleWindow->ContextSensitiveHelp(fEnterMode); + dbgprintf(TEXT("IOleWindow::ContextSensitiveHelp -> %08X"), hr); + return hr; + } + + /* IOleObject */ + public: + virtual HRESULT STDMETHODCALLTYPE SetClientSite(IOleClientSite * pClientSite) + { + // TODO: hook pClientSite + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetClientSite(%p)"), pClientSite); + HRESULT hr = pIOleObject->SetClientSite(pClientSite); + dbgprintf(TEXT("IOleObject::SetClientSite -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetClientSite(IOleClientSite ** ppClientSite) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetClientSite(%s)"), ppClientSite); + HRESULT hr = pIOleObject->GetClientSite(ppClientSite); + dbgprintf(TEXT("IOleObject::GetClientSite -> %08X"), hr, ppClientSite); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetHostNames(%ls, %ls)"), szContainerApp, szContainerObj); + HRESULT hr = pIOleObject->SetHostNames(szContainerApp, szContainerObj); + dbgprintf(TEXT("IOleObject::SetHostNames -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Close(DWORD dwSaveOption) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Close(%lu)"), dwSaveOption); + HRESULT hr = pIOleObject->Close(dwSaveOption); + dbgprintf(TEXT("IOleObject::Close -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetMoniker(DWORD dwWhichMoniker, IMoniker * pmk) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetMoniker(%lu, %p)"), dwWhichMoniker, MonikerToString(pmk).c_str()); + HRESULT hr = pIOleObject->SetMoniker(dwWhichMoniker, pmk); + dbgprintf(TEXT("IOleObject::SetMoniker -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetMoniker(%lu, %lu, %p)"), dwAssign, dwWhichMoniker, ppmk); + HRESULT hr = pIOleObject->GetMoniker(dwAssign, dwWhichMoniker, ppmk); + dbgprintf(TEXT("IOleObject::GetMoniker -> %08X, pmk = %s"), hr, SUCCEEDED(hr) ? MonikerToString(*ppmk).c_str() : TEXT("")); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE InitFromData(IDataObject * pDataObject, BOOL fCreation, DWORD dwReserved) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::InitFromData(%p, %s, %lu)"), pDataObject, BooleanToString(fCreation), dwReserved); + HRESULT hr = pIOleObject->InitFromData(pDataObject, fCreation, dwReserved); + dbgprintf(TEXT("IOleObject::InitFromData -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetClipboardData(DWORD dwReserved, IDataObject ** ppDataObject) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetClipboardData(%lu, %p)"), dwReserved, ppDataObject); + HRESULT hr = pIOleObject->GetClipboardData(dwReserved, ppDataObject); + dbgprintf(TEXT("IOleObject::GetClipboardData -> %08X, pDataObject = %p"), hr, *ppDataObject); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite * pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::DoVerb(%ld, %p, %p, %ld, %p, %s)"), iVerb, lpmsg, pActiveSite, lindex, hwndParent, RectToString(*lprcPosRect).c_str()); + HRESULT hr = pIOleObject->DoVerb(iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect); + dbgprintf(TEXT("IOleObject::DoVerb -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumVerbs(IEnumOLEVERB ** ppEnumOleVerb) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::EnumVerbs(%p)"), ppEnumOleVerb); + HRESULT hr = pIOleObject->EnumVerbs(ppEnumOleVerb); + dbgprintf(TEXT("IOleObject::EnumVerbs -> %08X, pEnumOleVerb = %p"), hr, *ppEnumOleVerb); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Update(void) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Update(%s)")); + HRESULT hr = pIOleObject->Update(); + dbgprintf(TEXT("IOleObject::Update -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IsUpToDate(void) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::IsUpToDate(%s)")); + HRESULT hr = pIOleObject->IsUpToDate(); + dbgprintf(TEXT("IOleObject::IsUpToDate -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetUserClassID(CLSID * pClsid) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetUserClassID(%p)"), pClsid); + HRESULT hr = pIOleObject->GetUserClassID(pClsid); + dbgprintf(TEXT("IOleObject::GetUserClassID -> %08X, Clsid = %ls"), hr, UUIDToString(*pClsid).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetUserType(DWORD dwFormOfType, LPOLESTR * pszUserType) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetUserType(%lu, %p)"), dwFormOfType, pszUserType); + HRESULT hr = pIOleObject->GetUserType(dwFormOfType, pszUserType); + dbgprintf(TEXT("IOleObject::GetUserType -> %08X, szUserType = %s"), hr, *pszUserType); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetExtent(%lu, %s)"), dwDrawAspect, SizeToString(*psizel).c_str()); + HRESULT hr = pIOleObject->SetExtent(dwDrawAspect, psizel); + dbgprintf(TEXT("IOleObject::SetExtent -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetExtent(%lu, %p)"), dwDrawAspect, psizel); + HRESULT hr = pIOleObject->GetExtent(dwDrawAspect, psizel); + dbgprintf(TEXT("IOleObject::GetExtent -> %08X"), hr, SizeToString(*psizel).c_str()); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Advise(IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + // TODO: hook pAdvSink + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Advise(%p, %p)"), pAdvSink, pdwConnection); + HRESULT hr = pIOleObject->Advise(pAdvSink, pdwConnection); + dbgprintf(TEXT("IOleObject::Advise -> %08X, dwConnection = %lu"), hr, *pdwConnection); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Unadvise(DWORD dwConnection) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::Unadvise(%lu)"), dwConnection); + HRESULT hr = pIOleObject->Unadvise(dwConnection); + dbgprintf(TEXT("IOleObject::Unadvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE EnumAdvise(IEnumSTATDATA ** ppenumAdvise) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::EnumAdvise(%p)"), ppenumAdvise); + HRESULT hr = pIOleObject->EnumAdvise(ppenumAdvise); + dbgprintf(TEXT("IOleObject::EnumAdvise -> %08X, penumAdvise = %p"), hr, *ppenumAdvise); + // TODO: hook + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(DWORD dwAspect, DWORD * pdwStatus) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::GetMiscStatus(%lu, %p)"), dwAspect, pdwStatus); + HRESULT hr = pIOleObject->GetMiscStatus(dwAspect, pdwStatus); + dbgprintf(TEXT("IOleObject::GetMiscStatus -> %08X, dwStatus = %08X"), hr, *pdwStatus); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SetColorScheme(LOGPALETTE * pLogpal) + { + IOleObject * pIOleObject = getIOleObject(); + dbgprintf(TEXT("IOleObject::SetColorScheme(%p)"), pLogpal); + HRESULT hr = pIOleObject->SetColorScheme(pLogpal); + dbgprintf(TEXT("IOleObject::SetColorScheme -> %08X"), hr); + return hr; + } + + /* IPersist */ + public: + virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID * pClassID) + { + IPersist * pIPersist = getIPersist(); + dbgprintf(TEXT("IPersist::GetClassID(%p)"), pClassID); + HRESULT hr = pIPersist->GetClassID(pClassID); + dbgprintf(TEXT("IPersist::GetClassID -> %08X, ClassId = %ls"), hr, UUIDToString(*pClassID).c_str()); + return hr; + } + + /* IPersistPropertyBag */ + public: + virtual HRESULT STDMETHODCALLTYPE InitNew(void) + { + IPersistPropertyBag * pIPersistPropertyBag = getIPersistPropertyBag(); + dbgprintf(TEXT("IPersistPropertyBag::InitNew()")); + HRESULT hr = pIPersistPropertyBag->InitNew(); + dbgprintf(TEXT("IPersistPropertyBag::InitNew -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Load(IPropertyBag * pPropBag, IErrorLog * pErrorLog) + { + // TODO: hook pPropBag, pErrorLog + IPersistPropertyBag * pIPersistPropertyBag = getIPersistPropertyBag(); + dbgprintf(TEXT("IPersistPropertyBag::Load(%p, %p)"), pPropBag, pErrorLog); + HRESULT hr = pIPersistPropertyBag->Load(pPropBag, pErrorLog); + dbgprintf(TEXT("IPersistPropertyBag::Load -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE Save(IPropertyBag * pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties) + { + // TODO: hook pPropBag + IPersistPropertyBag * pIPersistPropertyBag = getIPersistPropertyBag(); + dbgprintf(TEXT("IPersistPropertyBag::Save(%p, %s, %s)"), pPropBag, BooleanToString(fClearDirty), BooleanToString(fSaveAllProperties)); + HRESULT hr = pIPersistPropertyBag->Save(pPropBag, fClearDirty, fSaveAllProperties); + dbgprintf(TEXT("IPersistPropertyBag::Save -> %08X"), hr); + return hr; + } + + /* IPersistStorage */ + public: + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::IsDirty(void) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::IsDirty()")); + HRESULT hr = pIPersistStorage->IsDirty(); + dbgprintf(TEXT("IPersistStorage::IsDirty -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::InitNew(IStorage * pStg) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::InitNew(%p)"), pStg); + HRESULT hr = pIPersistStorage->InitNew(pStg); + dbgprintf(TEXT("IPersistStorage::InitNew -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::Load(IStorage * pStg) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::Load(%p)"), pStg); + HRESULT hr = pIPersistStorage->Load(pStg); + dbgprintf(TEXT("IPersistStorage::Load -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStorage::Save(IStorage * pStgSave, BOOL fSameAsLoad) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::Save(%p, %s)"), pStgSave, BooleanToString(fSameAsLoad)); + HRESULT hr = pIPersistStorage->Save(pStgSave, fSameAsLoad); + dbgprintf(TEXT("IPersistStorage::Save -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE SaveCompleted(IStorage * pStgNew) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::SaveCompleted(%p)"), pStgNew); + HRESULT hr = pIPersistStorage->SaveCompleted(pStgNew); + dbgprintf(TEXT("IPersistStorage::SaveCompleted -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE HandsOffStorage(void) + { + IPersistStorage * pIPersistStorage = getIPersistStorage(); + dbgprintf(TEXT("IPersistStorage::HandsOffStorage()")); + HRESULT hr = pIPersistStorage->HandsOffStorage(); + dbgprintf(TEXT("IPersistStorage::HandsOffStorage -> %08X"), hr); + return hr; + } + + /* IPersistStreamInit */ + public: + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::IsDirty(void) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::IsDirty()")); + HRESULT hr = pIPersistStreamInit->IsDirty(); + dbgprintf(TEXT("IPersistStreamInit::IsDirty -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::Load(LPSTREAM pStm) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::Load(%p)"), pStm); + HRESULT hr = pIPersistStreamInit->Load(pStm); + dbgprintf(TEXT("IPersistStreamInit::Load -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::Save(LPSTREAM pStm, BOOL fClearDirty) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::Save(%p, %s)"), pStm, BooleanToString(fClearDirty)); + HRESULT hr = pIPersistStreamInit->Save(pStm, fClearDirty); + dbgprintf(TEXT("IPersistStreamInit::Save -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::GetSizeMax(ULARGE_INTEGER * pCbSize) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::GetSizeMax(%p)"), pCbSize); + HRESULT hr = pIPersistStreamInit->GetSizeMax(pCbSize); + dbgprintf(TEXT("IPersistStreamInit::GetSizeMax -> %08X, CbSize = %llu"), hr, pCbSize->QuadPart); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IPersistStreamInit::InitNew(void) + { + IPersistStreamInit * pIPersistStreamInit = getIPersistStreamInit(); + dbgprintf(TEXT("IPersistStreamInit::InitNew()")); + HRESULT hr = pIPersistStreamInit->InitNew(); + dbgprintf(TEXT("IPersistStreamInit::InitNew -> %08X"), hr); + return hr; + } + + /* IProvideClassInfo */ + public: + virtual HRESULT STDMETHODCALLTYPE GetClassInfo(ITypeInfo ** ppTI) + { + IProvideClassInfo * pIProvideClassInfo = getIProvideClassInfo(); + dbgprintf(TEXT("IProvideClassInfo::GetClassInfo(%p)"), ppTI); + HRESULT hr = pIProvideClassInfo->GetClassInfo(ppTI); + dbgprintf(TEXT("IProvideClassInfo::GetClassInfo -> %08X, pTI = %p"), hr, *ppTI); + return hr; + } + + /* IProvideClassInfo2 */ + public: + virtual HRESULT STDMETHODCALLTYPE IProvideClassInfo2::GetGUID(DWORD dwGuidKind, GUID * pGUID) + { + IProvideClassInfo2 * pIProvideClassInfo2 = getIProvideClassInfo2(); + dbgprintf(TEXT("IProvideClassInfo2::GetGUID(%lu, %p)"), dwGuidKind, pGUID); + HRESULT hr = pIProvideClassInfo2->GetGUID(dwGuidKind, pGUID); + dbgprintf(TEXT("IProvideClassInfo2::GetGUID -> %08X, GUID = %ls"), hr, UUIDToString(*pGUID).c_str()); + return hr; + } + + /* IQuickActivate */ + public: + virtual HRESULT STDMETHODCALLTYPE IQuickActivate::QuickActivate(QACONTAINER * pQaContainer, QACONTROL * pQaControl) // TODO + { + IQuickActivate * pIQuickActivate = getIQuickActivate(); + + std::basic_stringstream o1; + + o1 << "{ "; + o1 << "pClientSite = " << (void *)pQaContainer->pClientSite << ", "; + o1 << "pAdviseSink = " << (void *)pQaContainer->pAdviseSink << ", "; + o1 << "pPropertyNotifySink = " << (void *)pQaContainer->pPropertyNotifySink << ", "; + o1 << "pUnkEventSink = " << (void *)pQaContainer->pUnkEventSink << ", "; + + o1 << std::hex; + o1 << "dwAmbientFlags = " << pQaContainer->dwAmbientFlags << ", "; + o1 << "colorFore = " << pQaContainer->colorFore << ", "; + o1 << "colorBack = " << pQaContainer->colorBack << ", "; + o1 << std::dec; + + o1 << "pFont = " << (void *)pQaContainer->pFont << ", "; + o1 << "pUndoMgr = " << (void *)pQaContainer->pUndoMgr << ", "; + + o1 << std::hex; + o1 << "dwAppearance = " << pQaContainer->dwAppearance << ", "; + o1 << "lcid = " << pQaContainer->lcid << ", "; + o1 << std::dec; + + o1 << "hpal = " << (void *)pQaContainer->hpal << ", "; + o1 << "pBindHost = " << (void *)pQaContainer->pBindHost << ", "; + o1 << "pOleControlSite = " << (void *)pQaContainer->pOleControlSite << ", "; + o1 << "pServiceProvider = " << (void *)pQaContainer->pServiceProvider << ", "; + o1 << "}"; + + dbgprintf(TEXT("IQuickActivate::QuickActivate(%s, %p)"), o1.str().c_str(), pQaControl); + + HRESULT hr = pIQuickActivate->QuickActivate(pQaContainer, pQaControl); + + std::basic_stringstream o2; + + o2 << "{ "; + o2 << std::hex; + o2 << "dwMiscStatus = " << pQaControl->dwMiscStatus << ", "; + o2 << "dwViewStatus = " << pQaControl->dwViewStatus << ", "; + o2 << "dwEventCookie = " << pQaControl->dwEventCookie << ", "; + o2 << "dwPropNotifyCookie = " << pQaControl->dwPropNotifyCookie << ", "; + o2 << "dwPointerActivationPolicy = " << pQaControl->dwPointerActivationPolicy << ", "; + o2 << std::dec; + o2 << "}"; + + dbgprintf(TEXT("IQuickActivate::QuickActivate -> %08X, QaControl = %s"), hr, o2.str().c_str()); + + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IQuickActivate::SetContentExtent(LPSIZEL pSizel) + { + IQuickActivate * pIQuickActivate = getIQuickActivate(); + dbgprintf(TEXT("IQuickActivate::SetContentExtent(%s)"), SizeToString(*pSizel).c_str()); + HRESULT hr = pIQuickActivate->SetContentExtent(pSizel); + dbgprintf(TEXT("IQuickActivate::SetContentExtent -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IQuickActivate::GetContentExtent(LPSIZEL pSizel) + { + IQuickActivate * pIQuickActivate = getIQuickActivate(); + dbgprintf(TEXT("IQuickActivate::GetContentExtent(%p)"), pSizel); + HRESULT hr = pIQuickActivate->GetContentExtent(pSizel); + dbgprintf(TEXT("IQuickActivate::GetContentExtent -> %08X, Sizel = %s"), hr, SizeToString(*pSizel).c_str()); + return hr; + } + + /* ISpecifyPropertyPages */ + private: + std::basic_string CauuidToString(const CAUUID& cauuid) + { + std::basic_ostringstream o; + + o << "{"; + + for(ULONG i = 0; i < cauuid.cElems; ++ i) + { + if(i) + o << ", "; + else + o << " "; + + o << UUIDToString(cauuid.pElems[i]); + } + + o << " }"; + + return o.str(); + } + + public: + virtual HRESULT STDMETHODCALLTYPE ISpecifyPropertyPages::GetPages(CAUUID * pPages) + { + ISpecifyPropertyPages * pISpecifyPropertyPages = getISpecifyPropertyPages(); + dbgprintf(TEXT("ISpecifyPropertyPages::GetPages(%p)"), pPages); + HRESULT hr = pISpecifyPropertyPages->GetPages(pPages); + dbgprintf(TEXT("ISpecifyPropertyPages::GetPages -> %08X, Pages = %s"), hr, CauuidToString(*pPages).c_str()); + return hr; + } + + /* IViewObject */ + public: + virtual HRESULT STDMETHODCALLTYPE IViewObject::Draw(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE * pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::Draw(%s, %ld, %p, %s, %p, %p, %s, %s, %p, %p)"), AspectToString(dwDrawAspect), lindex, pvAspect, TargetDeviceToString(*ptd).c_str(), hdcTargetDev, hdcDraw, RectToString(*lprcBounds).c_str(), RectToString(*lprcWBounds).c_str(), pfnContinue, dwContinue); + HRESULT hr = pIViewObject->Draw(dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue); + dbgprintf(TEXT("IViewObject::Draw -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::GetColorSet(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hicTargetDev, LOGPALETTE ** ppColorSet) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::GetColorSet(%s, %ld, %p, %s, %p, %p)"), AspectToString(dwDrawAspect), lindex, pvAspect, TargetDeviceToString(*ptd).c_str(), hicTargetDev, ppColorSet); + HRESULT hr = pIViewObject->GetColorSet(dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet); + dbgprintf(TEXT("IViewObject::GetColorSet -> %08X, pColorSet = %p"), hr, *ppColorSet); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::Freeze(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DWORD * pdwFreeze) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::Freeze(%s, %ld, %p, %p)"), AspectToString(dwDrawAspect), lindex, pvAspect, pdwFreeze); + HRESULT hr = pIViewObject->Freeze(dwDrawAspect, lindex, pvAspect, pdwFreeze); + dbgprintf(TEXT("IViewObject::Freeze -> %08X, dwFreeze = %08X"), hr, *pdwFreeze); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::Unfreeze(DWORD dwFreeze) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::Unfreeze(%08X)"), dwFreeze); + HRESULT hr = pIViewObject->Unfreeze(dwFreeze); + dbgprintf(TEXT("IViewObject::Unfreeze -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::SetAdvise(DWORD aspects, DWORD advf, IAdviseSink * pAdvSink) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::SetAdvise(%s, %08X, %p)"), AspectToString(aspects), advf, pAdvSink); + HRESULT hr = pIViewObject->SetAdvise(aspects, advf, pAdvSink); + dbgprintf(TEXT("IViewObject::SetAdvise -> %08X"), hr); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE IViewObject::GetAdvise(DWORD * pAspects, DWORD * pAdvf, IAdviseSink ** ppAdvSink) + { + IViewObject * pIViewObject = getIViewObject(); + dbgprintf(TEXT("IViewObject::GetAdvise(%p, %p, %p)"), pAspects, pAdvf, ppAdvSink); + HRESULT hr = pIViewObject->GetAdvise(pAspects, pAdvf, ppAdvSink); + dbgprintf(TEXT("IViewObject::GetAdvise -> %08X, aspects = %s, advf = %08X, pAdvSink %p"), hr, AspectToString(*pAspects), *pAdvf, *ppAdvSink); + return hr; + } + + /* IViewObject2 */ + public: + virtual HRESULT STDMETHODCALLTYPE IViewObject2::GetExtent(DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE * ptd, LPSIZEL lpsizel) + { + IViewObject2 * pIViewObject2 = getIViewObject2(); + dbgprintf(TEXT("IViewObject2::GetExtent(%s, %ld, %s, %p)"), AspectToString(dwDrawAspect), lindex, TargetDeviceToString(*ptd).c_str(), lpsizel); + HRESULT hr = pIViewObject2->GetExtent(dwDrawAspect, lindex, ptd, lpsizel); + dbgprintf(TEXT("IViewObject2::GetExtent -> %08X, sizel = %s"), hr, SizeToString(*lpsizel).c_str()); + return hr; + } + + /* IMsTscAx */ + public: + virtual HRESULT __stdcall put_Server(BSTR pServer) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_Server(%ls)"), pServer); + HRESULT hr = pIMsTscAx->put_Server(pServer); + dbgprintf(TEXT("IMsTscAx::put_Server -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_Server(BSTR * pServer) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Server()"), pServer); + HRESULT hr = pIMsTscAx->get_Server(pServer); + dbgprintf(TEXT("IMsTscAx::get_Server -> %08X, server = %ls"), hr, *pServer); + return hr; + } + + virtual HRESULT __stdcall put_Domain(BSTR pDomain) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_Domain(%ls)"), pDomain); + HRESULT hr = pIMsTscAx->put_Domain(pDomain); + dbgprintf(TEXT("IMsTscAx::put_Domain -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_Domain(BSTR * pDomain) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Domain(%p)"), pDomain); + HRESULT hr = pIMsTscAx->get_Domain(pDomain); + dbgprintf(TEXT("IMsTscAx::get_Domain -> %08X, Domain = %ls"), hr, *pDomain); + return hr; + } + + virtual HRESULT __stdcall put_UserName(BSTR pUserName) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_UserName(%ls)"), pUserName); + HRESULT hr = pIMsTscAx->put_UserName(pUserName); + dbgprintf(TEXT("IMsTscAx::put_UserName -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_UserName(BSTR * pUserName) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_UserName(%p)"), pUserName); + HRESULT hr = pIMsTscAx->get_UserName(pUserName); + dbgprintf(TEXT("IMsTscAx::get_UserName -> %08X, UserName = %ls"), hr, *pUserName); + return hr; + } + + virtual HRESULT __stdcall put_DisconnectedText(BSTR pDisconnectedText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_DisconnectedText(%ls)"), pDisconnectedText); + HRESULT hr = pIMsTscAx->put_DisconnectedText(pDisconnectedText); + dbgprintf(TEXT("IMsTscAx::put_DisconnectedText -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_DisconnectedText(BSTR * pDisconnectedText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_DisconnectedText(%p)"), pDisconnectedText); + HRESULT hr = pIMsTscAx->get_DisconnectedText(pDisconnectedText); + dbgprintf(TEXT("IMsTscAx::get_DisconnectedText -> %08X, DisconnectedText = %ls"), hr, *pDisconnectedText); + return hr; + } + + virtual HRESULT __stdcall put_ConnectingText(BSTR pConnectingText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_ConnectingText(%ls)"), pConnectingText); + HRESULT hr = pIMsTscAx->put_ConnectingText(pConnectingText); + dbgprintf(TEXT("IMsTscAx::put_ConnectingText -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_ConnectingText(BSTR * pConnectingText) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_ConnectingText(%p)"), pConnectingText); + HRESULT hr = pIMsTscAx->get_ConnectingText(pConnectingText); + dbgprintf(TEXT("IMsTscAx::get_ConnectingText -> %08X, ConnectingText = %ls"), hr, *pConnectingText); + return hr; + } + + virtual HRESULT __stdcall get_Connected(short * pIsConnected) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Connected(%p)"), pIsConnected); + HRESULT hr = pIMsTscAx->get_Connected(pIsConnected); + dbgprintf(TEXT("IMsTscAx::get_Connected -> %08X, IsConnected = %s"), hr, BooleanToString(*pIsConnected)); + return hr; + } + + virtual HRESULT __stdcall put_DesktopWidth(long pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_DesktopWidth(%ld)"), pVal); + HRESULT hr = pIMsTscAx->put_DesktopWidth(pVal); + dbgprintf(TEXT("IMsTscAx::put_DesktopWidth -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_DesktopWidth(long * pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_DesktopWidth(%p)"), pVal); + HRESULT hr = pIMsTscAx->get_DesktopWidth(pVal); + dbgprintf(TEXT("IMsTscAx::get_DesktopWidth -> %08X, Val = %lu"), hr, *pVal); + return hr; + } + + virtual HRESULT __stdcall put_DesktopHeight(long pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_DesktopHeight(%ld)"), pVal); + HRESULT hr = pIMsTscAx->put_DesktopHeight(pVal); + dbgprintf(TEXT("IMsTscAx::put_DesktopHeight -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_DesktopHeight(long * pVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_DesktopHeight(%p)"), pVal); + HRESULT hr = pIMsTscAx->get_DesktopHeight(pVal); + dbgprintf(TEXT("IMsTscAx::get_DesktopHeight -> %08X, Val = %lu"), hr, *pVal); + return hr; + } + + virtual HRESULT __stdcall put_StartConnected(long pfStartConnected) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_StartConnected(%s)"), BooleanToString(pfStartConnected)); + HRESULT hr = pIMsTscAx->put_StartConnected(pfStartConnected); + dbgprintf(TEXT("IMsTscAx::put_StartConnected -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_StartConnected(long * pfStartConnected) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_StartConnected(%p)"), pfStartConnected); + HRESULT hr = pIMsTscAx->get_StartConnected(pfStartConnected); + dbgprintf(TEXT("IMsTscAx::get_StartConnected -> %08X, fStartConnected = %s"), hr, BooleanToString(*pfStartConnected)); + return hr; + } + + virtual HRESULT __stdcall get_HorizontalScrollBarVisible(long * pfHScrollVisible) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_HorizontalScrollBarVisible(%p)"), pfHScrollVisible); + HRESULT hr = pIMsTscAx->get_HorizontalScrollBarVisible(pfHScrollVisible); + dbgprintf(TEXT("IMsTscAx::get_HorizontalScrollBarVisible -> %08X, fHScrollVisible = %s"), hr, BooleanToString(*pfHScrollVisible)); + return hr; + } + + virtual HRESULT __stdcall get_VerticalScrollBarVisible(long * pfVScrollVisible) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_VerticalScrollBarVisible(%p)"), pfVScrollVisible); + HRESULT hr = pIMsTscAx->get_VerticalScrollBarVisible(pfVScrollVisible); + dbgprintf(TEXT("IMsTscAx::get_VerticalScrollBarVisible -> %08X, fVScrollVisible"), hr, *pfVScrollVisible); + return hr; + } + + virtual HRESULT __stdcall put_FullScreenTitle(BSTR _arg1) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::put_FullScreenTitle(%ls)"), _arg1); + HRESULT hr = pIMsTscAx->put_FullScreenTitle(_arg1); + dbgprintf(TEXT("IMsTscAx::put_FullScreenTitle -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_CipherStrength(long * pCipherStrength) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_CipherStrength(%p)"), pCipherStrength); + HRESULT hr = pIMsTscAx->get_CipherStrength(pCipherStrength); + dbgprintf(TEXT("IMsTscAx::get_CipherStrength -> %08X, CipherStrength = %ld"), hr, *pCipherStrength); + return hr; + } + + virtual HRESULT __stdcall get_Version(BSTR * pVersion) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Version(%p)"), pVersion); + HRESULT hr = pIMsTscAx->get_Version(pVersion); + dbgprintf(TEXT("IMsTscAx::get_Version -> %08X, Version = %ls"), hr, *pVersion); + return hr; + } + + virtual HRESULT __stdcall get_SecuredSettingsEnabled(long * pSecuredSettingsEnabled) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettingsEnabled(%p)"), pSecuredSettingsEnabled); + HRESULT hr = pIMsTscAx->get_SecuredSettingsEnabled(pSecuredSettingsEnabled); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettingsEnabled -> %08X, SecuredSettingsEnabled = %s"), hr, BooleanToString(*pSecuredSettingsEnabled)); + return hr; + } + + virtual HRESULT __stdcall get_SecuredSettings(IMsTscSecuredSettings ** ppSecuredSettings) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettings(%p)"), ppSecuredSettings); + HRESULT hr = pIMsTscAx->get_SecuredSettings(ppSecuredSettings); + dbgprintf(TEXT("IMsTscAx::get_SecuredSettings -> %08X, pSecuredSettings = %p"), hr, *ppSecuredSettings); + return hr; + } + + virtual HRESULT __stdcall get_AdvancedSettings(IMsTscAdvancedSettings ** ppAdvSettings) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_AdvancedSettings(%p)"), ppAdvSettings); + HRESULT hr = pIMsTscAx->get_AdvancedSettings(ppAdvSettings); + dbgprintf(TEXT("IMsTscAx::get_AdvancedSettings -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + virtual HRESULT __stdcall get_Debugger(IMsTscDebug ** ppDebugger) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::get_Debugger(%p)"), ppDebugger); + HRESULT hr = pIMsTscAx->get_Debugger(ppDebugger); + dbgprintf(TEXT("IMsTscAx::get_Debugger -> %08X, pDebugger = %p"), hr, *ppDebugger); + return hr; + } + + virtual HRESULT __stdcall Connect() + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::Connect()")); + HRESULT hr = pIMsTscAx->Connect(); + dbgprintf(TEXT("IMsTscAx::Connect -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall Disconnect() + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::Disconnect()")); + HRESULT hr = pIMsTscAx->Disconnect(); + dbgprintf(TEXT("IMsTscAx::Disconnect -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall CreateVirtualChannels(BSTR newVal) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::CreateVirtualChannels(%ls)"), newVal); + HRESULT hr = pIMsTscAx->CreateVirtualChannels(newVal); + dbgprintf(TEXT("IMsTscAx::CreateVirtualChannels -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall SendOnVirtualChannel(BSTR chanName, BSTR ChanData) + { + IMsTscAx * pIMsTscAx = getIMsTscAx(); + dbgprintf(TEXT("IMsTscAx::SendOnVirtualChannel(%ls, %p)"), chanName, ChanData); + HRESULT hr = pIMsTscAx->SendOnVirtualChannel(chanName, ChanData); + dbgprintf(TEXT("IMsTscAx::SendOnVirtualChannel -> %08X"), hr); + return hr; + } + + /* IMsRdpClient */ + public: + virtual HRESULT __stdcall put_ColorDepth(long pcolorDepth) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::put_ColorDepth(%ld)"), pcolorDepth); + HRESULT hr = pIMsRdpClient->put_ColorDepth(pcolorDepth); + dbgprintf(TEXT("IMsRdpClient::put_ColorDepth -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_ColorDepth(long * pcolorDepth) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_ColorDepth(%p)"), pcolorDepth); + HRESULT hr = pIMsRdpClient->get_ColorDepth(pcolorDepth); + dbgprintf(TEXT("IMsRdpClient::get_ColorDepth -> %08X, colorDepth = %ld"), hr, *pcolorDepth); + return hr; + } + + virtual HRESULT __stdcall get_AdvancedSettings2(IMsRdpClientAdvancedSettings ** ppAdvSettings) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_AdvancedSettings2(%p)"), ppAdvSettings); + HRESULT hr = pIMsRdpClient->get_AdvancedSettings2(ppAdvSettings); + dbgprintf(TEXT("IMsRdpClient::get_AdvancedSettings2 -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + virtual HRESULT __stdcall get_SecuredSettings2(IMsRdpClientSecuredSettings ** ppSecuredSettings) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_SecuredSettings2(%p)"), ppSecuredSettings); + HRESULT hr = pIMsRdpClient->get_SecuredSettings2(ppSecuredSettings); + dbgprintf(TEXT("IMsRdpClient::get_SecuredSettings2 -> %08X, pSecuredSettings = %p"), hr, *ppSecuredSettings); + return hr; + } + + virtual HRESULT __stdcall get_ExtendedDisconnectReason(ExtendedDisconnectReasonCode * pExtendedDisconnectReason) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_ExtendedDisconnectReason(%p)"), pExtendedDisconnectReason); + HRESULT hr = pIMsRdpClient->get_ExtendedDisconnectReason(pExtendedDisconnectReason); + dbgprintf(TEXT("IMsRdpClient::get_ExtendedDisconnectReason -> %08X, ExtendedDisconnectReason = %u"), hr, *pExtendedDisconnectReason); + return hr; + } + + virtual HRESULT __stdcall put_FullScreen(VARIANT_BOOL pfFullScreen) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::put_FullScreen(%s)"), BooleanToString(pfFullScreen)); + HRESULT hr = pIMsRdpClient->put_FullScreen(pfFullScreen); + dbgprintf(TEXT("IMsRdpClient::put_FullScreen -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_FullScreen(VARIANT_BOOL * pfFullScreen) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::get_FullScreen(%p)"), pfFullScreen); + HRESULT hr = pIMsRdpClient->get_FullScreen(pfFullScreen); + dbgprintf(TEXT("IMsRdpClient::get_FullScreen -> %08X, pfFullScreen = %s"), hr, BooleanToString(*pfFullScreen)); + return hr; + } + + virtual HRESULT __stdcall SetVirtualChannelOptions(BSTR chanName, long chanOptions) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::SetVirtualChannelOptions(%ls, %08X)"), chanName, chanOptions); + HRESULT hr = pIMsRdpClient->SetVirtualChannelOptions(chanName, chanOptions); + dbgprintf(TEXT("IMsRdpClient::SetVirtualChannelOptions -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall GetVirtualChannelOptions(BSTR chanName, long * pChanOptions) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::GetVirtualChannelOptions(%ls, %p)"), chanName, pChanOptions); + HRESULT hr = pIMsRdpClient->GetVirtualChannelOptions(chanName, pChanOptions); + dbgprintf(TEXT("IMsRdpClient::GetVirtualChannelOptions -> %08X, ChanOptions = %08X"), hr, *pChanOptions); + return hr; + } + + virtual HRESULT __stdcall RequestClose(ControlCloseStatus * pCloseStatus) + { + IMsRdpClient * pIMsRdpClient = getIMsRdpClient(); + dbgprintf(TEXT("IMsRdpClient::RequestClose(%p)"), pCloseStatus); + HRESULT hr = pIMsRdpClient->RequestClose(pCloseStatus); + dbgprintf(TEXT("IMsRdpClient::RequestClose -> %08X, CloseStatus = %ld"), hr, *pCloseStatus); + return hr; + } + + /* IMsRdpClient2 */ + public: + virtual HRESULT __stdcall get_AdvancedSettings3(IMsRdpClientAdvancedSettings2 ** ppAdvSettings) + { + IMsRdpClient2 * pIMsRdpClient2 = getIMsRdpClient2(); + dbgprintf(TEXT("IMsRdpClient2::get_AdvancedSettings3(%p)"), ppAdvSettings); + HRESULT hr = pIMsRdpClient2->get_AdvancedSettings3(ppAdvSettings); + dbgprintf(TEXT("IMsRdpClient2::get_AdvancedSettings3 -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + virtual HRESULT __stdcall put_ConnectedStatusText(BSTR pConnectedStatusText) + { + IMsRdpClient2 * pIMsRdpClient2 = getIMsRdpClient2(); + dbgprintf(TEXT("IMsRdpClient2::put_ConnectedStatusText(%ls)"), pConnectedStatusText); + HRESULT hr = pIMsRdpClient2->put_ConnectedStatusText(pConnectedStatusText); + dbgprintf(TEXT("IMsRdpClient2::put_ConnectedStatusText -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_ConnectedStatusText(BSTR * pConnectedStatusText) + { + IMsRdpClient2 * pIMsRdpClient2 = getIMsRdpClient2(); + dbgprintf(TEXT("IMsRdpClient2::get_ConnectedStatusText(%p)"), pConnectedStatusText); + HRESULT hr = pIMsRdpClient2->get_ConnectedStatusText(pConnectedStatusText); + dbgprintf(TEXT("IMsRdpClient2::get_ConnectedStatusText -> %08X, ConnectedStatusText = %ls"), hr, *pConnectedStatusText); + return hr; + } + + /* IMsRdpClient3 */ + public: + virtual HRESULT __stdcall get_AdvancedSettings4(IMsRdpClientAdvancedSettings3 ** ppAdvSettings) + { + IMsRdpClient3 * pIMsRdpClient3 = getIMsRdpClient3(); + dbgprintf(TEXT("IMsRdpClient3::get_AdvancedSettings4(%p)"), ppAdvSettings); + HRESULT hr = pIMsRdpClient3->get_AdvancedSettings4(ppAdvSettings); + dbgprintf(TEXT("IMsRdpClient3::get_AdvancedSettings4 -> %08X, pAdvSettings = %p"), hr, *ppAdvSettings); + + if(SUCCEEDED(hr)) + *ppAdvSettings = new CAdvancedSettings(*ppAdvSettings); + + return hr; + } + + /* IMsRdpClient4 */ + public: + virtual HRESULT __stdcall get_AdvancedSettings5(IMsRdpClientAdvancedSettings4 ** ppAdvSettings5) + { + IMsRdpClient4 * pIMsRdpClient4 = getIMsRdpClient4(); + dbgprintf(TEXT("IMsRdpClient4::get_AdvancedSettings5(%p)"), ppAdvSettings5); + HRESULT hr = pIMsRdpClient4->get_AdvancedSettings5(ppAdvSettings5); + dbgprintf(TEXT("IMsRdpClient4::get_AdvancedSettings5 -> %08X, pAdvSettings5 = %p"), hr, *ppAdvSettings5); + + if(SUCCEEDED(hr)) + *ppAdvSettings5 = new CAdvancedSettings(*ppAdvSettings5); + + return hr; + } + + /* IMsTscNonScriptable */ + public: + virtual HRESULT __stdcall put_ClearTextPassword(BSTR _arg1) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_ClearTextPassword(%ls)"), _arg1); + HRESULT hr = pIMsTscNonScriptable->put_ClearTextPassword(_arg1); + dbgprintf(TEXT("IMsTscNonScriptable::put_ClearTextPassword -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall put_PortablePassword(BSTR pPortablePass) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortablePassword(%ls)"), pPortablePass); + HRESULT hr = pIMsTscNonScriptable->put_PortablePassword(pPortablePass); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortablePassword -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_PortablePassword(BSTR * pPortablePass) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortablePassword(%p)"), pPortablePass); + HRESULT hr = pIMsTscNonScriptable->get_PortablePassword(pPortablePass); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortablePassword -> %08X, PortablePass = %ls"), hr, *pPortablePass); + return hr; + } + + virtual HRESULT __stdcall put_PortableSalt(BSTR pPortableSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortableSalt(%ls)"), pPortableSalt); + HRESULT hr = pIMsTscNonScriptable->put_PortableSalt(pPortableSalt); + dbgprintf(TEXT("IMsTscNonScriptable::put_PortableSalt -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_PortableSalt(BSTR * pPortableSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortableSalt()"), pPortableSalt); + HRESULT hr = pIMsTscNonScriptable->get_PortableSalt(pPortableSalt); + dbgprintf(TEXT("IMsTscNonScriptable::get_PortableSalt -> %08X, PortableSalt = %ls"), hr, *pPortableSalt); + return hr; + } + + virtual HRESULT __stdcall put_BinaryPassword(BSTR pBinaryPassword) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinaryPassword(%p)"), pBinaryPassword); + HRESULT hr = pIMsTscNonScriptable->put_BinaryPassword(pBinaryPassword); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinaryPassword -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_BinaryPassword(BSTR * pBinaryPassword) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinaryPassword()"), pBinaryPassword); + HRESULT hr = pIMsTscNonScriptable->get_BinaryPassword(pBinaryPassword); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinaryPassword -> %08X, BinaryPassword = %ls"), hr, *pBinaryPassword); + return hr; + } + + virtual HRESULT __stdcall put_BinarySalt(BSTR pSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinarySalt(%p)"), pSalt); + HRESULT hr = pIMsTscNonScriptable->put_BinarySalt(pSalt); + dbgprintf(TEXT("IMsTscNonScriptable::put_BinarySalt -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall get_BinarySalt(BSTR * pSalt) + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinarySalt()"), pSalt); + HRESULT hr = pIMsTscNonScriptable->get_BinarySalt(pSalt); + dbgprintf(TEXT("IMsTscNonScriptable::get_BinarySalt -> %08X, pSalt = %ls"), hr, *pSalt); + return hr; + } + + virtual HRESULT __stdcall ResetPassword() + { + IMsTscNonScriptable * pIMsTscNonScriptable = getIMsTscNonScriptable(); + dbgprintf(TEXT("IMsTscNonScriptable::ResetPassword()")); + HRESULT hr = pIMsTscNonScriptable->ResetPassword(); + dbgprintf(TEXT("IMsTscNonScriptable::ResetPassword -> %08X"), hr); + return hr; + } + + + /* IMsRdpClientNonScriptable */ + public: + virtual HRESULT __stdcall IMsRdpClientNonScriptable::NotifyRedirectDeviceChange(UINT_PTR wParam, LONG_PTR lParam) + { + IMsRdpClientNonScriptable * pIMsRdpClientNonScriptable = getIMsRdpClientNonScriptable(); + dbgprintf(TEXT("IMsRdpClientNonScriptable::NotifyRedirectDeviceChange(%p, %p)"), wParam, lParam); + HRESULT hr = pIMsRdpClientNonScriptable->NotifyRedirectDeviceChange(wParam, lParam); + dbgprintf(TEXT("IMsRdpClientNonScriptable::NotifyRedirectDeviceChange -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall IMsRdpClientNonScriptable::SendKeys(long numKeys, VARIANT_BOOL * pbArrayKeyUp, long * plKeyData) // TBD + { + IMsRdpClientNonScriptable * pIMsRdpClientNonScriptable = getIMsRdpClientNonScriptable(); + dbgprintf(TEXT("IMsRdpClientNonScriptable::SendKeys(%ld, %p, %p)"), numKeys, pbArrayKeyUp, plKeyData); + HRESULT hr = pIMsRdpClientNonScriptable->SendKeys(numKeys, pbArrayKeyUp, plKeyData); + dbgprintf(TEXT("IMsRdpClientNonScriptable::SendKeys -> %08X"), hr); + return hr; + } + + /* IMsRdpClientNonScriptable2 */ + public: + virtual HRESULT __stdcall IMsRdpClientNonScriptable2::put_UIParentWindowHandle(wireHWND phwndUIParentWindowHandle) + { + IMsRdpClientNonScriptable2 * pIMsRdpClientNonScriptable2 = getIMsRdpClientNonScriptable2(); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::put_UIParentWindowHandle(%p)"), phwndUIParentWindowHandle); + HRESULT hr = pIMsRdpClientNonScriptable2->put_UIParentWindowHandle(phwndUIParentWindowHandle); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::put_UIParentWindowHandle -> %08X"), hr); + return hr; + } + + virtual HRESULT __stdcall IMsRdpClientNonScriptable2::get_UIParentWindowHandle(wireHWND * phwndUIParentWindowHandle) + { + IMsRdpClientNonScriptable2 * pIMsRdpClientNonScriptable2 = getIMsRdpClientNonScriptable2(); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::get_UIParentWindowHandle(%p)"), phwndUIParentWindowHandle); + HRESULT hr = pIMsRdpClientNonScriptable2->get_UIParentWindowHandle(phwndUIParentWindowHandle); + dbgprintf(TEXT("IMsRdpClientNonScriptable2::get_UIParentWindowHandle -> %08X, hwndUIParentWindowHandle = %p"), hr, *phwndUIParentWindowHandle); + return hr; + } + + /* + { + * p = m_; + dbgprintf(TEXT("::()"), ); + HRESULT hr = p->(); + dbgprintf(TEXT(":: -> %08X, "), hr, ); + return hr; + } + */ + }; + + class ClassFactory: public IClassFactory2 + { + private: + LONG m_refCount; + IUnknown * m_IUnknown; + IClassFactory * m_IClassFactory; + IClassFactory2 * m_IClassFactory2; + + IClassFactory * getIClassFactory() + { + if(m_IClassFactory) + return m_IClassFactory; + + if(m_IClassFactory2) + m_IClassFactory = m_IClassFactory2; + + if(m_IClassFactory) + { + m_IClassFactory->AddRef(); + return m_IClassFactory; + } + + m_IUnknown->QueryInterface(&m_IClassFactory); + return m_IClassFactory; + } + + IClassFactory2 * getIClassFactory2() + { + if(m_IClassFactory2) + return m_IClassFactory2; + + m_IUnknown->QueryInterface(&m_IClassFactory2); + return m_IClassFactory2; + } + + public: + ClassFactory(IUnknown * pUnknwn): + m_refCount(1), + m_IUnknown(pUnknwn), + m_IClassFactory(NULL), + m_IClassFactory2(NULL) + { + m_IUnknown->AddRef(); + } + + ~ClassFactory() + { + if(m_IUnknown) + m_IUnknown->Release(); + + if(m_IClassFactory) + m_IClassFactory->Release(); + + if(m_IClassFactory2) + m_IClassFactory2->Release(); + } + + /* IUnknown */ + public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject) + { + HRESULT hr; + IUnknown * pvObject = NULL; + + dbgprintf(TEXT("IUnknown::QueryInterface(%ls, %p)"), UUIDToString(riid).c_str(), ppvObject); + +#define QIBEGIN() \ + if(riid == IID_IUnknown) \ + { \ + hr = S_OK; \ + pvObject = (IUnknown *)(this); \ + } + +#define QI(I) \ + else if(riid == IID_ ## I) \ + { \ + if(m_ ## I) \ + { \ + m_ ## I->AddRef(); \ + hr = S_OK; \ + } \ + else \ + { \ + hr = m_IUnknown->QueryInterface(&m_ ## I); \ + } \ + \ + if(SUCCEEDED(hr)) \ + pvObject = static_cast(this); \ + } + +#define QIEND() \ + else \ + { \ + hr = E_NOINTERFACE; \ + pvObject = NULL; \ + } + + QIBEGIN() + QI(IClassFactory) + QI(IClassFactory2) + QIEND() + +#undef QIBEGIN +#undef QIEND +#undef QI + + if(SUCCEEDED(hr)) + { + assert(pvObject); + pvObject->AddRef(); + } + else + { + assert(pvObject == NULL); + } + + *ppvObject = pvObject; + + dbgprintf(TEXT("IUnknown::QueryInterface -> %08X, ppvObject = %p"), hr, *ppvObject); + return hr; + } + + virtual ULONG STDMETHODCALLTYPE AddRef(void) + { + return InterlockedIncrement(&m_refCount); + } + + virtual ULONG STDMETHODCALLTYPE Release(void) + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + /* IClassFactory */ + public: + virtual HRESULT STDMETHODCALLTYPE CreateInstance(IUnknown * pUnkOuter, REFIID riid, void ** ppvObject) + { + IClassFactory * pIClassFactory = getIClassFactory(); + dbgprintf(TEXT("IClassFactory::CreateInstance(%p, %ls, %p)"), pUnkOuter, UUIDToString(riid).c_str(), ppvObject); + HRESULT hr = pIClassFactory->CreateInstance(NULL, riid, ppvObject); + dbgprintf(TEXT("IClassFactory::CreateInstance -> %08X, pvObject = %p"), hr, *ppvObject); + return CoClass::CreateInstance((IUnknown *)*ppvObject, pUnkOuter, riid, ppvObject); + } + + virtual HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock) + { + IClassFactory * pIClassFactory = getIClassFactory(); + dbgprintf(TEXT("IClassFactory::LockServer(%s)"), BooleanToString(fLock)); + HRESULT hr = pIClassFactory->LockServer(fLock); + dbgprintf(TEXT("IClassFactory::LockServer -> %08X"), hr); + return hr; + } + + /* IClassFactory2 */ + public: + virtual HRESULT STDMETHODCALLTYPE GetLicInfo(LICINFO * pLicInfo) + { + IClassFactory2 * pIClassFactory2 = getIClassFactory2(); + dbgprintf(TEXT("IClassFactory2::GetLicInfo(%p)"), pLicInfo); + HRESULT hr = pIClassFactory2->GetLicInfo(pLicInfo); + dbgprintf(TEXT("IClassFactory2::GetLicInfo -> %08X, LicInfo = %p"), hr, pLicInfo); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE RequestLicKey(DWORD dwReserved, BSTR * pBstrKey) + { + IClassFactory2 * pIClassFactory2 = getIClassFactory2(); + dbgprintf(TEXT("IClassFactory2::RequestLicKey(%lu, %p)"), dwReserved, pBstrKey); + HRESULT hr = pIClassFactory2->RequestLicKey(dwReserved, pBstrKey); + dbgprintf(TEXT("IClassFactory2::RequestLicKey -> %08X, bstrKey = %ls"), hr, *pBstrKey); + return hr; + } + + virtual HRESULT STDMETHODCALLTYPE CreateInstanceLic(IUnknown * pUnkOuter, IUnknown * pUnkReserved, REFIID riid, BSTR bstrKey, PVOID * ppvObj) + { + IClassFactory2 * pIClassFactory2 = getIClassFactory2(); + dbgprintf(TEXT("IClassFactory2::CreateInstanceLic(%p, %p, %ls, %ls, %p)"), pUnkOuter, pUnkReserved, UUIDToString(riid).c_str(), bstrKey, ppvObj); + HRESULT hr = pIClassFactory2->CreateInstanceLic(NULL, pUnkReserved, riid, bstrKey, ppvObj); + dbgprintf(TEXT("IClassFactory2::CreateInstanceLic -> %08X, pvObj = %p"), hr, *ppvObj); + return CoClass::CreateInstance((IUnknown *)*ppvObj, pUnkOuter, riid, ppvObj); + } + }; + + STDAPI DllGetClassObject(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID * ppv) + { + init(); + + dbgprintf(TEXT("DllGetClassObject(%ls, %ls, %p)"), UUIDToString(rclsid).c_str(), UUIDToString(riid).c_str(), ppv); + HRESULT hr = pfnDllGetClassObject(rclsid, IID_IUnknown, ppv); + dbgprintf(TEXT("DllGetClassObject -> %08X, pv = %p"), hr, *ppv); + + IUnknown * pv = NULL; + + if(SUCCEEDED(hr)) + { + IUnknown * punk = (IUnknown *)*ppv; + + if(rclsid == CLSID_MsTscAx || rclsid == CLSID_MsRdpClient || rclsid == CLSID_MsRdpClient2 || rclsid == CLSID_MsRdpClient3 || rclsid == CLSID_MsRdpClient4) + pv = new ClassFactory(punk); + else + hr = CLASS_E_CLASSNOTAVAILABLE; + + punk->Release(); + } + + if(pv) + { + hr = pv->QueryInterface(riid, ppv); + + if(FAILED(hr)) + pv->Release(); + } + + return hr; + } + + STDAPI DllCanUnloadNow(void) + { + init(); + + dbgprintf(TEXT("DllCanUnloadNow()")); + HRESULT hr = pfnDllCanUnloadNow(); + dbgprintf(TEXT("DllCanUnloadNow -> %08X"), hr); + + return hr; + } + + STDAPI_(ULONG) DllGetTscCtlVer(void) + { + init(); + + dbgprintf(TEXT("DllGetTscCtlVer()")); + ULONG ul = pfnDllGetTscCtlVer(); + dbgprintf(TEXT("DllGetTscCtlVer-> %08X"), ul); + + return ul; + } +} + +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.def b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.def new file mode 100644 index 00000000000..37dfb4ee9dd --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.def @@ -0,0 +1,14 @@ +LIBRARY mstscax.dll + +EXPORTS + ; OLE inproc server + DllGetClassObject PRIVATE + DllCanUnloadNow PRIVATE + + ; OLE self-registration + ; TODO + + ; Private APIs + DllGetTscCtlVer + +; EOF diff --git a/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.sln b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.sln new file mode 100644 index 00000000000..2abaf3db1b1 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstscax", "mstscax.vcproj", "{933B2293-F12F-4B01-98B4-BF635B8B4F36}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Debug|Win32.ActiveCfg = Debug|Win32 + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Debug|Win32.Build.0 = Debug|Win32 + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Release|Win32.ActiveCfg = Release|Win32 + {933B2293-F12F-4B01-98B4-BF635B8B4F36}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.vcproj b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.vcproj new file mode 100644 index 00000000000..7e3def8edf7 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/mstscax/mstscax.vcproj @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reactos/base/applications/tsclient/porting-tools/mstscax/stdafx.cpp b/reactos/base/applications/tsclient/porting-tools/mstscax/stdafx.cpp new file mode 100644 index 00000000000..a27b824da78 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/mstscax/stdafx.cpp @@ -0,0 +1 @@ +#include "stdafx.h" diff --git a/reactos/base/applications/tsclient/porting-tools/mstscax/stdafx.h b/reactos/base/applications/tsclient/porting-tools/mstscax/stdafx.h new file mode 100644 index 00000000000..df5b57cc4d0 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/mstscax/stdafx.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include + +#include +#include +#include +#include + +#define WIN32_LEAN_AND_MEAN +#define STRICT +#define NOMINMAX + +#include +#include +#include + +#include + +#include + +#import "./rdesktop-core-tester.tlb" \ + exclude("LONG_PTR", "UINT_PTR", "wireHWND", "_RemotableHandle", "__MIDL_IWinTypes_0009") \ + named_guids \ + no_implementation \ + no_smart_pointers \ + raw_dispinterfaces \ + raw_interfaces_only \ + raw_native_types + +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/activex.cpp b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/activex.cpp new file mode 100644 index 00000000000..b4f5efad824 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/activex.cpp @@ -0,0 +1,6095 @@ +#include "stdafx.h" + +namespace MSTSCLib +{ +#include "mstsclib_h.h" +}; + +namespace MSTSCLib_Redist +{ +// extremely ew, but actually the cleanest way to import the alternate UUIDs +#include "mstsclib_redist_i.c" +}; + +#include "rdesktop/rdesktop.h" +#include "rdesktop/proto.h" + +namespace +{ +#ifdef _MSC_VER +extern "C" char __ImageBase; +#endif + +HMODULE GetCurrentModule() +{ + return reinterpret_cast(&__ImageBase); +} + +} + +namespace +{ + +LONG g_moduleRefCount = 0; + +void lockServer() +{ + InterlockedIncrement(&g_moduleRefCount); +} + +void unlockServer() +{ + InterlockedDecrement(&g_moduleRefCount); +} + +bool canUnloadServer() +{ + return g_moduleRefCount == 0; +} + +} + +namespace +{ + +void FreeLpsz(LPSTR lpsz) +{ + if(lpsz) + delete[] lpsz; +} + +LPSTR AllocLpsz(const CHAR * lpsz, size_t cb) +{ + LPSTR lpszNew = new CHAR[cb + 1]; + + if(lpszNew == NULL) + return NULL; + + CopyMemory(lpszNew, lpsz, cb); + lpszNew[cb] = 0; + + return lpszNew; +} + +LPSTR AllocLpsz(const WCHAR * lpwsz, int cchIn) +{ + int cch = WideCharToMultiByte(CP_ACP, 0, lpwsz, cchIn, NULL, 0, NULL, NULL); + + if(cch <= 0) + return NULL; + + LPSTR lpsz = new CHAR[cch]; + + if(lpsz == NULL) + return NULL; + + cch = WideCharToMultiByte(CP_ACP, 0, lpwsz, cchIn, lpsz, cch, NULL, NULL); + + if(cch <= 0) + { + FreeLpsz(lpsz); + return NULL; + } + + return lpsz; +} + +LPSTR BstrToLpsz(BSTR bstr) +{ + return AllocLpsz(bstr, SysStringLen(bstr)); +} + +BSTR LpszToBstr(LPSTR lpsz) +{ + int cch = MultiByteToWideChar(CP_ACP, 0, lpsz, -1, NULL, 0); + + if(cch <= 0) + return NULL; + + BSTR bstr = SysAllocStringLen(NULL, cch); + + if(bstr == NULL) + return NULL; + + cch = MultiByteToWideChar(CP_ACP, 0, lpsz, -1, bstr, cch); + + if(cch <= 0) + { + SysFreeString(bstr); + return NULL; + } + + return bstr; +} + +} + +namespace +{ + +template T aligndown(const T& X, const U& align) +{ + return X & ~(T(align) - 1); +} + +template T alignup(const T& X, const U& align) +{ + return aligndown(X + (align - 1), align); +} + +/* Convert between bitmap formats */ +uint8 * win32_convert_scanlines(int width, int height, int bitcount, int fromalign, int toalign, const uint8 * data, uint8 ** buffer) +{ + // TBD: profile & optimize the most common cases + assert(width > 0); + assert(height); + assert(bitcount && bitcount <= 32); + assert(fromalign <= toalign); + assert(data); + assert(buffer); + + bool flipped = height < 0; + + if(flipped) + height = - height; + + int bytesperrow = alignup(width * bitcount, 8) / 8; + int fromstride = alignup(bytesperrow, fromalign); + int tostride = alignup(bytesperrow, toalign); + assert(fromstride <= tostride); + + int datasize = tostride * height; + + uint8 * dibits = new uint8[datasize]; + + const uint8 * src = data; + uint8 * dest = dibits; + + const int pad = tostride - fromstride; + + assert(pad < 4); + __assume(pad < 4); + + if(flipped) + { + dest += (height - 1) * tostride; + tostride = - tostride; + } + + for(int i = 0; i < height; ++ i) + { + memcpy(dest, src, fromstride); + memset(dest + fromstride, 0, pad); + src += fromstride; + dest += tostride; + } + + *buffer = dibits; + return dibits; +} + +/* Creates bitmaps */ +HBITMAP win32_create_dib(LONG width, LONG height, WORD bitcount, const BYTE * data) +{ + struct b_ + { + BITMAPINFO bmi; + RGBQUAD colormap[256 - ARRAYSIZE(RTL_FIELD_TYPE(BITMAPINFO, bmiColors))]; + } + b; + + b.bmi.bmiHeader.biSize = sizeof(b.bmi.bmiHeader); + b.bmi.bmiHeader.biWidth = width; + b.bmi.bmiHeader.biHeight = height; + b.bmi.bmiHeader.biPlanes = 1; + b.bmi.bmiHeader.biBitCount = bitcount; + b.bmi.bmiHeader.biCompression = BI_RGB; + b.bmi.bmiHeader.biSizeImage = 0; + b.bmi.bmiHeader.biXPelsPerMeter = 0; + b.bmi.bmiHeader.biYPelsPerMeter = 0; + + if(bitcount > 8) + { + b.bmi.bmiHeader.biClrUsed = 0; + b.bmi.bmiHeader.biClrImportant = 0; + } + else + { + b.bmi.bmiHeader.biClrUsed = 2 << bitcount; + b.bmi.bmiHeader.biClrImportant = 2 << bitcount; + + // TODO: palette + } + + // FIXME: beyond ugly + HDC hdc = CreateCompatibleDC(NULL); + + if(hdc == NULL) + return NULL; + + HBITMAP hbm = CreateDIBitmap(hdc, &b.bmi.bmiHeader, CBM_INIT, data, &b.bmi, DIB_RGB_COLORS); + + if(hbm == NULL) + error("CreateDIBitmap %dx%dx%d failed\n", width, height, bitcount); + + DeleteDC(hdc); + return hbm; +} + +/* Creates brushes */ +HBRUSH win32_create_brush(BRUSH * brush, COLORREF fgcolour) +{ + if(brush == NULL) + return (HBRUSH)GetStockObject(NULL_BRUSH); + + switch(brush->style) + { + case BS_SOLID: + case BS_NULL: + case BS_HATCHED: + case BS_PATTERN: + case BS_PATTERN8X8: + break; + + default: + return NULL; + } + + switch(brush->style) + { + case BS_SOLID: + return CreateSolidBrush(fgcolour); + + case BS_HATCHED: + return CreateHatchBrush(brush->pattern[0], fgcolour); + + case BS_NULL: + return (HBRUSH)GetStockObject(NULL_BRUSH); + + case BS_PATTERN: + case BS_PATTERN8X8: + { + uint16 pattern[8]; + + for(size_t i = 0; i < 8; ++ i) + pattern[i] = brush->pattern[i]; + + HBITMAP hpattern = CreateBitmap(8, 8, 1, 1, pattern); + HBRUSH hbr = CreatePatternBrush(hpattern); + DeleteObject(hpattern); + return hbr; + } + + DEFAULT_UNREACHABLE; + } +} +}; + +/* + "sealed" can improve optimizations by asserting a class cannot be derived + from, optimizing out accesses to the v-table from inside the class +*/ +#if defined(_MSC_VER) && _MSC_VER >= 1400 +#define SEALED_ sealed +#else +#define SEALED_ +#endif + + +/* Class that implements the RDP client GUI */ +class RdpClientUI +{ +public: + // TODO: pass the client settings relevant to the GUI here + HRESULT Initialize(HWND hwndParent) + { + // TODO: create the various windows + // TODO: create display window thread + // TODO: create input thread + return E_FAIL; + } + +public: + static BOOL Startup() + { + WNDCLASSEX wcexUI = { sizeof(wcexUI) }; + WNDCLASSEX wcexConsole = { sizeof(wcexConsole) }; + WNDCLASSEX wcexDisplay = { sizeof(wcexDisplay) }; + WNDCLASSEX wcexInput = { sizeof(wcexInput) }; + + HBRUSH nullBrush = (HBRUSH)GetStockObject(HOLLOW_BRUSH); + + wcexUI.lpfnWndProc = NULL; // TODO + wcexUI.hInstance = GetCurrentModule(); + wcexUI.hCursor = LoadCursor(NULL, IDC_ARROW); + wcexUI.hbrBackground = nullBrush; + wcexUI.lpszClassName = TEXT("MissTosca_UI"); + + wcexConsole.style = CS_VREDRAW | CS_HREDRAW; + wcexConsole.lpfnWndProc = NULL; // TODO + wcexConsole.hInstance = GetCurrentModule(); + wcexConsole.hCursor = LoadCursor(NULL, IDC_ARROW); + wcexConsole.hbrBackground = nullBrush; + wcexConsole.lpszClassName = TEXT("MissTosca_Console"); + + wcexDisplay.style = CS_VREDRAW | CS_HREDRAW; + wcexDisplay.lpfnWndProc = NULL; // TODO + wcexDisplay.hInstance = GetCurrentModule(); + wcexDisplay.hCursor = LoadCursor(NULL, IDC_ARROW); + wcexDisplay.hbrBackground = nullBrush; + wcexDisplay.lpszClassName = TEXT("MissTosca_Display"); + + wcexInput.style = CS_VREDRAW | CS_HREDRAW; + wcexInput.lpfnWndProc = NULL; // TODO + wcexInput.hInstance = GetCurrentModule(); + wcexInput.hCursor = NULL; + wcexInput.hbrBackground = nullBrush; + wcexInput.lpszClassName = TEXT("MissTosca_Input"); + + return + RegisterClassEx(&wcexUI) && + RegisterClassEx(&wcexConsole) && + RegisterClassEx(&wcexDisplay) && + RegisterClassEx(&wcexInput); + } + + static void Shutdown() + { + // TODO + } + + /* + This is the main UI window. It's the direct child of the control + window, it fills its whole extent and it contains the scrollbars. + When activated, it will move keyboard focus to the input window + */ +private: + HWND m_uiWindow; + LONG m_scrollHPos; + LONG m_scrollVPos; + + LRESULT UIWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + // Keep the keyboard focus on the input window + case WM_ACTIVATE: + switch(LOWORD(wParam)) + { + case WA_INACTIVE: + break; + + case WA_ACTIVE: + case WA_CLICKACTIVE: + if(!HIWORD(wParam)) + SetFocus(m_inputWindow); + } + + return 0; + + // Resized: rearrange children windows, adjust scrollbars + case WM_SIZE: + { + if(IsIconic(m_uiWindow)) + break; + + RECT rcClient; + GetWindowRect(m_uiWindow, &rcClient); + + if(m_smartSizing) + { + // we are not supposed to maintain aspect ratio. Container has to do that + m_consoleX = 0; + m_consoleY = 0; + m_consoleWidth = rcClient.right; + m_consoleHeight = rcClient.bottom; + } + else + { + // center horizontally, no horizontal scrollbar + if(rcClient.right >= m_consoleWidth) + m_consoleX = (m_consoleWidth - rcClient.right) / 2; + + // center vertically, no vertical scrollbar + if(rcClient.bottom >= m_consoleHeight) + m_consoleY = (m_consoleHeight - rcClient.right) / 2; + } + + SCROLLINFO scroll = { sizeof(scroll), SIF_ALL, 0 }; + + // update the horizontal scrollbar + scroll.nMax = m_consoleWidth; + scroll.nPage = rcClient.right; + scroll.nPos = 0 - m_consoleX; + SetScrollInfo(m_uiWindow, SB_HORZ, &scroll, TRUE); + + // update the vertical scrollbar + scroll.nMax = m_consoleHeight; + scroll.nPage = rcClient.bottom; + scroll.nPos = 0 - m_consoleY; + SetScrollInfo(m_uiWindow, SB_VERT, &scroll, TRUE); + + // move/resize the console window + MoveWindow(m_consoleWindow, m_consoleX, m_consoleY, m_consoleWidth, m_consoleHeight, TRUE); + } + + return 0; + + case WM_HSCROLL: + { + SCROLLINFO scroll = { sizeof(scroll), SIF_TRACKPOS }; + GetScrollInfo(m_uiWindow, SB_HORZ, &scroll); + m_consoleX = - scroll.nTrackPos; + MoveWindow(m_consoleWindow, m_consoleX, m_consoleY, m_consoleWidth, m_consoleHeight, TRUE); + } + + return 0; + + case WM_VSCROLL: + { + SCROLLINFO scroll = { sizeof(scroll), SIF_TRACKPOS }; + GetScrollInfo(m_uiWindow, SB_VERT, &scroll); + m_consoleY = - scroll.nTrackPos; + MoveWindow(m_consoleWindow, m_consoleX, m_consoleY, m_consoleWidth, m_consoleHeight, TRUE); + } + + return 0; + + default: + break; + } + + return DefWindowProc(m_uiWindow, uMsg, wParam, lParam); + } + + /* + This is the full-screen title bar. It's displayed at the top of the + main UI window while in full-screen mode, and it contains two toolbars + with the pin, minimize, restore and close buttons + */ + HWND m_fullScreenBarWindow; + + /* + This is the console window. It has the same extent as the display on + the remote computer, or it fills the UI window in smart resizing mode, + and it contains the input and display windows + */ +private: + HWND m_consoleWindow; + LONG m_consoleX; + LONG m_consoleY; + LONG m_consoleWidth; + LONG m_consoleHeight; + bool m_smartSizing; + + LRESULT ConsoleWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_SIZE: + { + RECT rcClient; + GetClientRect(m_consoleWindow, &rcClient); + + MoveWindow(m_inputWindow, 0, 0, rcClient.right, rcClient.bottom, TRUE); + MoveWindow(m_displayWindow, 0, 0, rcClient.right, rcClient.bottom, TRUE); + } + + return 0; + + default: + break; + } + + return DefWindowProc(m_consoleWindow, uMsg, wParam, lParam); + } + + /* + This is the display window. It represents the virtual display of the + remote computer. It completely fills its parent, the console window, + and it runs in its own thread for performance reasons + */ +private: + HWND m_displayWindow; + LONG m_displayBufferWidth; + LONG m_displayBufferHeight; + HDC m_displayBuffer; + void * m_displayBufferRaw; + int m_displayBufferSave; + int m_displayBufferBitDepth; + int m_displayBufferByteDepth; + int m_displayBufferStride; + RECT m_displayBufferClip; + CRITICAL_SECTION m_displayBufferMutex; + + LRESULT DisplayWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_DESTROY: + PostQuitMessage(0); + return 0; + + case WM_PRINTCLIENT: + if(wParam == 0) + break; + + case WM_PAINT: + { + HDC hdc = (HDC)wParam; + + EnterCriticalSection(&m_displayBufferMutex); + + if(hdc) + { + RECT rc; + GetClientRect(m_displayWindow, &rc); + BitBlt(hdc, 0, 0, rc.right, rc.bottom, m_displayBuffer, 0, 0, SRCCOPY); + } + else + { + PAINTSTRUCT ps; + hdc = BeginPaint(m_displayWindow, &ps); + + if(!m_smartSizing) + { + BitBlt + ( + hdc, + ps.rcPaint.left, + ps.rcPaint.top, + ps.rcPaint.right - ps.rcPaint.left, + ps.rcPaint.bottom - ps.rcPaint.top, + m_displayBuffer, + ps.rcPaint.left, + ps.rcPaint.top, + SRCCOPY + ); + } + else + { + // bleh. There has to be a better way + SetStretchBltMode(hdc, HALFTONE); + + StretchBlt + ( + hdc, + 0, + 0, + m_consoleWidth, + m_consoleHeight, + m_displayBuffer, + 0, + 0, + m_displayBufferWidth, + m_displayBufferHeight, + SRCCOPY + ); + } + + EndPaint(m_displayWindow, &ps); + } + + LeaveCriticalSection(&m_displayBufferMutex); + } + + return 0; + + default: + break; + } + + return DefWindowProc(m_displayWindow, uMsg, wParam, lParam); + } + + /* Screen repainting */ + void Display_RepaintRect(const RECT * lprc) + { + if(m_smartSizing) + return Display_RepaintAll(); + + RECT rcDamage; + IntersectRect(&rcDamage, lprc, &m_displayBufferClip); + InvalidateRect(m_displayWindow, &rcDamage, FALSE); + } + + void Display_RepaintArea(int x, int y, int cx, int cy) + { + if(m_smartSizing) + return Display_RepaintAll(); + + RECT rcDamage; + rcDamage.left = x; + rcDamage.top = y; + rcDamage.right = x + cx; + rcDamage.bottom = y + cy; + Display_RepaintRect(&rcDamage); + } + + void Display_RepaintPolygon(POINT * point, int npoints, int linewidth) + { + if(m_smartSizing) + return Display_RepaintAll(); + + RECT rcDamage; + + rcDamage.left = MAXLONG; + rcDamage.top = MAXLONG; + rcDamage.right = 0; + rcDamage.bottom = 0; + + for(int i = 0; i < npoints; ++ i) + { + if(point[i].x < rcDamage.left) + rcDamage.left = point[i].x; + + if(point[i].y < rcDamage.top) + rcDamage.top = point[i].y; + + if(point[i].x > rcDamage.right) + rcDamage.right = point[i].x; + + if(point[i].y > rcDamage.bottom) + rcDamage.bottom = point[i].y; + } + + InflateRect(&rcDamage, linewidth, linewidth); + Display_RepaintRect(&rcDamage); + } + + void Display_RepaintAll() + { + InvalidateRgn(m_displayWindow, NULL, FALSE); + } + +public: + void Display_SetClip(int x, int y, int cx, int cy) + { + m_displayBufferClip.left = x; + m_displayBufferClip.top = y; + m_displayBufferClip.right = x + cx + 1; + m_displayBufferClip.bottom = y + cy + 1; + + HRGN hrgn = CreateRectRgnIndirect(&m_displayBufferClip); + SelectClipRgn(m_displayBuffer, hrgn); + DeleteObject(hrgn); + } + + void Display_ResetClip() + { + m_displayBufferClip.left = 0; + m_displayBufferClip.top = 0; + m_displayBufferClip.right = m_displayBufferWidth; + m_displayBufferClip.bottom = m_displayBufferHeight; + SelectClipRgn(m_displayBuffer, NULL); + } + + void Display_PaintBitmap(int x, int y, int cx, int cy, int width, int height, uint8 * data) + { + GdiFlush(); + + int fromstride = alignup(width * m_displayBufferByteDepth, 4); + int sizex = cx * m_displayBufferByteDepth; + + const uint8 * src = data; + + uint8 * dst = + (uint8 *)m_displayBufferRaw + + (m_displayBufferHeight - y - cy) * m_displayBufferStride + + x * m_displayBufferByteDepth; + + for(int i = 0; i < cy; ++ i) + { + memcpy(dst, src, sizex); + src += fromstride; + dst += m_displayBufferStride; + } + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_DestBlt(uint8 opcode, int x, int y, int cx, int cy) + { + int dcsave = SaveDC(m_displayBuffer); + SelectObject(m_displayBuffer, GetStockObject(BLACK_BRUSH)); + PatBlt(m_displayBuffer, x, y, cx, cy, MAKELONG(0, opcode)); + RestoreDC(m_displayBuffer, dcsave); + Display_RepaintArea(x, y, cx, cy); + } + + void Display_PatBlt(uint8 opcode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) + { + HBRUSH hbr = win32_create_brush(brush, fgcolour); + + int dcsave = SaveDC(m_displayBuffer); + + SetBkColor(m_displayBuffer, bgcolour); + SetTextColor(m_displayBuffer, fgcolour); + SetBrushOrgEx(m_displayBuffer, brush->xorigin, brush->yorigin, NULL); + SelectObject(m_displayBuffer, hbr); + + PatBlt(m_displayBuffer, x, y, cx, cy, MAKELONG(0, opcode)); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hbr); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_ScreenBlt(uint8 opcode, int x, int y, int cx, int cy, int srcx, int srcy) + { + BitBlt(m_displayBuffer, x, y, cx, cy, m_displayBuffer, srcx, srcy, MAKELONG(0, opcode)); + Display_RepaintArea(x, y, cx, cy); + } + + void Display_MemBlt(uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy) + { + HDC hdcSrc = CreateCompatibleDC(m_displayBuffer); + HGDIOBJ hOld = SelectObject(hdcSrc, src); + + BitBlt(m_displayBuffer, x, y, cx, cy, hdcSrc, srcx, srcy, MAKELONG(0, opcode)); + + SelectObject(hdcSrc, hOld); + DeleteDC(hdcSrc); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_TriBlt(uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy, BRUSH * brush, int bgcolour, int fgcolour) + { + // TODO + HDC hdcSrc = CreateCompatibleDC(m_displayBuffer); + HGDIOBJ hOld = SelectObject(hdcSrc, src); + + //SELECT_BRUSH(brush, bgcolour, fgcolour); + + BitBlt(m_displayBuffer, x, y, cx, cy, hdcSrc, srcx, srcy, MAKELONG(0, opcode)); + + //RESET_BRUSH(); + + SelectObject(hdcSrc, hOld); + DeleteDC(hdcSrc); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_Line(uint8 opcode, int startx, int starty, int endx, int endy, PEN * pen) + { + HPEN hpen = CreatePen(pen->style, pen->width, pen->colour); + + int dcsave = SaveDC(m_displayBuffer); + + SetROP2(m_displayBuffer, opcode); + SelectObject(m_displayBuffer, hpen); + MoveToEx(m_displayBuffer, startx, starty, NULL); + + LineTo(m_displayBuffer, endx, endy); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hpen); + + RECT rcDamage; + + if(startx < endx) + { + rcDamage.left = startx; + rcDamage.right = endx; + } + else + { + rcDamage.left = endx; + rcDamage.right = startx; + } + + if(starty < endy) + { + rcDamage.top = starty; + rcDamage.bottom = endy; + } + else + { + rcDamage.top = endy; + rcDamage.bottom = starty; + } + + InflateRect(&rcDamage, pen->width, pen->width); + Display_RepaintRect(&rcDamage); + } + + void Display_Rect(int x, int y, int cx, int cy, int colour) + { + HBRUSH hbr = CreateSolidBrush(colour); + + int dcsave = SaveDC(m_displayBuffer); + + SelectObject(m_displayBuffer, hbr); + SelectObject(m_displayBuffer, GetStockObject(NULL_PEN)); + + Rectangle(m_displayBuffer, x, y, x + cx + 1, y + cy + 1); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hbr); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_Polygon(uint8 opcode, uint8 fillmode, POINT * point, int npoints, BRUSH * brush, int bgcolour, int fgcolour) + { + HBRUSH hbr = win32_create_brush(brush, fgcolour); + + int dcsave = SaveDC(m_displayBuffer); + + SetBkColor(m_displayBuffer, bgcolour); + SetTextColor(m_displayBuffer, fgcolour); + SetPolyFillMode(m_displayBuffer, fillmode); + SelectObject(m_displayBuffer, hbr); + + Polygon(m_displayBuffer, point, npoints); + + RestoreDC(m_displayBuffer, dcsave); + + Display_RepaintPolygon(point, npoints, 0); + } + + void Display_Polyline(uint8 opcode, POINT * points, int npoints, PEN * pen) + { + POINT last = points[0]; + + for(int i = 1; i < npoints; ++ i) + { + points[i].x += last.x; + points[i].y += last.y; + last = points[i]; + } + + HPEN hpen = CreatePen(pen->style, pen->width, pen->colour); + + int dcsave = SaveDC(m_displayBuffer); + + SetROP2(m_displayBuffer, opcode); + SelectObject(m_displayBuffer, hpen); + + Polyline(m_displayBuffer, points, npoints); + + RestoreDC(m_displayBuffer, dcsave); + + DeleteObject(hpen); + + Display_RepaintPolygon(points, npoints, pen->width); + } + + void Display_Ellypse(uint8 opcode, uint8 fillmode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) + { + // TODO + + Display_RepaintArea(x, y, cx, cy); + } + + // TBD: optimize text drawing + void Display_DrawGlyph(int mixmode, int x, int y, int cx, int cy, HGLYPH glyph, int srcx, int srcy, int bgcolour, int fgcolour) + { + HBITMAP hbmGlyph = (HBITMAP)glyph; + HDC hdcGlyph = CreateCompatibleDC(m_displayBuffer); + HGDIOBJ hOld = SelectObject(hdcGlyph, hbmGlyph); + + int dcsave = SaveDC(m_displayBuffer); + + switch(mixmode) + { + case MIX_TRANSPARENT: + { + /* + ROP is DSPDxax: + - where the glyph (S) is white, D is set to the foreground color (P) + - where the glyph (S) is black, D is left untouched + + This paints a transparent glyph in the specified color + */ + HBRUSH hbr = CreateSolidBrush(fgcolour); + SelectObject(m_displayBuffer, hbr); + BitBlt(m_displayBuffer, x, y, cx, cy, hdcGlyph, srcx, srcy, MAKELONG(0, 0xe2)); + DeleteObject(hbr); + } + + break; + + case MIX_OPAQUE: + { + /* Curiously, glyphs are inverted (white-on-black) */ + SetBkColor(m_displayBuffer, fgcolour); + SetTextColor(m_displayBuffer, bgcolour); + BitBlt(m_displayBuffer, x, y, cx, cy, hdcGlyph, srcx, srcy, SRCCOPY); + } + + break; + } + + RestoreDC(m_displayBuffer, dcsave); + + SelectObject(hdcGlyph, hOld); + DeleteDC(hdcGlyph); + + Display_RepaintArea(x, y, cx, cy); + } + + void Display_DoGlyph(uint8 font, uint8 flags, int mixmode, int& x, int& y, int bgcolour, int fgcolour, const uint8 * ttext, int& idx) + { + FONTGLYPH * glyph; + + glyph = cache_get_font(/*This*/NULL, font, ttext[idx]); + + if(!(flags & TEXT2_IMPLICIT_X)) + { + int xyoffset = ttext[++ idx]; + + if((xyoffset & 0x80)) + { + if (flags & TEXT2_VERTICAL) + y += ttext[idx + 1] | (ttext[idx + 2] << 8); + else + x += ttext[idx + 1] | (ttext[idx + 2] << 8); + + idx += 2; + } + else + { + if (flags & TEXT2_VERTICAL) + y += xyoffset; + else + x += xyoffset; + } + } + + if(glyph) + { + Display_DrawGlyph + ( + mixmode, + x + (short)glyph->offset, + y + (short)glyph->baseline, + glyph->width, + glyph->height, + glyph->pixmap, + 0, + 0, + bgcolour, + fgcolour + ); + + if(flags & TEXT2_IMPLICIT_X) + x += glyph->width; + } + } + + void Display_DrawText + ( + uint8 font, + uint8 flags, + uint8 opcode, + int mixmode, + int x, + int y, + int clipx, + int clipy, + int clipcx, + int clipcy, + int boxx, + int boxy, + int boxcx, + int boxcy, + BRUSH * brush, + int bgcolour, + int fgcolour, + uint8 * text, + uint8 length + ) + { + int i, j; + DATABLOB *entry; + + HBRUSH hbr = CreateSolidBrush(bgcolour); + HGDIOBJ holdbrush = SelectObject(m_displayBuffer, hbr); + HGDIOBJ holdpen = SelectObject(m_displayBuffer, GetStockObject(NULL_PEN)); + + if (boxcx > 1) + Rectangle(m_displayBuffer, boxx, boxy, boxx + boxcx + 1, boxy + boxcy + 1); + else if (mixmode == MIX_OPAQUE) + Rectangle(m_displayBuffer, clipx, clipy, clipx + clipcx + 1, clipy + clipcy + 1); + + SelectObject(m_displayBuffer, holdpen); + SelectObject(m_displayBuffer, holdbrush); + + DeleteObject(hbr); + + if(boxcx > 1) + Display_RepaintArea(boxx, boxy, boxcx, boxcy); + else + Display_RepaintArea(clipx, clipy, clipcx, clipcy); + + /* Paint text, character by character */ + for (i = 0; i < length;) + { + switch (text[i]) + { + case 0xff: + /* At least two bytes needs to follow */ + if (i + 3 > length) + { + warning("Skipping short 0xff command:"); + for (j = 0; j < length; j++) + fprintf(stderr, "%02x ", text[j]); + fprintf(stderr, "\n"); + i = length = 0; + break; + } + cache_put_text(NULL /* TODO */, text[i + 1], text, text[i + 2]); + i += 3; + length -= i; + /* this will move pointer from start to first character after FF command */ + text = &(text[i]); + i = 0; + break; + + case 0xfe: + /* At least one byte needs to follow */ + if (i + 2 > length) + { + warning("Skipping short 0xfe command:"); + for (j = 0; j < length; j++) + fprintf(stderr, "%02x ", text[j]); + fprintf(stderr, "\n"); + i = length = 0; + break; + } + entry = cache_get_text(/*This*/NULL, text[i + 1]); + if (entry->data != NULL) + { + if ((((uint8 *) (entry->data))[1] == 0) + && (!(flags & TEXT2_IMPLICIT_X)) && (i + 2 < length)) + { + if (flags & TEXT2_VERTICAL) + y += text[i + 2]; + else + x += text[i + 2]; + } + for (j = 0; j < entry->size; j++) + Display_DoGlyph(font, flags, mixmode, x, y, bgcolour, fgcolour, ((uint8 *) (entry->data)), j); + } + if (i + 2 < length) + i += 3; + else + i += 2; + length -= i; + /* this will move pointer from start to first character after FE command */ + text = &(text[i]); + i = 0; + break; + + default: + Display_DoGlyph(font, flags, mixmode, x, y, bgcolour, fgcolour, text, i); + i++; + break; + } + } + } + + void Display_SaveDesktop(uint32 offset, int x, int y, int cx, int cy) + { + GdiFlush(); + + uint8 * data = + (uint8 *)m_displayBufferRaw + + x * m_displayBufferByteDepth + + (m_displayBufferHeight - y - cy) * m_displayBufferStride; + + cache_put_desktop + ( + /*This*/NULL, + offset * m_displayBufferByteDepth, + cx, + cy, + m_displayBufferStride, + m_displayBufferByteDepth, + data + ); + } + + void Display_RestoreDesktop(uint32 offset, int x, int y, int cx, int cy) + { + int fromstride = cx * m_displayBufferByteDepth; + + const uint8 * src = cache_get_desktop(/*This*/NULL, offset, cx, cy, m_displayBufferByteDepth); + + uint8 * dst = + (uint8 *)m_displayBufferRaw + + x * m_displayBufferByteDepth + + (m_displayBufferHeight - y - cy) * m_displayBufferStride; + + GdiFlush(); + + for(int i = 0; i < cy; ++ i) + { + memcpy(dst, src, fromstride); + src += fromstride; + dst += m_displayBufferStride; + } + + Display_RepaintArea(x, y, cx, cy); + } + + + void Display_BeginUpdate() + { + EnterCriticalSection(&m_displayBufferMutex); + m_displayBufferSave = SaveDC(m_displayBuffer); + } + + void Display_EndUpdate() + { + RestoreDC(m_displayBuffer, m_displayBufferSave); + LeaveCriticalSection(&m_displayBufferMutex); + } + + /* + This is the input window. It receives the keyboard and mouse input from + the user, and it's the only window that can receive the keyboard focus. + It completely fills its parent, the console window, and it runs in its + own thread for performance reasons and because of technical reasons + involving keyboard hooks in full-screen mode + */ + HWND m_inputWindow; + HCURSOR m_inputCursor; + + LRESULT InputWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_DESTROY: + PostQuitMessage(0); + return 0; + + /* Keyboard stuff */ + // TODO: we need a good way to post output cross-thread + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYPRESS | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + case WM_SYSKEYUP: + case WM_KEYUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYRELEASE | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + /* Mouse stuff */ + // Cursor shape + case WM_SETCURSOR: + if(LOWORD(lParam) == HTCLIENT) + { + SetCursor(m_inputCursor); + return TRUE; + } + + break; + + // Movement + case WM_MOUSEMOVE: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_MOVE, LOWORD(lparam), HIWORD(lparam)); + break; + + // Buttons + // TODO: X buttons + case WM_LBUTTONDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONDOWN: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONUP: + //rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3, LOWORD(lparam), HIWORD(lparam)); + break; + + // Wheel + case WM_MOUSEWHEEL: + //mstsc_mousewheel(This, (SHORT)HIWORD(wparam), lparam); + break; + } + + return DefWindowProc(m_inputWindow, uMsg, wParam, lParam); + } + +public: +}; + +#pragma warning(push) +#pragma warning(disable: 4584) + +/* The ActiveX control */ +class RdpClient SEALED_: + /* COM basics */ + public IUnknown, + public IDispatch, + + /* ActiveX stuff */ + public IConnectionPointContainer, + public IDataObject, + public IObjectSafety, + public IOleControl, + public IOleInPlaceActiveObject, + public IOleInPlaceObject, + public IOleObject, + public IOleWindow, + public IPersist, + public IPersistPropertyBag, + public IPersistStorage, + public IPersistStreamInit, + public IProvideClassInfo, + public IProvideClassInfo2, + public IQuickActivate, + public IViewObject, + public IViewObject2, + + // NOTE: the original has a vestigial, non-functional implementation of this, which we omit + // ISpecifyPropertyPages + + // Hidden interfaces, not available through QueryInterface + public IConnectionPoint, + + /* RDP client interface */ + public MSTSCLib::IMsRdpClient4, + public MSTSCLib::IMsRdpClientNonScriptable2 + + // NOTE: implemented by inner classes due to requiring distinct IDispatch implementations + // IMsRdpClientAdvancedSettings4 + // IMsRdpClientSecuredSettings +{ +private: + /* An endless amount of COM glue */ + // Reference counting + LONG m_refCount; + +#ifdef _DEBUG + DWORD m_apartmentThreadId; + + bool InsideApartment() const + { + return GetCurrentThreadId() == m_apartmentThreadId; + } +#endif + + // Aggregation support + IUnknown * m_punkOuter; + + class RdpClientInner: public IUnknown + { + private: + RdpClient * Outer() + { + return InnerToOuter(this); + } + + public: + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + return Outer()->queryInterface(riid, ppvObject); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return Outer()->addRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return Outer()->release(); + } + + } + m_inner; + + // Persistence support + CLSID m_classId; + + // Late binding support + unsigned m_typeLibIndex; + ITypeLib * m_typeLib; + ITypeInfo * m_dispTypeInfo; + + // Event sinks + size_t m_EventSinksCount; + + union + { + MSTSCLib::IMsTscAxEvents * m_EventSinksStatic[1]; + MSTSCLib::IMsTscAxEvents ** m_EventSinks; + }; + + // OLE control glue + HWND m_controlWindow; + IOleClientSite * m_clientSite; + IOleInPlaceSite * m_inPlaceSite; + IOleAdviseHolder * m_adviseHolder; + LONG m_freezeEvents; + bool m_uiActive; + + // UrlMon security + DWORD m_SafetyOptions; + + bool IsSafeForScripting() const + { + return m_SafetyOptions & INTERFACESAFE_FOR_UNTRUSTED_CALLER; + } + + /* Glue to interface to rdesktop-core */ + RdpClientUI * m_clientUI; + RDPCLIENT m_protocolState; + HANDLE m_protocolThread; + HANDLE m_protocolThreadWaitingReconnection; + bool m_reconnectAborted; + bool m_actuallyConnected; + bool m_loggedIn; + + /* Properties */ + // Storage fields + // NOTE: keep sorted by alignment (pointers and handles, integers, enumerations, booleans) + BSTR m_Domain; + BSTR m_UserName; + BSTR m_DisconnectedText; + BSTR m_ConnectingText; + BSTR m_FullScreenTitle; + BSTR m_StartProgram; + BSTR m_WorkDir; + BSTR m_ConnectedStatusText; + BSTR m_ClearTextPassword; // FIXME! dangerous, shouldn't store in cleartext! + BSTR m_RdpdrLocalPrintingDocName; + BSTR m_RdpdrClipCleanTempDirString; + BSTR m_RdpdrClipPasteInfoString; + BSTR m_KeyboardLayoutString; + LPSTR m_Server; + LPSTR m_LoadBalanceInfo; + // TODO: plugin DLLs + HWND m_UIParentWindowHandle; + long m_DesktopWidth; + long m_DesktopHeight; + long m_StartConnected; + long m_ColorDepth; + long m_KeyboardHookMode; + long m_AudioRedirectionMode; + long m_TransportType; + long m_SasSequence; + long m_RDPPort; + long m_HotKeyFullScreen; + long m_HotKeyAltEsc; + long m_HotKeyAltShiftTab; + long m_HotKeyAltSpace; + long m_HotKeyAltTab; + long m_HotKeyCtrlAltDel; + long m_HotKeyCtrlEsc; + long m_orderDrawThresold; + long m_BitmapCacheSize; + long m_BitmapVirtualCacheSize; + long m_NumBitmapCaches; + long m_brushSupportLevel; + long m_minInputSendInterval; + long m_InputEventsAtOnce; + long m_maxEventCount; + long m_keepAliveInternal; + long m_shutdownTimeout; + long m_overallConnectionTimeout; + long m_singleConnectionTimeout; + long m_MinutesToIdleTimeout; + long m_BitmapVirtualCache16BppSize; + long m_BitmapVirtualCache24BppSize; + long m_PerformanceFlags; + long m_MaxReconnectAttempts; + unsigned int m_AuthenticationLevel; + + MSTSCLib::ExtendedDisconnectReasonCode m_ExtendedDisconnectReason; + + bool m_Connected; + bool m_Compress; + bool m_BitmapPersistence; + bool m_allowBackgroundInput; + bool m_ContainerHandledFullScreen; + bool m_DisableRdpdr; + bool m_SecuredSettingsEnabled; + bool m_FullScreen; + bool m_AcceleratorPassthrough; + bool m_ShadowBitmap; + bool m_EncryptionEnabled; + bool m_DedicatedTerminal; + bool m_DisableCtrlAltDel; + bool m_EnableWindowsKey; + bool m_DoubleClickDetect; + bool m_MaximizeShell; + bool m_ScaleBitmapCachesByBpp; + bool m_CachePersistenceActive; + bool m_ConnectToServerConsole; + bool m_SmartSizing; // FIXME: this can be set while the control is connected + bool m_DisplayConnectionBar; + bool m_PinConnectionBar; + bool m_GrabFocusOnConnect; + bool m_RedirectDrives; + bool m_RedirectPrinters; + bool m_RedirectPorts; + bool m_RedirectSmartCards; + bool m_NotifyTSPublicKey; + bool m_CanAutoReconnect; + bool m_EnableAutoReconnect; + bool m_ConnectionBarShowMinimizeButton; + bool m_ConnectionBarShowRestoreButton; + + // Generic getters/setters + HRESULT GetProperty(BSTR& prop, BSTR * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = SysAllocStringLen(prop, SysStringLen(prop)); + + if(*retVal == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + + HRESULT GetProperty(LPSTR& prop, BSTR * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = LpszToBstr(prop); + + if(*retVal == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + + HRESULT SetProperty(BSTR& prop, BSTR newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + SysFreeString(prop); + + UINT len = SysStringLen(newValue); + + if(len) + { + // no embedded NULs, please + if(len != lstrlenW(newValue)) + return E_INVALIDARG; + + prop = SysAllocStringLen(newValue, len); + + if(prop == NULL) + return E_OUTOFMEMORY; + } + else + prop = NULL; + + return S_OK; + } + + HRESULT ReplaceProperty(BSTR& prop, BSTR newValue) + { + assert(InsideApartment()); + assert((prop == NULL && newValue == NULL) || prop != newValue); + + SysFreeString(prop); + prop = newValue; + return S_OK; + } + + HRESULT SetProperty(LPSTR& prop, BSTR newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + delete[] prop; + + if(SysStringLen(newValue)) + { + prop = BstrToLpsz(newValue); + + if(prop == NULL) + return E_OUTOFMEMORY; + } + else + prop = NULL; + + return S_OK; + } + + HRESULT ReplaceProperty(LPSTR& prop, LPSTR newValue) + { + assert(InsideApartment()); + assert((prop == NULL && newValue == NULL) || prop != newValue); + + if(prop) + delete[] prop; + + prop = newValue; + return S_OK; + } + + template HRESULT SetProperty(bool& prop, const Type& newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + prop = !!newValue; + return S_OK; + } + + template HRESULT SetProperty(Type& prop, const Type& newValue) + { + assert(InsideApartment()); + + if(m_Connected) + return E_FAIL; + + prop = newValue; + return S_OK; + } + + template HRESULT GetProperty(const bool& prop, Type * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = prop ? VARIANT_TRUE : VARIANT_FALSE; + return S_OK; + } + + template HRESULT GetProperty(const Type& prop, Type * retVal) const + { + assert(InsideApartment()); + + if(retVal == NULL) + return E_POINTER; + + *retVal = prop; + return S_OK; + } + + /* Events */ + MSTSCLib::IMsTscAxEvents ** GetSinks() const + { + if(m_EventSinksCount > 1) + return m_EventSinks; + else + return const_cast(m_EventSinksStatic); + } + + // Event freezing + void UnfreezeEvents() + { + // Just in case + } + + // Generic event riser & helpers + void InvokeSinks(DISPID eventId, VARIANTARG rgvarg[], unsigned int cArgs, VARIANTARG * retval) + { + assert(InsideApartment()); + + DISPPARAMS params; + + params.rgvarg = rgvarg; + params.rgdispidNamedArgs = NULL; + params.cArgs = cArgs; + params.cNamedArgs = 0; + + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + + for(size_t i = 0; i < m_EventSinksCount; ++ i) + sinks[i]->Invoke(eventId, IID_NULL, 0, DISPATCH_METHOD, ¶ms, retval, NULL, NULL); + } + + typedef void (RdpClient::* AsyncEventCallback) + ( + DISPID eventId, + VARIANTARG * rgvarg, + unsigned int cArgs, + VARIANTARG * retVal + ); + + void CleanupEventArgumentsCallback + ( + DISPID eventId, + VARIANTARG * rgvarg, + unsigned int cArgs, + VARIANTARG * retVal + ) + { + assert((rgvarg == NULL) == (cArgs == 0)); + + for(unsigned int i = 0; i < cArgs; ++ i) + VariantClear(&rgvarg[i]); + + if(retVal) + VariantClear(retVal); + } + + // synchronous call from inside the apartment that owns the object + void FireEventInsideApartment + ( + DISPID eventId, + VARIANTARG * rgvarg = NULL, + unsigned int cArgs = 0, + VARIANTARG * retval = NULL, + AsyncEventCallback callback = NULL + ) + { + assert(InsideApartment()); + + if(retval == NULL && callback) + { + VARIANTARG localRetval = { }; + retval = &localRetval; + } + + InvokeSinks(eventId, rgvarg, cArgs, retval); + + if(callback) + (this->*callback)(eventId, rgvarg, cArgs, retval); + } + + struct EventArguments + { + DISPID eventId; + VARIANTARG * rgvarg; + unsigned int cArgs; + VARIANTARG * retval; + AsyncEventCallback callback; + }; + + struct RedirectArguments + { + uint32 flags; + uint32 server_len; + wchar_t * server; + uint32 cookie_len; + char * cookie; + uint32 username_len; + wchar_t * username; + uint32 domain_len; + wchar_t * domain; + uint32 password_len; + wchar_t * password; + }; + + enum + { + RDPC_WM_ = WM_USER, + RDPC_WM_SYNC_EVENT, + RDPC_WM_ASYNC_EVENT, + RDPC_WM_DISCONNECT, + RDPC_WM_REQUEST_CLOSE, + RDPC_WM_REDIRECT, + }; + + static VOID CALLBACK DisconnectAPC(ULONG_PTR) + { + // no need to do anything. The interruption will be enough + } + + bool HandleEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& result) + { + result = 0; + + switch(uMsg) + { + /* Regular event to be dispatched to the container's sink */ + case RDPC_WM_SYNC_EVENT: + assert(InSendMessage()); + + case RDPC_WM_ASYNC_EVENT: + { + const EventArguments * eventArgs = reinterpret_cast(lParam); + assert(eventArgs); + + FireEventInsideApartment + ( + eventArgs->eventId, + eventArgs->rgvarg, + eventArgs->cArgs, + eventArgs->retval, + eventArgs->callback + ); + + if(uMsg == RDPC_WM_ASYNC_EVENT) + delete eventArgs; + } + + break; + + /* The protocol thread is about to die: prepare for disconnection */ + case RDPC_WM_DISCONNECT: + { + assert(m_Connected); + assert(InsideApartment()); + assert(InSendMessage()); + + // Unblock the protocol thread and wait for it to terminate + ReplyMessage(0); + JoinProtocolThread(); + + // Finish disconnecting + PerformDisconnect(static_cast(wParam)); + } + + break; + + case RDPC_WM_REDIRECT: + { + assert(InSendMessage()); + assert(lParam); + assert(m_Connected); + assert(m_protocolState.redirect); + + RedirectArguments * redirectArgs = reinterpret_cast(lParam); + + // BUGBUG: this is extremely messy and more prone to out-of-memory than it should be + LPSTR lpszNewServer = NULL; + LPSTR lpszNewCookie = NULL; + BSTR strNewUsername = NULL; + BSTR strNewDomain = NULL; + BSTR strNewPassword = NULL; + HRESULT hr = S_OK; + + for(;;) + { + // Allocate the new properties + hr = E_OUTOFMEMORY; + + // FIXME: convert the hostname to Punycode, not the ANSI codepage + lpszNewServer = AllocLpsz(redirectArgs->server, redirectArgs->server_len / sizeof(OLECHAR)); + + if(lpszNewServer == NULL && redirectArgs->server_len) + break; + + lpszNewCookie = AllocLpsz(redirectArgs->cookie, redirectArgs->cookie_len); + + if(lpszNewCookie == NULL && redirectArgs->cookie_len) + break; + + strNewUsername = SysAllocStringLen(redirectArgs->username, redirectArgs->username_len / sizeof(OLECHAR)); + + if(strNewUsername == NULL && redirectArgs->username_len) + break; + + strNewDomain = SysAllocStringLen(redirectArgs->domain, redirectArgs->domain_len / sizeof(OLECHAR)); + + if(strNewDomain == NULL && redirectArgs->domain_len) + break; + + strNewPassword = SysAllocStringLen(redirectArgs->password, redirectArgs->password_len / sizeof(OLECHAR)); + + if(strNewPassword == NULL && redirectArgs->password_len) + break; + + hr = S_OK; + break; + } + + // Success + if(SUCCEEDED(hr)) + { + // set the new properties + ReplaceProperty(m_Server, lpszNewServer); + ReplaceProperty(m_LoadBalanceInfo, lpszNewCookie); + ReplaceProperty(m_UserName, strNewUsername); + ReplaceProperty(m_Domain, strNewDomain); + ReplaceProperty(m_ClearTextPassword, strNewPassword); + } + // Failure + else + { + // free the buffers + FreeLpsz(lpszNewServer); + FreeLpsz(lpszNewCookie); + SysFreeString(strNewUsername); + SysFreeString(strNewDomain); + SysFreeString(strNewPassword); + + // signal the error + m_protocolState.disconnect_reason = 262; + m_protocolState.redirect = False; + result = -1; + } + } + + break; + + // BUGBUG: this could potentially disconnect an unrelated connection established later... + case RDPC_WM_REQUEST_CLOSE: + { + assert(!InSendMessage()); + + if(m_Connected) + { + // Ask confirmation to the container in case we are logged in + if(m_loggedIn && !FireConfirmClose()) + break; + + // For reentrancy (OnConfirmClose could deviously call Disconnect) + if(m_protocolThread == NULL) + break; + + // Terminate the protocol thread. It will fire the Disconnected event on exit + TerminateProtocolThread(); + } + } + + break; + + default: + return false; + } + + // If the calling thread is blocked, unblock it ASAP + if(InSendMessage()) + ReplyMessage(result); + + return true; + } + + // synchronous call from outside the apartment + void FireEventOutsideApartment + ( + DISPID eventId, + VARIANTARG * rgvarg = NULL, + unsigned int cArgs = 0, + VARIANTARG * retval = NULL, + AsyncEventCallback callback = NULL + ) + { + assert(!InsideApartment()); + EventArguments syncEvent = { eventId, rgvarg, cArgs, retval, callback }; + SendMessage(m_controlWindow, RDPC_WM_SYNC_EVENT, 0, reinterpret_cast(&syncEvent)); + } + + // asynchronous call from outside the apartment + HRESULT FireEventOutsideApartmentAsync + ( + DISPID eventId, + VARIANTARG * rgvarg = NULL, + unsigned int cArgs = 0, + VARIANTARG * retval = NULL, + AsyncEventCallback callback = NULL + ) + { + assert(!InsideApartment()); + + EventArguments * asyncEvent = new EventArguments(); + + if(asyncEvent == NULL) + return E_OUTOFMEMORY; + + asyncEvent->eventId = eventId; + asyncEvent->rgvarg = rgvarg; + asyncEvent->cArgs = cArgs; + asyncEvent->retval = NULL; + + if(!PostMessage(m_controlWindow, RDPC_WM_ASYNC_EVENT, 0, reinterpret_cast(asyncEvent))) + { + delete asyncEvent; + return HRESULT_FROM_WIN32(GetLastError()); + } + + return S_OK; + } + + // Specific events + void FireConnecting() + { + // Source: protocol + FireEventOutsideApartment(1); + } + + void FireConnected() + { + // Source: protocol + FireEventOutsideApartment(2); + } + + void FireLoginComplete() + { + // Source: protocol + FireEventOutsideApartment(3); + } + + void FireDisconnected(long reason) + { + // Source: protocol. Special handling + SendMessage(m_controlWindow, RDPC_WM_DISCONNECT, reason, 0); + } + + void FireEnterFullScreenMode() + { + // Source: UI window + FireEventInsideApartment(5); + } + + void FireLeaveFullScreenMode() + { + // Source: UI window + FireEventInsideApartment(6); + } + + HRESULT FireChannelReceivedData(char (& chanName)[CHANNEL_NAME_LEN + 1], void * chanData, unsigned int chanDataSize) + { + // BUGBUG: what to do when we run out of memory? + + OLECHAR wchanName[ARRAYSIZE(chanName)]; + std::copy(chanName + 0, chanName + ARRAYSIZE(chanName), wchanName); + + BSTR bstrChanName = SysAllocString(wchanName); + + if(bstrChanName == NULL) + return E_OUTOFMEMORY; + + BSTR bstrChanData = SysAllocStringByteLen(NULL, chanDataSize); + + if(bstrChanData == NULL) + { + SysFreeString(bstrChanName); + return E_OUTOFMEMORY; + } + + CopyMemory(bstrChanData, chanData, chanDataSize); + + VARIANTARG args[2] = { }; + + args[1].vt = VT_BSTR; + args[1].bstrVal = bstrChanName; + + args[0].vt = VT_BSTR; + args[0].bstrVal = bstrChanData; + + // Source: protocol + HRESULT hr = FireEventOutsideApartmentAsync(7, args, ARRAYSIZE(args), NULL, &RdpClient::CleanupEventArgumentsCallback); + + if(FAILED(hr)) + CleanupEventArgumentsCallback(7, args, ARRAYSIZE(args), NULL); + + return hr; + } + + void FireRequestGoFullScreen() + { + // Source: UI window + FireEventInsideApartment(8); + } + + void FireRequestLeaveFullScreen() + { + // Source: UI window + FireEventInsideApartment(9); + } + + void FireFatalError(long errorCode) + { + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = errorCode; + + // Source: protocol + FireEventOutsideApartment(10, &arg, 1); + } + + void FireFatalErrorFromApartment(long errorCode) + { + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = errorCode; + + // Source: control + FireEventInsideApartment(10, &arg, 1); + } + + void FireWarning(long warningCode) + { + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = warningCode; + + // Source: protocol + FireEventOutsideApartment(11, &arg, 1); + } + + void FireRemoteDesktopSizeChange(long width, long height) + { + VARIANTARG args[2] = { }; + + args[1].vt = VT_I4; + args[1].lVal = width; + + args[0].vt = VT_I4; + args[0].lVal = height; + + // Source: UI window + FireEventInsideApartment(12, args, ARRAYSIZE(args)); + } + + void FireIdleTimeoutNotification() + { + // Source: input thread + FireEventOutsideApartment(13); + } + + void FireRequestContainerMinimize() + { + // Source: UI window + FireEventInsideApartment(14); + } + + bool FireConfirmClose() + { + VARIANTARG retval = { }; + VARIANT_BOOL allowClose = VARIANT_TRUE; + + retval.vt = VT_BYREF | VT_BOOL; + retval.pboolVal = &allowClose; + + // Source: control + FireEventInsideApartment(15, NULL, 0, &retval); + + return allowClose != VARIANT_FALSE; + } + + HRESULT FireReceivedTSPublicKey(void * publicKey, unsigned int publicKeyLength) + { + assert(m_Connected); + + if(!m_NotifyTSPublicKey) + return S_OK; + + BSTR bstrPublicKey = SysAllocStringByteLen(NULL, publicKeyLength); + + if(bstrPublicKey == NULL) + return E_OUTOFMEMORY; + + CopyMemory(bstrPublicKey, publicKey, publicKeyLength); + + VARIANT_BOOL continueLogon = VARIANT_TRUE; + VARIANTARG arg = { }; + VARIANTARG retval = { }; + + arg.vt = VT_BSTR; + arg.bstrVal = bstrPublicKey; + + retval.vt = VT_BYREF | VT_BOOL; + retval.pboolVal = &continueLogon; + + // Source: protocol + FireEventOutsideApartment(16, &arg, 1, &retval); + + return continueLogon ? S_OK : S_FALSE; + } + + LONG FireAutoReconnecting(long disconnectReason, long attemptCount) + { + LONG continueStatus = MSTSCLib::autoReconnectContinueAutomatic; + VARIANTARG args[2] = { }; + VARIANTARG retval = { }; + + args[1].vt = VT_I4; + args[1].lVal = disconnectReason; + + args[0].vt = VT_I4; + args[0].lVal = attemptCount; + + retval.vt = VT_BYREF | VT_I4; + retval.plVal = &continueStatus; + + // Source: protocol + FireEventOutsideApartment(17, args, ARRAYSIZE(args), &retval); + + return continueStatus; + } + + void FireAuthenticationWarningDisplayed() + { + // Source: protocol + FireEventOutsideApartment(18); + } + + void FireAuthenticationWarningDismissed() + { + // Source: protocol + FireEventOutsideApartment(19); + } + + /* Actual IUnknown implementation */ + HRESULT queryInterface(REFIID riid, void ** ppvObject) + { + IUnknown * pvObject = NULL; + + using namespace MSTSCLib; + + if(riid == IID_IUnknown) + pvObject = static_cast(&m_inner); + else if(riid == IID_IConnectionPointContainer) + pvObject = static_cast(this); + else if(riid == IID_IDataObject) + pvObject = static_cast(this); + else if(riid == IID_IObjectSafety) + pvObject = static_cast(this); + else if(riid == IID_IOleControl) + pvObject = static_cast(this); + else if(riid == IID_IOleInPlaceActiveObject) + pvObject = static_cast(this); + else if(riid == IID_IOleInPlaceObject) + pvObject = static_cast(this); + else if(riid == IID_IOleObject) + pvObject = static_cast(this); + else if(riid == IID_IOleWindow) + pvObject = static_cast(this); + else if(riid == IID_IPersist) + pvObject = static_cast(this); + else if(riid == IID_IPersistPropertyBag) + pvObject = static_cast(this); + else if(riid == IID_IPersistStorage) + pvObject = static_cast(this); + else if(riid == IID_IPersistStreamInit) + pvObject = static_cast(this); + else if(riid == IID_IQuickActivate) + pvObject = static_cast(this); + else if(riid == IID_IViewObject) + pvObject = static_cast(this); + else if(riid == IID_IViewObject2) + pvObject = static_cast(this); + else if(riid == IID_IMsTscAx || riid == MSTSCLib_Redist::IID_IMsTscAx) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient2) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient3) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClient4) + pvObject = static_cast(this); + else if(riid == IID_IMsTscNonScriptable) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClientNonScriptable) + pvObject = static_cast(this); + else if(riid == IID_IMsRdpClientNonScriptable2) + pvObject = static_cast(this); + + *ppvObject = pvObject; + + if(pvObject) + { + pvObject->AddRef(); + return S_OK; + } + + return E_NOINTERFACE; + } + + ULONG addRef() + { + return InterlockedIncrement(&m_refCount); + } + + ULONG release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + /* Constructor */ + RdpClient(REFCLSID classId, unsigned libIndex, IUnknown * punkOuter): + // COM/OLE internals + m_refCount(0), + m_punkOuter(punkOuter), + m_classId(classId), + m_typeLibIndex(libIndex), + m_typeLib(), + m_dispTypeInfo(), + m_controlWindow(NULL), + m_clientSite(), + m_inPlaceSite(), + m_adviseHolder(), + m_freezeEvents(0), + m_uiActive(false), + m_SafetyOptions(), + +#ifdef _DEBUG + m_apartmentThreadId(GetCurrentThreadId()), +#endif + + // rdesktop-core interface + m_protocolState(), + m_protocolThread(), + + // Properties + m_Server(), + m_Domain(), + m_UserName(), + m_DisconnectedText(), + m_ConnectingText(), + m_FullScreenTitle(), + m_StartProgram(), + m_WorkDir(), + m_LoadBalanceInfo(), + m_ConnectedStatusText(), + m_ClearTextPassword(), + m_RdpdrLocalPrintingDocName(), + m_RdpdrClipCleanTempDirString(), + m_RdpdrClipPasteInfoString(), + m_UIParentWindowHandle(), + m_DesktopWidth(), + m_DesktopHeight(), + m_StartConnected(), + m_ColorDepth(16), + m_KeyboardHookMode(2), + m_AudioRedirectionMode(0), + m_TransportType(1), // BUGBUG: ??? what's this ??? + m_SasSequence(0xAA03), // BUGBUG: ??? what's this ??? + m_RDPPort(3389), + m_HotKeyFullScreen(VK_CANCEL), + m_HotKeyAltEsc(VK_INSERT), + m_HotKeyAltShiftTab(VK_NEXT), + m_HotKeyAltSpace(VK_DELETE), + m_HotKeyAltTab(VK_PRIOR), + m_HotKeyCtrlAltDel(VK_END), + m_HotKeyCtrlEsc(VK_HOME), + m_orderDrawThresold(0), + m_BitmapCacheSize(1500), + m_BitmapVirtualCacheSize(10), + m_brushSupportLevel(), + m_minInputSendInterval(), + m_InputEventsAtOnce(), + m_maxEventCount(), + m_keepAliveInternal(0), + m_shutdownTimeout(10), + m_overallConnectionTimeout(120), + m_singleConnectionTimeout(30), + m_MinutesToIdleTimeout(0), + m_BitmapVirtualCache16BppSize(20), + m_BitmapVirtualCache24BppSize(30), + m_PerformanceFlags(), + m_MaxReconnectAttempts(20), + m_AuthenticationLevel(0), + m_ExtendedDisconnectReason(MSTSCLib::exDiscReasonNoInfo), + m_Connected(false), + m_Compress(true), + m_BitmapPersistence(true), + m_allowBackgroundInput(false), + m_ContainerHandledFullScreen(false), + m_DisableRdpdr(false), + m_SecuredSettingsEnabled(true), + m_FullScreen(false), + m_AcceleratorPassthrough(true), + m_ShadowBitmap(true), + m_EncryptionEnabled(true), + m_DedicatedTerminal(false), + m_DisableCtrlAltDel(true), + m_EnableWindowsKey(true), + m_DoubleClickDetect(false), + m_MaximizeShell(true), + m_ScaleBitmapCachesByBpp(false), + m_CachePersistenceActive(false), + m_ConnectToServerConsole(false), + m_SmartSizing(false), + m_DisplayConnectionBar(true), + m_PinConnectionBar(true), + m_GrabFocusOnConnect(true), + m_RedirectDrives(false), + m_RedirectPrinters(false), + m_RedirectPorts(false), + m_RedirectSmartCards(false), + m_NotifyTSPublicKey(false), + m_CanAutoReconnect(false), + m_EnableAutoReconnect(true), + m_ConnectionBarShowMinimizeButton(true), + m_ConnectionBarShowRestoreButton(true) + { + if(m_punkOuter == NULL) + m_punkOuter = &m_inner; + } + + /* Destructor */ + ~RdpClient() + { + assert(m_refCount == 0); + + if(m_Connected) + { + // Terminate the protocol thread + TerminateProtocolThread(); + + // Dispatch the RDPC_WM_DISCONNECT message sent by the dying thread + MSG msg; + PeekMessage(&msg, m_controlWindow, 0, 0, PM_NOREMOVE); + + assert(!m_Connected); + } + + DestroyControlWindow(); + + if(m_typeLib) + m_typeLib->Release(); + + if(m_dispTypeInfo) + m_dispTypeInfo->Release(); + + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + + for(size_t i = 0; i < m_EventSinksCount; ++ i) + sinks[i]->Release(); + + if(m_EventSinksCount > 1) + delete[] m_EventSinks; + + if(m_clientSite) + m_clientSite->Release(); + + if(m_inPlaceSite) + m_inPlaceSite->Release(); + + if(m_adviseHolder) + m_adviseHolder->Release(); + + SysFreeString(m_Domain); + SysFreeString(m_UserName); + SysFreeString(m_DisconnectedText); + SysFreeString(m_DisconnectedText); + SysFreeString(m_FullScreenTitle); + SysFreeString(m_StartProgram); + SysFreeString(m_WorkDir); + SysFreeString(m_ConnectedStatusText); + SysFreeString(m_ClearTextPassword); + SysFreeString(m_RdpdrLocalPrintingDocName); + SysFreeString(m_RdpdrClipCleanTempDirString); + SysFreeString(m_RdpdrClipPasteInfoString); + + FreeLpsz(m_LoadBalanceInfo); + FreeLpsz(m_Server); + + unlockServer(); + } + + /* Advanced settings wrapper */ + friend class AdvancedSettings; + + class AdvancedSettings SEALED_: public MSTSCLib::IMsRdpClientAdvancedSettings4 + { + private: + RdpClient * Outer() + { + return InnerToOuter(this); + } + + const RdpClient * Outer() const + { + return InnerToOuter(this); + } + + /* IDispatch type information */ + ITypeInfo * m_dispTypeInfo; + + HRESULT LoadDispTypeInfo() + { + if(m_dispTypeInfo) + return S_OK; + + HRESULT hr = Outer()->LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + assert(MSTSCLib::IID_IMsRdpClientAdvancedSettings4 == MSTSCLib_Redist::IID_IMsRdpClientAdvancedSettings4); + + hr = Outer()->m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClientAdvancedSettings4, &m_dispTypeInfo); + + if(FAILED(hr)) + return hr; + + assert(m_dispTypeInfo); + return S_OK; + } + + HRESULT AcquireDispTypeInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + m_dispTypeInfo->AddRef(); + *ppTI = m_dispTypeInfo; + return S_OK; + } + + public: + ~AdvancedSettings() + { + if(m_dispTypeInfo) + m_dispTypeInfo->Release(); + } + + /* IUnknown */ + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + using namespace MSTSCLib; + + if + ( + riid == IID_IUnknown || + riid == IID_IDispatch || + riid == IID_IMsTscAdvancedSettings || + riid == IID_IMsRdpClientAdvancedSettings || + riid == IID_IMsRdpClientAdvancedSettings2 || + riid == IID_IMsRdpClientAdvancedSettings3 || + riid == IID_IMsRdpClientAdvancedSettings4 + ) + { + *ppvObject = this; + Outer()->addRef(); + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return Outer()->addRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return Outer()->release(); + } + + /* IDispatch */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + *pctinfo = 1; + return S_OK; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + if(iTInfo != 0) + return DISP_E_BADINDEX; + + return AcquireDispTypeInfo(ppTInfo); + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId); + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + return m_dispTypeInfo->Invoke + ( + static_cast(this), + dispIdMember, + wFlags, + pDispParams, + pVarResult, + pExcepInfo, + puArgErr + ); + } + + /* IMsTscAdvancedSettings */ + virtual STDMETHODIMP IMsTscAdvancedSettings::put_Compress(long pcompress) + { + return Outer()->SetProperty(Outer()->m_Compress, pcompress); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_Compress(long * pcompress) const + { + return Outer()->GetProperty(Outer()->m_Compress, pcompress); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_BitmapPeristence(long pbitmapPeristence) + { + return Outer()->SetProperty(Outer()->m_BitmapPersistence, pbitmapPeristence); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_BitmapPeristence(long * pbitmapPeristence) const + { + return Outer()->GetProperty(Outer()->m_BitmapPersistence, pbitmapPeristence); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_allowBackgroundInput(long pallowBackgroundInput) + { + if(Outer()->IsSafeForScripting()) + return S_FALSE; + + return Outer()->SetProperty(Outer()->m_allowBackgroundInput, pallowBackgroundInput); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_allowBackgroundInput(long * pallowBackgroundInput) const + { + return Outer()->GetProperty(Outer()->m_allowBackgroundInput, pallowBackgroundInput); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_KeyBoardLayoutStr(BSTR rhs) + { + return Outer()->SetProperty(Outer()->m_KeyboardLayoutString, rhs); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_PluginDlls(BSTR rhs) + { + // TODO: split rhs into an array + + // Control marked safe for scripting: only allow filenames + if(Outer()->IsSafeForScripting()) + { + // TODO: validate entries + // TODO: replace each entry with a full path based on the Virtual Channel DLL path + } + + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconFile(BSTR rhs) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_IconIndex(long rhs) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_ContainerHandledFullScreen(long pContainerHandledFullScreen) + { + if(Outer()->IsSafeForScripting()) + return S_FALSE; + + return Outer()->SetProperty(Outer()->m_ContainerHandledFullScreen, pContainerHandledFullScreen); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_ContainerHandledFullScreen(long * pContainerHandledFullScreen) const + { + return Outer()->GetProperty(Outer()->m_ContainerHandledFullScreen, pContainerHandledFullScreen); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::put_DisableRdpdr(long pDisableRdpdr) + { + return Outer()->SetProperty(Outer()->m_DisableRdpdr, pDisableRdpdr); + } + + virtual STDMETHODIMP IMsTscAdvancedSettings::get_DisableRdpdr(long * pDisableRdpdr) const + { + return Outer()->GetProperty(Outer()->m_DisableRdpdr, pDisableRdpdr); + } + + /* IMsRdpClientAdvancedSettings */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmoothScroll(long psmoothScroll) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmoothScroll(long * psmoothScroll) const + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_AcceleratorPassthrough(long pacceleratorPassthrough) + { + return Outer()->SetProperty(Outer()->m_AcceleratorPassthrough, pacceleratorPassthrough); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_AcceleratorPassthrough(long * pacceleratorPassthrough) const + { + return Outer()->GetProperty(Outer()->m_AcceleratorPassthrough, pacceleratorPassthrough); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ShadowBitmap(long pshadowBitmap) + { + return Outer()->SetProperty(Outer()->m_ShadowBitmap, pshadowBitmap); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ShadowBitmap(long * pshadowBitmap) const + { + return Outer()->GetProperty(Outer()->m_ShadowBitmap, pshadowBitmap); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_TransportType(long ptransportType) + { + // Reserved + return Outer()->SetProperty(Outer()->m_TransportType, ptransportType); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_TransportType(long * ptransportType) const + { + // Reserved + return Outer()->GetProperty(Outer()->m_TransportType, ptransportType); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SasSequence(long psasSequence) + { + // Reserved + return Outer()->SetProperty(Outer()->m_SasSequence, psasSequence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SasSequence(long * psasSequence) const + { + // Reserved + return Outer()->GetProperty(Outer()->m_SasSequence, psasSequence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EncryptionEnabled(long pencryptionEnabled) + { + return Outer()->SetProperty(Outer()->m_EncryptionEnabled, pencryptionEnabled); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EncryptionEnabled(long * pencryptionEnabled) const + { + return Outer()->GetProperty(Outer()->m_EncryptionEnabled, pencryptionEnabled); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DedicatedTerminal(long pdedicatedTerminal) + { + return Outer()->SetProperty(Outer()->m_DedicatedTerminal, pdedicatedTerminal); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DedicatedTerminal(long * pdedicatedTerminal) const + { + return Outer()->GetProperty(Outer()->m_DedicatedTerminal, pdedicatedTerminal); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RDPPort(long prdpPort) + { + if(prdpPort == 0 || prdpPort > 65535) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_RDPPort, prdpPort); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RDPPort(long * prdpPort) const + { + return Outer()->GetProperty(Outer()->m_RDPPort, prdpPort); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableMouse(long penableMouse) + { + return S_FALSE; // TBD? implement? + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableMouse(long * penableMouse) const + { + return S_FALSE; // TBD? implement? + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisableCtrlAltDel(long pdisableCtrlAltDel) + { + return Outer()->SetProperty(Outer()->m_DisableCtrlAltDel, pdisableCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisableCtrlAltDel(long * pdisableCtrlAltDel) const + { + return Outer()->GetProperty(Outer()->m_DisableCtrlAltDel, pdisableCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_EnableWindowsKey(long penableWindowsKey) + { + return Outer()->SetProperty(Outer()->m_EnableWindowsKey, penableWindowsKey); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_EnableWindowsKey(long * penableWindowsKey) const + { + return Outer()->GetProperty(Outer()->m_EnableWindowsKey, penableWindowsKey); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DoubleClickDetect(long pdoubleClickDetect) + { + return Outer()->SetProperty(Outer()->m_DoubleClickDetect, pdoubleClickDetect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DoubleClickDetect(long * pdoubleClickDetect) const + { + return Outer()->GetProperty(Outer()->m_DoubleClickDetect, pdoubleClickDetect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MaximizeShell(long pmaximizeShell) + { + return Outer()->SetProperty(Outer()->m_MaximizeShell, pmaximizeShell); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MaximizeShell(long * pmaximizeShell) const + { + return Outer()->GetProperty(Outer()->m_MaximizeShell, pmaximizeShell); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyFullScreen(long photKeyFullScreen) + { + return Outer()->SetProperty(Outer()->m_HotKeyFullScreen, photKeyFullScreen); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyFullScreen(long * photKeyFullScreen) const + { + return Outer()->GetProperty(Outer()->m_HotKeyFullScreen, photKeyFullScreen); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlEsc(long photKeyCtrlEsc) + { + return Outer()->SetProperty(Outer()->m_HotKeyCtrlEsc, photKeyCtrlEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlEsc(long * photKeyCtrlEsc) const + { + return Outer()->GetProperty(Outer()->m_HotKeyCtrlEsc, photKeyCtrlEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltEsc(long photKeyAltEsc) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltEsc, photKeyAltEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltEsc(long * photKeyAltEsc) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltEsc, photKeyAltEsc); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltTab(long photKeyAltTab) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltTab, photKeyAltTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltTab(long * photKeyAltTab) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltTab, photKeyAltTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltShiftTab(long photKeyAltShiftTab) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltShiftTab, photKeyAltShiftTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltShiftTab(long * photKeyAltShiftTab) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltShiftTab, photKeyAltShiftTab); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyAltSpace(long photKeyAltSpace) + { + return Outer()->SetProperty(Outer()->m_HotKeyAltSpace, photKeyAltSpace); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyAltSpace(long * photKeyAltSpace) const + { + return Outer()->GetProperty(Outer()->m_HotKeyAltSpace, photKeyAltSpace); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_HotKeyCtrlAltDel(long photKeyCtrlAltDel) + { + return Outer()->SetProperty(Outer()->m_HotKeyCtrlAltDel, photKeyCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_HotKeyCtrlAltDel(long * photKeyCtrlAltDel) const + { + return Outer()->GetProperty(Outer()->m_HotKeyCtrlAltDel, photKeyCtrlAltDel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_orderDrawThreshold(long porderDrawThreshold) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_orderDrawThreshold(long * porderDrawThreshold) const + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapCacheSize(long pbitmapCacheSize) + { + // NOTE: the upper bound of "32" for a field with a default value of 1500 seems to be a bug + if(pbitmapCacheSize < 0 || pbitmapCacheSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapCacheSize, pbitmapCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapCacheSize(long * pbitmapCacheSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapCacheSize, pbitmapCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCacheSize(long pbitmapVirtualCacheSize) + { + if(pbitmapVirtualCacheSize < 0 || pbitmapVirtualCacheSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapVirtualCacheSize, pbitmapVirtualCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCacheSize(long * pbitmapVirtualCacheSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapVirtualCacheSize, pbitmapVirtualCacheSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ScaleBitmapCachesByBPP(long pbScale) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ScaleBitmapCachesByBPP(long * pbScale) const + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NumBitmapCaches(long pnumBitmapCaches) + { + return Outer()->SetProperty(Outer()->m_NumBitmapCaches, pnumBitmapCaches); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NumBitmapCaches(long * pnumBitmapCaches) const + { + return Outer()->GetProperty(Outer()->m_NumBitmapCaches, pnumBitmapCaches); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_CachePersistenceActive(long pcachePersistenceActive) + { + return Outer()->SetProperty(Outer()->m_CachePersistenceActive, pcachePersistenceActive); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_CachePersistenceActive(long * pcachePersistenceActive) const + { + return Outer()->GetProperty(Outer()->m_CachePersistenceActive, pcachePersistenceActive); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PersistCacheDirectory(BSTR rhs) + { + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_brushSupportLevel(long pbrushSupportLevel) + { + return Outer()->SetProperty(Outer()->m_brushSupportLevel, pbrushSupportLevel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_brushSupportLevel(long * pbrushSupportLevel) const + { + return Outer()->GetProperty(Outer()->m_brushSupportLevel, pbrushSupportLevel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_minInputSendInterval(long pminInputSendInterval) + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_minInputSendInterval(long * pminInputSendInterval) const + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_InputEventsAtOnce(long pinputEventsAtOnce) + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_InputEventsAtOnce(long * pinputEventsAtOnce) const + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_maxEventCount(long pmaxEventCount) + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_maxEventCount(long * pmaxEventCount) const + { + // TODO + return S_FALSE; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_keepAliveInterval(long pkeepAliveInterval) + { + if(pkeepAliveInterval && pkeepAliveInterval < 10) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_keepAliveInternal, pkeepAliveInterval); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_keepAliveInterval(long * pkeepAliveInterval) const + { + return Outer()->GetProperty(Outer()->m_keepAliveInternal, pkeepAliveInterval); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_shutdownTimeout(long pshutdownTimeout) + { + if(pshutdownTimeout >= 600) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_shutdownTimeout, pshutdownTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_shutdownTimeout(long * pshutdownTimeout) const + { + return Outer()->GetProperty(Outer()->m_shutdownTimeout, pshutdownTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_overallConnectionTimeout(long poverallConnectionTimeout) + { + if(poverallConnectionTimeout < 0 || poverallConnectionTimeout >= 600) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_overallConnectionTimeout, poverallConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_overallConnectionTimeout(long * poverallConnectionTimeout) const + { + return Outer()->GetProperty(Outer()->m_overallConnectionTimeout, poverallConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_singleConnectionTimeout(long psingleConnectionTimeout) + { + if(psingleConnectionTimeout >= 600) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_singleConnectionTimeout, psingleConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_singleConnectionTimeout(long * psingleConnectionTimeout) const + { + return Outer()->GetProperty(Outer()->m_singleConnectionTimeout, psingleConnectionTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardType(long pkeyboardType) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardType(long * pkeyboardType) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardSubType(long pkeyboardSubType) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardSubType(long * pkeyboardSubType) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_KeyboardFunctionKey(long pkeyboardFunctionKey) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_KeyboardFunctionKey(long * pkeyboardFunctionKey) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_WinceFixedPalette(long pwinceFixedPalette) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_WinceFixedPalette(long * pwinceFixedPalette) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectToServerConsole(VARIANT_BOOL pConnectToConsole) + { + return Outer()->SetProperty(Outer()->m_ConnectToServerConsole, pConnectToConsole); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_ConnectToServerConsole(VARIANT_BOOL * pConnectToConsole) const + { + return Outer()->GetProperty(Outer()->m_ConnectToServerConsole, pConnectToConsole); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapPersistence(long pbitmapPersistence) + { + return put_BitmapPeristence(pbitmapPersistence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapPersistence(long * pbitmapPersistence) const + { + return get_BitmapPeristence(pbitmapPersistence); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_MinutesToIdleTimeout(long pminutesToIdleTimeout) + { + if(pminutesToIdleTimeout > 240) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_MinutesToIdleTimeout, pminutesToIdleTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_MinutesToIdleTimeout(long * pminutesToIdleTimeout) const + { + return Outer()->GetProperty(Outer()->m_MinutesToIdleTimeout, pminutesToIdleTimeout); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_SmartSizing(VARIANT_BOOL pfSmartSizing) + { + return Outer()->SetProperty(Outer()->m_SmartSizing, pfSmartSizing); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_SmartSizing(VARIANT_BOOL * pfSmartSizing) const + { + return Outer()->GetProperty(Outer()->m_SmartSizing, pfSmartSizing); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrLocalPrintingDocName(BSTR pLocalPrintingDocName) + { + return Outer()->SetProperty(Outer()->m_RdpdrLocalPrintingDocName, pLocalPrintingDocName); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrLocalPrintingDocName(BSTR * pLocalPrintingDocName) const + { + return Outer()->GetProperty(Outer()->m_RdpdrLocalPrintingDocName, pLocalPrintingDocName); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipCleanTempDirString(BSTR clipCleanTempDirString) + { + return Outer()->SetProperty(Outer()->m_RdpdrClipCleanTempDirString, clipCleanTempDirString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipCleanTempDirString(BSTR * clipCleanTempDirString) const + { + return Outer()->GetProperty(Outer()->m_RdpdrClipCleanTempDirString, clipCleanTempDirString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RdpdrClipPasteInfoString(BSTR clipPasteInfoString) + { + return Outer()->SetProperty(Outer()->m_RdpdrClipPasteInfoString, clipPasteInfoString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RdpdrClipPasteInfoString(BSTR * clipPasteInfoString) const + { + return Outer()->GetProperty(Outer()->m_RdpdrClipPasteInfoString, clipPasteInfoString); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ClearTextPassword(BSTR rhs) + { + return Outer()->put_ClearTextPassword(rhs); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_DisplayConnectionBar(VARIANT_BOOL pDisplayConnectionBar) + { + if(!pDisplayConnectionBar && Outer()->IsSafeForScripting()) + return E_FAIL; + + return Outer()->SetProperty(Outer()->m_DisplayConnectionBar, pDisplayConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_DisplayConnectionBar(VARIANT_BOOL * pDisplayConnectionBar) const + { + return Outer()->GetProperty(Outer()->m_DisplayConnectionBar, pDisplayConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PinConnectionBar(VARIANT_BOOL pPinConnectionBar) + { + if(Outer()->IsSafeForScripting()) + return E_NOTIMPL; + + return Outer()->SetProperty(Outer()->m_PinConnectionBar, pPinConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PinConnectionBar(VARIANT_BOOL * pPinConnectionBar) const + { + return Outer()->GetProperty(Outer()->m_PinConnectionBar, pPinConnectionBar); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_GrabFocusOnConnect(VARIANT_BOOL pfGrabFocusOnConnect) + { + return Outer()->SetProperty(Outer()->m_GrabFocusOnConnect, pfGrabFocusOnConnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_GrabFocusOnConnect(VARIANT_BOOL * pfGrabFocusOnConnect) const + { + return Outer()->GetProperty(Outer()->m_GrabFocusOnConnect, pfGrabFocusOnConnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_LoadBalanceInfo(BSTR pLBInfo) + { + return Outer()->SetProperty(Outer()->m_LoadBalanceInfo, pLBInfo); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_LoadBalanceInfo(BSTR * pLBInfo) const + { + return Outer()->GetProperty(Outer()->m_LoadBalanceInfo, pLBInfo); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectDrives(VARIANT_BOOL pRedirectDrives) + { + return Outer()->SetProperty(Outer()->m_RedirectDrives, pRedirectDrives); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectDrives(VARIANT_BOOL * pRedirectDrives) const + { + return Outer()->GetProperty(Outer()->m_RedirectDrives, pRedirectDrives); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPrinters(VARIANT_BOOL pRedirectPrinters) + { + return Outer()->SetProperty(Outer()->m_RedirectPrinters, pRedirectPrinters); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPrinters(VARIANT_BOOL * pRedirectPrinters) const + { + return Outer()->GetProperty(Outer()->m_RedirectPrinters, pRedirectPrinters); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectPorts(VARIANT_BOOL pRedirectPorts) + { + return Outer()->SetProperty(Outer()->m_RedirectPorts, pRedirectPorts); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectPorts(VARIANT_BOOL * pRedirectPorts) const + { + return Outer()->GetProperty(Outer()->m_RedirectPorts, pRedirectPorts); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_RedirectSmartCards(VARIANT_BOOL pRedirectSmartCards) + { + return Outer()->SetProperty(Outer()->m_RedirectSmartCards, pRedirectSmartCards); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_RedirectSmartCards(VARIANT_BOOL * pRedirectSmartCards) const + { + return Outer()->GetProperty(Outer()->m_RedirectSmartCards, pRedirectSmartCards); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache16BppSize(long pBitmapVirtualCache16BppSize) + { + if(pBitmapVirtualCache16BppSize < 0 || pBitmapVirtualCache16BppSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapVirtualCache16BppSize, pBitmapVirtualCache16BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache16BppSize(long * pBitmapVirtualCache16BppSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapVirtualCache16BppSize, pBitmapVirtualCache16BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_BitmapVirtualCache24BppSize(long pBitmapVirtualCache24BppSize) + { + if(pBitmapVirtualCache24BppSize < 0 || pBitmapVirtualCache24BppSize > 32) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_BitmapVirtualCache24BppSize, pBitmapVirtualCache24BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_BitmapVirtualCache24BppSize(long * pBitmapVirtualCache24BppSize) const + { + return Outer()->GetProperty(Outer()->m_BitmapVirtualCache24BppSize, pBitmapVirtualCache24BppSize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_PerformanceFlags(long pDisableList) + { + return Outer()->SetProperty(Outer()->m_PerformanceFlags, pDisableList); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_PerformanceFlags(long * pDisableList) const + { + return Outer()->GetProperty(Outer()->m_PerformanceFlags, pDisableList); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_ConnectWithEndpoint(VARIANT * rhs) + { + // TBD? the Microsoft client implements this, but what does it mean? + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::put_NotifyTSPublicKey(VARIANT_BOOL pfNotify) + { + return Outer()->SetProperty(Outer()->m_NotifyTSPublicKey, pfNotify); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings::get_NotifyTSPublicKey(VARIANT_BOOL * pfNotify) const + { + return Outer()->GetProperty(Outer()->m_NotifyTSPublicKey, pfNotify); + } + + /* IMsRdpClientAdvancedSettings2 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_CanAutoReconnect(VARIANT_BOOL * pfCanAutoReconnect) const + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_EnableAutoReconnect(VARIANT_BOOL pfEnableAutoReconnect) + { + return Outer()->SetProperty(Outer()->m_EnableAutoReconnect, pfEnableAutoReconnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_EnableAutoReconnect(VARIANT_BOOL * pfEnableAutoReconnect) const + { + return Outer()->GetProperty(Outer()->m_EnableAutoReconnect, pfEnableAutoReconnect); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::put_MaxReconnectAttempts(long pMaxReconnectAttempts) + { + if(pMaxReconnectAttempts < 0 || pMaxReconnectAttempts > 200) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_MaxReconnectAttempts, pMaxReconnectAttempts); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings2::get_MaxReconnectAttempts(long * pMaxReconnectAttempts) const + { + return Outer()->GetProperty(Outer()->m_MaxReconnectAttempts, pMaxReconnectAttempts); + } + + /* IMsRdpClientAdvancedSettings3 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowMinimizeButton(VARIANT_BOOL pfShowMinimize) + { + return Outer()->SetProperty(Outer()->m_ConnectionBarShowMinimizeButton, pfShowMinimize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowMinimizeButton(VARIANT_BOOL * pfShowMinimize) const + { + return Outer()->GetProperty(Outer()->m_ConnectionBarShowMinimizeButton, pfShowMinimize); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::put_ConnectionBarShowRestoreButton(VARIANT_BOOL pfShowRestore) + { + return Outer()->SetProperty(Outer()->m_ConnectionBarShowRestoreButton, pfShowRestore); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings3::get_ConnectionBarShowRestoreButton(VARIANT_BOOL * pfShowRestore) const + { + return Outer()->GetProperty(Outer()->m_ConnectionBarShowRestoreButton, pfShowRestore); + } + + /* IMsRdpClientAdvancedSettings4 */ + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::put_AuthenticationLevel(unsigned int puiAuthLevel) + { + // TODO: this isn't implemented in rdesktop yet... + return Outer()->SetProperty(Outer()->m_AuthenticationLevel, puiAuthLevel); + } + + virtual STDMETHODIMP IMsRdpClientAdvancedSettings4::get_AuthenticationLevel(unsigned int * puiAuthLevel) const + { + return Outer()->GetProperty(Outer()->m_AuthenticationLevel, puiAuthLevel); + } + } + m_advancedSettings; + + template HRESULT GetAdvancedSettings(Interface ** ppAdvSettings) + { + addRef(); + *ppAdvSettings = &m_advancedSettings; + return S_OK; + } + + /* Secured settings wrapper */ + friend class SecuredSettings; + + class SecuredSettings SEALED_: public MSTSCLib::IMsRdpClientSecuredSettings + { + private: + RdpClient * Outer() + { + return InnerToOuter(this); + } + + const RdpClient * Outer() const + { + return InnerToOuter(this); + } + + /* IDispatch type information */ + ITypeInfo * m_dispTypeInfo; + + HRESULT LoadDispTypeInfo() + { + if(m_dispTypeInfo) + return S_OK; + + HRESULT hr = Outer()->LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + assert(MSTSCLib::IID_IMsRdpClientSecuredSettings == MSTSCLib_Redist::IID_IMsRdpClientSecuredSettings); + + hr = Outer()->m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClientSecuredSettings, &m_dispTypeInfo); + + if(FAILED(hr)) + return hr; + + assert(m_dispTypeInfo); + return S_OK; + } + + HRESULT AcquireDispTypeInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + m_dispTypeInfo->AddRef(); + *ppTI = m_dispTypeInfo; + return S_OK; + } + + public: + ~SecuredSettings() + { + if(m_dispTypeInfo) + m_dispTypeInfo->Release(); + } + + /* IUnknown */ + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + using namespace MSTSCLib; + + if + ( + riid == IID_IUnknown || + riid == IID_IDispatch || + riid == IID_IMsTscSecuredSettings || + riid == IID_IMsRdpClientSecuredSettings + ) + { + *ppvObject = this; + Outer()->addRef(); + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return Outer()->addRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return Outer()->release(); + } + + /* IDispatch */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + *pctinfo = 1; + return S_OK; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + if(iTInfo != 0) + return DISP_E_BADINDEX; + + return AcquireDispTypeInfo(ppTInfo); + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId); + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + return m_dispTypeInfo->Invoke + ( + static_cast(this), + dispIdMember, + wFlags, + pDispParams, + pVarResult, + pExcepInfo, + puArgErr + ); + } + + /* IMsTscSecuredSettings */ + virtual STDMETHODIMP IMsTscSecuredSettings::put_StartProgram(BSTR pStartProgram) + { + return Outer()->SetProperty(Outer()->m_StartProgram, pStartProgram); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::get_StartProgram(BSTR * pStartProgram) const + { + return Outer()->GetProperty(Outer()->m_StartProgram, pStartProgram); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::put_WorkDir(BSTR pWorkDir) + { + return Outer()->SetProperty(Outer()->m_WorkDir, pWorkDir); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::get_WorkDir(BSTR * pWorkDir) const + { + return Outer()->GetProperty(Outer()->m_WorkDir, pWorkDir); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::put_FullScreen(long pfFullScreen) + { + return Outer()->put_FullScreen(!!pfFullScreen); + } + + virtual STDMETHODIMP IMsTscSecuredSettings::get_FullScreen(long * pfFullScreen) const + { + return Outer()->GetProperty(Outer()->m_FullScreen, pfFullScreen); + } + + /* IMsRdpClientSecuredSettings */ + virtual STDMETHODIMP IMsRdpClientSecuredSettings::put_KeyboardHookMode(long pkeyboardHookMode) + { + if(pkeyboardHookMode < 0 || pkeyboardHookMode > 2) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_KeyboardHookMode, pkeyboardHookMode); + } + + virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_KeyboardHookMode(long * pkeyboardHookMode) const + { + return Outer()->GetProperty(Outer()->m_KeyboardHookMode, pkeyboardHookMode); + } + + virtual STDMETHODIMP IMsRdpClientSecuredSettings::put_AudioRedirectionMode(long pAudioRedirectionMode) + { + if(pAudioRedirectionMode < 0 || pAudioRedirectionMode > 2) + return E_INVALIDARG; + + return Outer()->SetProperty(Outer()->m_AudioRedirectionMode, pAudioRedirectionMode); + } + + virtual STDMETHODIMP IMsRdpClientSecuredSettings::get_AudioRedirectionMode(long * pAudioRedirectionMode) const + { + return Outer()->GetProperty(Outer()->m_AudioRedirectionMode, pAudioRedirectionMode); + } + } + m_securedSettings; + + template HRESULT GetSecuredSettings(Interface ** ppSecuredSettings) + { + if(!m_SecuredSettingsEnabled) + return E_FAIL; + + addRef(); + *ppSecuredSettings = &m_securedSettings; + return S_OK; + } + + /* Type library loading */ + HRESULT LoadTypeLibrary() + { + if(m_typeLib) + return S_OK; + + // Get the DLL name of the ActiveX control + WCHAR szPath[MAX_PATH + 1]; + DWORD cchPathLen = GetModuleFileNameW(GetCurrentModule(), szPath, ARRAYSIZE(szPath) - 1); + + if(cchPathLen == 0) + return HRESULT_FROM_WIN32(GetLastError()); + + if(cchPathLen > ((ARRAYSIZE(szPath) - 1) - 2)) + return E_FAIL; + + // Append the resource id of the type library + assert(m_typeLibIndex < 10); + + szPath[cchPathLen + 0] = L'\\'; + szPath[cchPathLen + 1] = static_cast(L'0' + m_typeLibIndex); + szPath[cchPathLen + 2] = 0; + + // Load the type library + HRESULT hr = LoadTypeLibEx(szPath, REGKIND_NONE, &m_typeLib); + + if(FAILED(hr)) + return hr; + + assert(m_typeLib); + return S_OK; + } + + /* IDispatch type information */ + HRESULT LoadDispTypeInfo() + { + if(m_dispTypeInfo) + return S_OK; + + HRESULT hr = LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + assert(MSTSCLib::IID_IMsRdpClient4 == MSTSCLib_Redist::IID_IMsRdpClient4); + + hr = m_typeLib->GetTypeInfoOfGuid(MSTSCLib::IID_IMsRdpClient4, &m_dispTypeInfo); + + if(FAILED(hr)) + return hr; + + assert(m_dispTypeInfo); + return S_OK; + } + + HRESULT AcquireDispTypeInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + m_dispTypeInfo->AddRef(); + *ppTI = m_dispTypeInfo; + return S_OK; + } + +public: + /* Helpers for our various embedded children */ + static RdpClient * InnerToOuter(RdpClientInner * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_inner); + } + + static RdpClient * InnerToOuter(AdvancedSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_advancedSettings); + } + + static RdpClient * InnerToOuter(SecuredSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_securedSettings); + } + + static RdpClient * InnerToOuter(RDPCLIENT * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_protocolState); + } + + static const RdpClient * InnerToOuter(const RdpClientInner * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_inner); + } + + static const RdpClient * InnerToOuter(const AdvancedSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_advancedSettings); + } + + static const RdpClient * InnerToOuter(const SecuredSettings * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_securedSettings); + } + + static const RdpClient * InnerToOuter(const RDPCLIENT * innerThis) + { + return CONTAINING_RECORD(innerThis, RdpClient, m_protocolState); + } + + RdpClientUI * GetUI() const + { + assert(m_clientUI); + return m_clientUI; + } + + /* Glue for rdesktop-core */ +public: + static bool OnPublicKey(RDPCLIENT * This, unsigned char * key, unsigned int key_size) + { + return InnerToOuter(This)->OnPublicKey(key, key_size); + } + + static void OnLogon(RDPCLIENT * This) + { + return InnerToOuter(This)->OnLogon(); + } + + static bool OnRedirect + ( + RDPCLIENT * This, + uint32 flags, + uint32 server_len, + wchar_t * server, + uint32 cookie_len, + char * cookie, + uint32 username_len, + wchar_t * username, + uint32 domain_len, + wchar_t * domain, + uint32 password_len, + wchar_t * password + ) + { + return InnerToOuter(This)->OnRedirect + ( + flags, + server_len, + server, + cookie_len, + cookie, + username_len, + username, + domain_len, + domain, + password_len, + password + ); + } + +private: + bool OnPublicKey(unsigned char * key, unsigned int key_size) + { + HRESULT hr = FireReceivedTSPublicKey(key, key_size); + + if(FAILED(hr)) + { + m_protocolState.disconnect_reason = 262; + return false; + } + + return hr == S_OK; + } + + void OnLogon() + { + m_loggedIn = true; + FireLoginComplete(); + } + + bool OnRedirect + ( + uint32 flags, + uint32 server_len, + wchar_t * server, + uint32 cookie_len, + char * cookie, + uint32 username_len, + wchar_t * username, + uint32 domain_len, + wchar_t * domain, + uint32 password_len, + wchar_t * password + ) + { + assert(m_Connected); + assert(!InsideApartment()); + assert(IsWindow(m_controlWindow)); + + RedirectArguments redirectArgs = + { + flags, + server_len, + server, + cookie_len, + cookie, + username_len, + username, + domain_len, + domain, + password_len, + password + }; + + return SendMessage(m_controlWindow, RDPC_WM_REDIRECT, 0, reinterpret_cast(&redirectArgs)) == 0; + } + +private: + static DWORD WINAPI ProtocolLoopThreadProc(LPVOID lpParam) + { + static_cast(lpParam)->ProtocolLoop(); + return 0; + } + + static VOID CALLBACK ConnectionTimerAPC(LPVOID, DWORD, DWORD) + { + } + + // FIXME: various potential inconsistencies due to lack of detailed documentation of expected semantics + void ProtocolLoop() + { + HANDLE waitingReconnection = NULL; + + // Retrieve the local hostname to be passed to the server + WCHAR hostname[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD hostnameLen = ARRAYSIZE(hostname); + + if(!GetComputerNameW(hostname, &hostnameLen)) + hostname[0] = 0; + + // Set some connection flags + uint32 flags = RDP_LOGON_NORMAL; + + if(m_Compress) + flags |= RDP_LOGON_COMPRESSION | RDP_LOGON_COMPRESSION2; + + if(m_AudioRedirectionMode == 1) + flags |= RDP_LOGON_LEAVE_AUDIO; + + if(m_ClearTextPassword) + flags |= RDP_LOGON_AUTO; + + // Notify the container that the connection process is beginning now + FireConnecting(); + + // Set the overall connection timer, if a timeout is set + // BUGBUG: the timeout semantics are ambiguous and have been most probably misinterpreted + HANDLE overallConnectionTimer = NULL; + LARGE_INTEGER overallTimeout; + + if(m_overallConnectionTimeout) + { + overallTimeout.QuadPart = - ((m_overallConnectionTimeout * 1000 * 1000 * 1000) / 100); + + overallConnectionTimer = CreateWaitableTimer(NULL, FALSE, NULL); + + if(overallConnectionTimer == NULL) + goto l_Disconnect; + } + + if(overallConnectionTimer) + SetWaitableTimer(overallConnectionTimer, &overallTimeout, 0, ConnectionTimerAPC, NULL, FALSE); + + // Initial connection + BOOL disconnected = rdp_connect + ( + &m_protocolState, + m_Server, + flags, + m_UserName, + m_Domain, + m_ClearTextPassword, + m_StartProgram, + m_WorkDir, + hostname, + m_LoadBalanceInfo + ); + + if(overallConnectionTimer) + CancelWaitableTimer(overallConnectionTimer); + + if(disconnected) + goto l_Disconnect; + + // TODO: set the disconnect reason for every instance in which we abort the loop + for(;;) + { + BOOL deactivated = False; + uint32 extendedDisconnectReason = 0; + + m_actuallyConnected = true; + + // Notify the container of the successful connection + FireConnected(); + + // Main protocol loop + m_loggedIn = false; + rdp_main_loop(&m_protocolState, &deactivated, &extendedDisconnectReason); + rdp_disconnect(&m_protocolState); + + m_actuallyConnected = false; + + // Redirection + // BUGBUG: redirection is very messy and probably this implementation is not "canonical" + if(m_protocolState.redirect) + { + m_protocolState.redirect = False; + rdp_reset_state(&m_protocolState); + + // TODO: reset connection parameters + // This has to be done in the main thread, so use SendMessage on the control window + + flags |= RDP_LOGON_AUTO; + + // retry + continue; + } + + // Disconnection + m_ExtendedDisconnectReason = static_cast(extendedDisconnectReason); + + // Clean disconnection + if(deactivated) + break; + + BOOL success; + + long autoReconnections = 0; + long totalReconnections = 0; + + // Reconnection + // BUGBUG: reconnection semantics may not be entirely accurate + do + { + ++ totalReconnections; + + // ask the container whether we should reconnect + long reconnectMode = FireAutoReconnecting(m_protocolState.disconnect_reason, totalReconnections); + + // do not reconnect + if(reconnectMode == MSTSCLib::autoReconnectContinueStop) + goto l_Disconnect; + + // the container will reconnect or abort manually + if(reconnectMode == MSTSCLib::autoReconnectContinueManual) + { + assert(!m_reconnectAborted); + assert(m_protocolThreadWaitingReconnection == NULL); + + if(waitingReconnection == NULL) + { + waitingReconnection = CreateEvent(NULL, TRUE, FALSE, NULL); + + if(waitingReconnection == NULL) + // TODO: fatal error + goto l_Disconnect; + } + + m_protocolThreadWaitingReconnection = waitingReconnection; + + WaitForSingleObject(waitingReconnection, INFINITE); + + m_protocolThreadWaitingReconnection = NULL; + + if(m_reconnectAborted) + { + // FIXME? do we set the disconnection status here? + goto l_Disconnect; + } + } + // reconnect automatically + else + { + // automatic reconnection is disabled + if(m_EnableAutoReconnect) + break; + + // too many consecutive automatic reconnections + if(autoReconnections == m_MaxReconnectAttempts) + break; + + ++ autoReconnections; + } + + if(overallConnectionTimer) + SetWaitableTimer(overallConnectionTimer, &overallTimeout, 0, ConnectionTimerAPC, NULL, FALSE); + + // Reconnection + success = rdp_reconnect + ( + &m_protocolState, + m_Server, + flags, + m_UserName, + m_Domain, + m_ClearTextPassword, + m_StartProgram, + m_WorkDir, + hostname, + m_LoadBalanceInfo + ); + + if(overallConnectionTimer) + CancelWaitableTimer(overallConnectionTimer); + } + while(!success); + } + +l_Disconnect: + // Disconnected + FireDisconnected(m_protocolState.disconnect_reason); + + if(overallConnectionTimer) + CloseHandle(overallConnectionTimer); + } + + void JoinProtocolThread() + { + assert(m_protocolThread); + WaitForSingleObject(m_protocolThread, INFINITE); + CloseHandle(m_protocolThread); + m_protocolThread = NULL; + } + + void TerminateProtocolThread() + { + assert(m_protocolThread); + + // wake it up if it's waiting for a manual reconnection + if(m_protocolThreadWaitingReconnection) + { + assert(!m_reconnectAborted); + m_reconnectAborted = true; + SetEvent(m_protocolThreadWaitingReconnection); + } + // otherwise, attempt to interrupt any current blocking operation + else + { + // shutdown(m_protocolState.tcp.sock, SD_BOTH); // TBD: maybe in the future? + QueueUserAPC(DisconnectAPC, m_protocolThread, 0); + } + + assert(m_protocolThreadWaitingReconnection == NULL); + } + + void PerformDisconnect(long reason) + { + assert(InsideApartment()); + assert(m_Connected); + + // TODO: notify virtual channels + + // TODO: do any other disconnection work here... + + // Put the control in the disconnected state + m_Connected = false; + m_loggedIn = false; + + // Notify the container + VARIANTARG arg = { }; + + arg.vt = VT_I4; + arg.lVal = reason; + + FireEventInsideApartment(4, &arg, 1); + } + +public: + /* Startup initialization */ + static BOOL Startup() + { + if(!RdpClientUI::Startup()) + return FALSE; + + WNDCLASSEX wcex = { sizeof(wcex) }; + + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = ControlWindowProc; + wcex.hInstance = GetCurrentModule(); + wcex.hCursor = LoadCursor(NULL, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + wcex.lpszClassName = TEXT("MissTosca_Control"); + + return RegisterClassEx(&wcex);; + } + + static void Shutdown() + { + UnregisterClass(TEXT("MissTosca_Control"), GetCurrentModule()); + } + + /* Class factory */ + static HRESULT CreateInstance(REFCLSID rclsid, unsigned libIndex, IUnknown * punkOuter, REFIID riid, void ** ppObj) + { + RdpClient * obj = new RdpClient(rclsid, libIndex, punkOuter); + + if(obj == NULL) + return E_OUTOFMEMORY; + + HRESULT hr = obj->m_inner.QueryInterface(riid, ppObj); + + if(FAILED(hr)) + { + delete obj; + return hr; + } + + assert(obj->m_refCount == 1); + assert(*ppObj != NULL); + + return S_OK; + } + +private: + /* Connection point enumerator */ + class CEnumConnectionPoints: public IEnumConnectionPoints + { + private: + LONG m_refCount; + IConnectionPoint * m_cp; + bool m_done; + + public: + CEnumConnectionPoints(IConnectionPoint * cp): m_refCount(1), m_cp(cp), m_done(false) + { + assert(m_cp); + m_cp->AddRef(); + } + + CEnumConnectionPoints(const CEnumConnectionPoints& ecp): m_refCount(1), m_cp(ecp.m_cp), m_done(ecp.m_done) + { + assert(m_cp); + m_cp->AddRef(); + } + + ~CEnumConnectionPoints() + { + assert(m_cp); + m_cp->Release(); + } + + virtual STDMETHODIMP QueryInterface(REFIID riid, void ** ppvObject) + { + if(riid == IID_IUnknown || riid == IID_IEnumConnectionPoints) + { + *ppvObject = this; + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) AddRef() + { + return InterlockedIncrement(&m_refCount); + } + + virtual STDMETHODIMP_(ULONG) Release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual STDMETHODIMP Next(ULONG cConnections, LPCONNECTIONPOINT * ppCP, ULONG * pcFetched) + { + if(cConnections == 0 || m_done) + return S_FALSE; + + m_done = true; + m_cp->AddRef(); + *ppCP = m_cp; + *pcFetched = 1; + + return S_OK; + } + + virtual STDMETHODIMP Skip(ULONG cConnections) + { + if(cConnections == 0) + return S_OK; + + if(cConnections == 1 && !m_done) + { + m_done = true; + return S_OK; + } + + assert(cConnections > 1 || m_done); + + return S_FALSE; + } + + virtual STDMETHODIMP Reset() + { + m_done = false; + return S_OK; + } + + virtual STDMETHODIMP Clone(IEnumConnectionPoints ** ppEnum) + { + if(ppEnum == NULL) + return E_POINTER; + + *ppEnum = new CEnumConnectionPoints(*this); + + if(*ppEnum == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + }; + + /* Pay no attention, ActiveX glue... */ + LRESULT ControlWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) + { + switch(uMsg) + { + case WM_SIZE: + { + // TODO: resize UI + } + + return 0; + + case WM_PAINT: + { + LPCWSTR text = NULL; + + if(!m_Connected) + text = m_DisconnectedText; + else if(m_actuallyConnected) + text = m_ConnectedStatusText; + else + text = m_ConnectingText; + + RECT clientRect; + GetClientRect(m_controlWindow, &clientRect); + + PAINTSTRUCT ps; + HDC hdc = BeginPaint(m_controlWindow, &ps); + + SetBkColor(hdc, GetSysColor(COLOR_WINDOW)); + SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT)); + SelectObject(hdc, GetStockObject(SYSTEM_FONT)); + + RECT textRect = clientRect; + + DrawTextW + ( + hdc, + text, + -1, + &textRect, + DT_CENTER | DT_EDITCONTROL | DT_END_ELLIPSIS | DT_NOPREFIX | DT_WORDBREAK | DT_CALCRECT + ); + + if(textRect.right > clientRect.right) + textRect.right = clientRect.right; + + if(textRect.bottom > clientRect.bottom) + textRect.bottom = clientRect.bottom; + + textRect.left = (clientRect.right - textRect.right) / 2; + textRect.right += textRect.left; + textRect.top = (clientRect.bottom - textRect.bottom) / 2; + textRect.bottom += textRect.top; + + DrawTextW + ( + hdc, + text, + -1, + &textRect, + DT_CENTER | DT_EDITCONTROL | DT_END_ELLIPSIS | DT_NOPREFIX | DT_WORDBREAK + ); + + EndPaint(m_controlWindow, &ps); + } + + return 0; + + default: + { + LRESULT result; + + if(HandleEvent(uMsg, wParam, lParam, result)) + return result; + } + + break; + } + + return DefWindowProc(m_controlWindow, uMsg, wParam, lParam); + } + + static LRESULT CALLBACK ControlWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) + { + if(uMsg == WM_CREATE) + { + SetWindowLongPtr + ( + hwnd, + GWLP_USERDATA, + (LONG_PTR)reinterpret_cast(lParam)->lpCreateParams + ); + } + + RdpClient * Self = reinterpret_cast(GetWindowLongPtr(hwnd, GWLP_USERDATA)); + assert(Self); + + return Self->ControlWindowProc(uMsg, wParam, lParam); + } + + HRESULT CreateControlWindow(HWND hwndParent) + { + m_controlWindow = CreateWindow + ( + TEXT("MissTosca_Control"), + NULL, + WS_CHILD | WS_CLIPCHILDREN, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + hwndParent, + NULL, + GetCurrentModule(), + this + ); + + if(m_controlWindow == NULL) + return HRESULT_FROM_WIN32(GetLastError()); + + m_UIParentWindowHandle = m_controlWindow; + return S_OK; + } + + HRESULT DestroyControlWindow() + { + if(m_controlWindow == NULL) + return S_FALSE; + + HWND controlWindow = NULL; + std::swap(controlWindow, m_controlWindow); + DestroyWindow(controlWindow); + return S_OK; + } + + HRESULT Activate(LONG iVerb, IOleClientSite * pActiveSite, HWND hwndParent, LPCRECT lprcPosRect) + { + if(pActiveSite == NULL) + pActiveSite = m_clientSite; + + if(pActiveSite == NULL) + return E_FAIL; + + // TODO: store this until we are closed or deactivated + IOleInPlaceSite * site; + + HRESULT hr = pActiveSite->QueryInterface(&site); + + if(FAILED(hr)) + return hr; + + IOleInPlaceFrame * frame = NULL; + IOleInPlaceUIWindow * uiWindow = NULL; + + for(;;) + { + hr = site->CanInPlaceActivate(); + + if(hr == S_FALSE) + hr = E_FAIL; + + if(FAILED(hr)) + break; + + site->OnInPlaceActivate(); + + if(hwndParent == NULL) + { + hr = site->GetWindow(&hwndParent); + + if(FAILED(hr)) + break; + } + + RECT rcPos; + RECT rcClip; + OLEINPLACEFRAMEINFO frameInfo = { sizeof(frameInfo) }; + + site->GetWindowContext(&frame, &uiWindow, &rcPos, &rcClip, &frameInfo); + + if(lprcPosRect == NULL) + lprcPosRect = &rcPos; + + if(m_controlWindow) + ShowWindow(m_controlWindow, SW_SHOW); + else + { + hr = CreateControlWindow(hwndParent); + + if(FAILED(hr)) + break; + } + + SetObjectRects(lprcPosRect, &rcClip); + + // UI activation + if((iVerb == OLEIVERB_PRIMARY || iVerb == OLEIVERB_UIACTIVATE) && !m_uiActive) + { + m_uiActive = true; + + hr = site->OnUIActivate(); + + if(FAILED(hr)) + break; + + SetWindowPos + ( + m_controlWindow, + NULL, + lprcPosRect->left, + lprcPosRect->top, + lprcPosRect->right - lprcPosRect->left, + lprcPosRect->bottom - lprcPosRect->top, + SWP_SHOWWINDOW + ); + + if(frame) + { + frame->SetActiveObject(this, NULL); + frame->SetBorderSpace(NULL); + } + + if(uiWindow) + { + uiWindow->SetActiveObject(this, NULL); + uiWindow->SetBorderSpace(NULL); + } + } + + break; + } + + if(uiWindow) + uiWindow->Release(); + + if(frame) + frame->Release(); + + site->Release(); + + if(SUCCEEDED(hr)) + pActiveSite->ShowObject(); + + return hr; + } + +public: + /* IUnknown */ + /* + NOTE: this is the delegating implementation, to support aggregation. The actual + implementation is RdpClientInner, above + */ + virtual STDMETHODIMP IUnknown::QueryInterface(REFIID riid, void ** ppvObject) + { + return m_punkOuter->QueryInterface(riid, ppvObject); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::AddRef() + { + return m_punkOuter->AddRef(); + } + + virtual STDMETHODIMP_(ULONG) IUnknown::Release() + { + return m_punkOuter->Release(); + } + + /* IDispatch */ + virtual STDMETHODIMP IDispatch::GetTypeInfoCount(UINT * pctinfo) + { + *pctinfo = 1; + return S_OK; + } + + virtual STDMETHODIMP IDispatch::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo ** ppTInfo) + { + if(iTInfo != 0) + return DISP_E_BADINDEX; + + return AcquireDispTypeInfo(ppTInfo); + } + + virtual STDMETHODIMP IDispatch::GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId); + } + + virtual STDMETHODIMP IDispatch::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pDispParams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr) + { + HRESULT hr = LoadDispTypeInfo(); + + if(FAILED(hr)) + return hr; + + return m_dispTypeInfo->Invoke + ( + static_cast(this), + dispIdMember, + wFlags, + pDispParams, + pVarResult, + pExcepInfo, + puArgErr + ); + } + + /* IConnectionPoint */ + virtual STDMETHODIMP GetConnectionInterface(IID * pIID) + { + if(pIID == NULL) + return E_POINTER; + + *pIID = MSTSCLib::DIID_IMsTscAxEvents; + return S_OK; + } + + virtual STDMETHODIMP GetConnectionPointContainer(IConnectionPointContainer ** ppCPC) + { + if(ppCPC == NULL) + return E_POINTER; + + addRef(); + *ppCPC = this; + return S_OK; + } + + virtual STDMETHODIMP Advise(IUnknown * pUnkSink, DWORD * pdwCookie) + { + MSTSCLib::IMsTscAxEvents * sink; + + if(FAILED(pUnkSink->QueryInterface(&sink))) + return CONNECT_E_CANNOTCONNECT; + + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + DWORD cookie = 0; + + if(m_EventSinksCount) + { + bool found = false; + + for(size_t i = 0; i < m_EventSinksCount; ++ i) + { + found = (sinks[i] == NULL); + + if(found) + { + cookie = static_cast(i); + break; + } + } + + if(!found) + { + MSTSCLib::IMsTscAxEvents ** newSinks = new MSTSCLib::IMsTscAxEvents *[m_EventSinksCount + 1]; + + if(newSinks == NULL) + { + sink->Release(); + return E_OUTOFMEMORY; + } + + std::copy(sinks, sinks + m_EventSinksCount, newSinks); + + m_EventSinks = newSinks; + sinks = newSinks; + + cookie = static_cast(m_EventSinksCount); + } + } + + sinks[cookie] = sink; + *pdwCookie = cookie; + + return S_OK; + } + + virtual STDMETHODIMP Unadvise(DWORD dwCookie) + { + MSTSCLib::IMsTscAxEvents ** sinks = GetSinks(); + + if(dwCookie >= m_EventSinksCount || sinks[dwCookie] == NULL) + return CONNECT_E_NOCONNECTION; + + sinks[dwCookie]->Release(); + sinks[dwCookie] = NULL; + + // BUGBUG: the array currently grows forever. Trim it whenever possible + + return S_OK; + } + + virtual STDMETHODIMP EnumConnections(IEnumConnections ** ppEnum) + { + // I see no real value in this + return E_NOTIMPL; + } + + /* IConnectionPointContainer */ + virtual STDMETHODIMP IConnectionPointContainer::EnumConnectionPoints(IEnumConnectionPoints ** ppEnum) + { + *ppEnum = new CEnumConnectionPoints(this); + + if(*ppEnum == NULL) + return E_OUTOFMEMORY; + + return S_OK; + } + + virtual STDMETHODIMP IConnectionPointContainer::FindConnectionPoint(REFIID riid, IConnectionPoint ** ppCP) + { + if(riid != MSTSCLib::DIID_IMsTscAxEvents) + return CONNECT_E_NOCONNECTION; + + addRef(); + *ppCP = this; + + return S_OK; + } + + /* IDataObject */ // 0/9 + virtual STDMETHODIMP IDataObject::GetData(FORMATETC * pformatetcIn, STGMEDIUM * pmedium) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::GetDataHere(FORMATETC * pformatetc, STGMEDIUM * pmedium) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::QueryGetData(FORMATETC * pformatetc) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::GetCanonicalFormatEtc(FORMATETC * pformatectIn, FORMATETC * pformatetcOut) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::SetData(FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC ** ppenumFormatEtc) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::DAdvise(FORMATETC * pformatetc, DWORD advf, IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::DUnadvise(DWORD dwConnection) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IDataObject::EnumDAdvise(IEnumSTATDATA ** ppenumAdvise) + { + return E_NOTIMPL; + } + + /* IObjectSafety */ + virtual STDMETHODIMP IObjectSafety::GetInterfaceSafetyOptions(REFIID riid, DWORD * pdwSupportedOptions, DWORD * pdwEnabledOptions) + { + if(pdwSupportedOptions == NULL || pdwEnabledOptions == NULL) + return E_POINTER; + + if(riid != IID_IDispatch) + return E_NOINTERFACE; + + *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER; + *pdwEnabledOptions = m_SafetyOptions; + return S_OK; + } + + virtual STDMETHODIMP IObjectSafety::SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions) + { + if(riid != IID_IDispatch) + return E_NOINTERFACE; + + m_SafetyOptions = dwEnabledOptions & (dwOptionSetMask & INTERFACESAFE_FOR_UNTRUSTED_CALLER); + return S_OK; + } + + /* IOleControl */ // 3/4 + virtual STDMETHODIMP IOleControl::GetControlInfo(CONTROLINFO * pCI) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleControl::OnMnemonic(MSG * pMsg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleControl::OnAmbientPropertyChange(DISPID dispID) + { + return S_OK; + } + + virtual STDMETHODIMP IOleControl::FreezeEvents(BOOL bFreeze) + { + if(bFreeze) + InterlockedIncrement(&m_freezeEvents); + else if(InterlockedDecrement(&m_freezeEvents) == 0) + UnfreezeEvents(); + + return S_OK; + } + + /* IOleInPlaceActiveObject */ // 3/5 + virtual STDMETHODIMP IOleInPlaceActiveObject::TranslateAccelerator(LPMSG lpmsg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::OnFrameWindowActivate(BOOL fActivate) + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::OnDocWindowActivate(BOOL fActivate) + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow * pUIWindow, BOOL fFrameWindow) + { + return S_OK; + } + + virtual STDMETHODIMP IOleInPlaceActiveObject::EnableModeless(BOOL fEnable) + { + return S_OK; + } + + /* IOleInPlaceObject */ // 1/4 + virtual STDMETHODIMP IOleInPlaceObject::InPlaceDeactivate() + { + // TODO: UIDeactivate, destroy window, inplacesite->OnInPlaceDeactivate + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceObject::UIDeactivate() + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceObject::SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect) + { + if(m_controlWindow == NULL) + return E_FAIL; + + MoveWindow + ( + m_controlWindow, + lprcPosRect->left, + lprcPosRect->top, + lprcPosRect->right - lprcPosRect->left, + lprcPosRect->bottom - lprcPosRect->top, + TRUE + ); + + SetWindowRgn(m_controlWindow, CreateRectRgnIndirect(lprcClipRect), TRUE); + + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleInPlaceObject::ReactivateAndUndo() + { + return E_NOTIMPL; + } + + /* IOleObject */ // 18/21 + virtual STDMETHODIMP IOleObject::SetClientSite(IOleClientSite * pClientSite) + { + if(m_clientSite) + m_clientSite->Release(); + + m_clientSite = pClientSite; + + if(m_clientSite) + m_clientSite->AddRef(); + + return S_OK; + } + + virtual STDMETHODIMP IOleObject::GetClientSite(IOleClientSite ** ppClientSite) + { + if(ppClientSite == NULL) + return E_POINTER; + + if(m_clientSite) + m_clientSite->AddRef(); + + *ppClientSite = m_clientSite; + return S_OK; + } + + virtual STDMETHODIMP IOleObject::SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) + { + return S_OK; + } + + virtual STDMETHODIMP IOleObject::Close(DWORD dwSaveOption) + { + // TODO: deactivate, destroy window, release in-place site, release advise sink + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IOleObject::SetMoniker(DWORD dwWhichMoniker, IMoniker * pmk) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::InitFromData(IDataObject * pDataObject, BOOL fCreation, DWORD dwReserved) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::GetClipboardData(DWORD dwReserved, IDataObject ** ppDataObject) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite * pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) + { + HRESULT hr; + + switch(iVerb) + { + case OLEIVERB_PRIMARY: + case OLEIVERB_SHOW: + case OLEIVERB_UIACTIVATE: + case OLEIVERB_INPLACEACTIVATE: + hr = S_OK; + break; + + default: + if(iVerb > 0) + hr = OLEOBJ_S_INVALIDVERB; + else + hr = E_NOTIMPL; + } + + if(FAILED(hr)) + return hr; + + HRESULT hrActivate = Activate(iVerb, pActiveSite, hwndParent, lprcPosRect); + + if(FAILED(hrActivate)) + hr = hrActivate; + + return hr; + } + + virtual STDMETHODIMP IOleObject::EnumVerbs(IEnumOLEVERB ** ppEnumOleVerb) + { + return OleRegEnumVerbs(m_classId, ppEnumOleVerb); + } + + virtual STDMETHODIMP IOleObject::Update() + { + return S_OK; + } + + virtual STDMETHODIMP IOleObject::IsUpToDate() + { + return S_OK; + } + + virtual STDMETHODIMP IOleObject::GetUserClassID(CLSID * pClsid) + { + *pClsid = m_classId; + return S_OK; + } + + virtual STDMETHODIMP IOleObject::GetUserType(DWORD dwFormOfType, LPOLESTR * pszUserType) + { + return OleRegGetUserType(m_classId, dwFormOfType, pszUserType); + } + + virtual STDMETHODIMP IOleObject::SetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + // TODO: resize + return E_NOTIMPL; + } + + virtual STDMETHODIMP IOleObject::GetExtent(DWORD dwDrawAspect, SIZEL * psizel) + { + // TODO: return size + return E_NOTIMPL; + } + + HRESULT NeedAdviseHolder() + { + if(m_adviseHolder) + return S_OK; + + return CreateOleAdviseHolder(&m_adviseHolder); + } + + virtual STDMETHODIMP IOleObject::Advise(IAdviseSink * pAdvSink, DWORD * pdwConnection) + { + HRESULT hr = NeedAdviseHolder(); + + if(FAILED(hr)) + return hr; + + return m_adviseHolder->Advise(pAdvSink, pdwConnection); + } + + virtual STDMETHODIMP IOleObject::Unadvise(DWORD dwConnection) + { + HRESULT hr = NeedAdviseHolder(); + + if(FAILED(hr)) + return hr; + + return m_adviseHolder->Unadvise(dwConnection); + } + + virtual STDMETHODIMP IOleObject::EnumAdvise(IEnumSTATDATA ** ppenumAdvise) + { + HRESULT hr = NeedAdviseHolder(); + + if(FAILED(hr)) + return hr; + + return m_adviseHolder->EnumAdvise(ppenumAdvise); + } + + virtual STDMETHODIMP IOleObject::GetMiscStatus(DWORD dwAspect, DWORD * pdwStatus) + { + return OleRegGetMiscStatus(m_classId, dwAspect, pdwStatus); + } + + virtual STDMETHODIMP IOleObject::SetColorScheme(LOGPALETTE * pLogpal) + { + return E_NOTIMPL; + } + + /* IOleWindow */ + virtual STDMETHODIMP IOleWindow::GetWindow(HWND * phwnd) + { + if(phwnd == NULL) + return E_POINTER; + + if(m_controlWindow == NULL) + return E_FAIL; + + *phwnd = m_controlWindow; + return S_OK; + } + + virtual STDMETHODIMP IOleWindow::ContextSensitiveHelp(BOOL fEnterMode) + { + return E_NOTIMPL; + } + + /* IPersist */ + virtual STDMETHODIMP IPersist::GetClassID(CLSID * pClassID) + { + *pClassID = m_classId; + return S_OK; + } + + /* IPersistPropertyBag */ // 0/3 + virtual STDMETHODIMP IPersistPropertyBag::InitNew() + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistPropertyBag::Load(IPropertyBag * pPropBag, IErrorLog * pErrorLog) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistPropertyBag::Save(IPropertyBag * pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties) + { + return E_NOTIMPL; + } + + /* IPersistStorage */ // 0/6 + virtual STDMETHODIMP IPersistStorage::IsDirty() + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::InitNew(IStorage * pStg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::Load(IStorage * pStg) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::Save(IStorage * pStgSave, BOOL fSameAsLoad) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::SaveCompleted(IStorage * pStgNew) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStorage::HandsOffStorage() + { + return E_NOTIMPL; + } + + /* IPersistStreamInit */ // 0/5 + virtual STDMETHODIMP IPersistStreamInit::IsDirty() + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::Load(LPSTREAM pStm) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::Save(LPSTREAM pStm, BOOL fClearDirty) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::GetSizeMax(ULARGE_INTEGER * pCbSize) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IPersistStreamInit::InitNew() + { + return E_NOTIMPL; + } + + /* IProvideClassInfo */ + virtual STDMETHODIMP IProvideClassInfo::GetClassInfo(ITypeInfo ** ppTI) + { + HRESULT hr = LoadTypeLibrary(); + + if(FAILED(hr)) + return hr; + + return m_typeLib->GetTypeInfoOfGuid(m_classId, ppTI); + } + + /* IProvideClassInfo2 */ + virtual STDMETHODIMP IProvideClassInfo2::GetGUID(DWORD dwGuidKind, GUID * pGUID) + { + if(dwGuidKind != GUIDKIND_DEFAULT_SOURCE_DISP_IID) + return E_INVALIDARG; + + *pGUID = MSTSCLib::DIID_IMsTscAxEvents; + return S_OK; + } + + /* IQuickActivate */ + virtual STDMETHODIMP IQuickActivate::QuickActivate(QACONTAINER * pQaContainer, QACONTROL * pQaControl) + { + if(pQaContainer == NULL || pQaControl == NULL) + return E_POINTER; + + if(pQaContainer->cbSize < sizeof(*pQaContainer) || pQaControl->cbSize < sizeof(*pQaControl)) + return E_INVALIDARG; + + ULONG cb = pQaControl->cbSize; + ZeroMemory(pQaControl, cb); + pQaControl->cbSize = cb; + + SetClientSite(pQaContainer->pClientSite); + + if(pQaContainer->pAdviseSink) + SetAdvise(DVASPECT_CONTENT, 0, pQaContainer->pAdviseSink); + + if(pQaContainer->pUnkEventSink) + Advise(pQaContainer->pUnkEventSink, &pQaControl->dwEventCookie); + + GetMiscStatus(DVASPECT_CONTENT, &pQaControl->dwMiscStatus); + + return E_NOTIMPL; + } + + virtual STDMETHODIMP IQuickActivate::SetContentExtent(LPSIZEL pSizel) + { + return SetExtent(DVASPECT_CONTENT, pSizel); + } + + virtual STDMETHODIMP IQuickActivate::GetContentExtent(LPSIZEL pSizel) + { + return GetExtent(DVASPECT_CONTENT, pSizel); + } + + /* IViewObject */ // 3/6 + virtual STDMETHODIMP IViewObject::Draw(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE * pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IViewObject::GetColorSet(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE * ptd, HDC hicTargetDev, LOGPALETTE ** ppColorSet) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IViewObject::Freeze(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DWORD * pdwFreeze) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IViewObject::Unfreeze(DWORD dwFreeze) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IViewObject::SetAdvise(DWORD aspects, DWORD advf, IAdviseSink * pAdvSink) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IViewObject::GetAdvise(DWORD * pAspects, DWORD * pAdvf, IAdviseSink ** ppAdvSink) + { + return E_NOTIMPL; // TODO + } + + /* IViewObject2 */ // 0/1 + virtual STDMETHODIMP IViewObject2::GetExtent(DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE * ptd, LPSIZEL lpsizel) + { + return E_NOTIMPL; // TODO + } + + /* IMsTscAx */ // 23/30 + virtual STDMETHODIMP IMsTscAx::put_Server(BSTR pServer) + { + // FIXME: convert the hostname to Punycode, not the ANSI codepage + return SetProperty(m_Server, pServer); + } + + virtual STDMETHODIMP IMsTscAx::get_Server(BSTR * pServer) const + { + return GetProperty(m_Server, pServer); + } + + virtual STDMETHODIMP IMsTscAx::put_Domain(BSTR pDomain) + { + return SetProperty(m_Domain, pDomain); + } + + virtual STDMETHODIMP IMsTscAx::get_Domain(BSTR * pDomain) const + { + return GetProperty(m_Domain, pDomain); + } + + virtual STDMETHODIMP IMsTscAx::put_UserName(BSTR pUserName) + { + return SetProperty(m_UserName, pUserName); + } + + virtual STDMETHODIMP IMsTscAx::get_UserName(BSTR * pUserName) const + { + return GetProperty(m_UserName, pUserName); + } + + virtual STDMETHODIMP IMsTscAx::put_DisconnectedText(BSTR pDisconnectedText) + { + return SetProperty(m_DisconnectedText, pDisconnectedText); + } + + virtual STDMETHODIMP IMsTscAx::get_DisconnectedText(BSTR * pDisconnectedText) const + { + return GetProperty(m_DisconnectedText, pDisconnectedText); + } + + virtual STDMETHODIMP IMsTscAx::put_ConnectingText(BSTR pConnectingText) + { + return SetProperty(m_ConnectingText, pConnectingText); + } + + virtual STDMETHODIMP IMsTscAx::get_ConnectingText(BSTR * pConnectingText) const + { + return GetProperty(m_ConnectingText, pConnectingText); + } + + virtual STDMETHODIMP IMsTscAx::get_Connected(short * pIsConnected) const + { + return GetProperty(m_Connected, pIsConnected); + } + + virtual STDMETHODIMP IMsTscAx::put_DesktopWidth(long pVal) + { + if(pVal < 200 || pVal > 1600) + return E_INVALIDARG; + + return SetProperty(m_DesktopWidth, pVal); + } + + virtual STDMETHODIMP IMsTscAx::get_DesktopWidth(long * pVal) const + { + return GetProperty(m_DesktopWidth, pVal); + } + + virtual STDMETHODIMP IMsTscAx::put_DesktopHeight(long pVal) + { + if(pVal < 200 || pVal > 1200) + return E_INVALIDARG; + + return SetProperty(m_DesktopHeight, pVal); + } + + virtual STDMETHODIMP IMsTscAx::get_DesktopHeight(long * pVal) const + { + return GetProperty(m_DesktopHeight, pVal); + } + + virtual STDMETHODIMP IMsTscAx::put_StartConnected(long pfStartConnected) + { + return SetProperty(m_StartConnected, pfStartConnected); + } + + virtual STDMETHODIMP IMsTscAx::get_StartConnected(long * pfStartConnected) const + { + return GetProperty(m_StartConnected, pfStartConnected); + } + + virtual STDMETHODIMP IMsTscAx::get_HorizontalScrollBarVisible(long * pfHScrollVisible) const + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAx::get_VerticalScrollBarVisible(long * pfVScrollVisible) const + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAx::put_FullScreenTitle(BSTR rhs) + { + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAx::get_CipherStrength(long * pCipherStrength) const + { + if(pCipherStrength == NULL) + return E_INVALIDARG; + + *pCipherStrength = 128; // BUGBUG: a later version may change this. Use a compile-time constant + return S_OK; + } + + virtual STDMETHODIMP IMsTscAx::get_Version(BSTR * pVersion) const + { + if(pVersion == NULL) + return E_INVALIDARG; + + BSTR version = SysAllocString(L"5.2.3790.1830"); // BUGBUG: don't use hardcoded string + + if(version == NULL) + return E_OUTOFMEMORY; + + *pVersion = version; + return S_OK; + } + + virtual STDMETHODIMP IMsTscAx::get_SecuredSettingsEnabled(long * pSecuredSettingsEnabled) const + { + // TODO: initialize m_SecuredSettingsEnabled as soon as we have an OLE client site + return GetProperty(m_SecuredSettingsEnabled, pSecuredSettingsEnabled); + } + + virtual STDMETHODIMP IMsTscAx::get_SecuredSettings(MSTSCLib::IMsTscSecuredSettings ** ppSecuredSettings) const + { + return GetSecuredSettings(ppSecuredSettings); + } + + virtual STDMETHODIMP IMsTscAx::get_AdvancedSettings(MSTSCLib::IMsTscAdvancedSettings ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + virtual STDMETHODIMP IMsTscAx::get_Debugger(MSTSCLib::IMsTscDebug ** ppDebugger) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscAx::Connect() + { + if(m_Connected) + { + // Protocol thread waiting for a manual reconnection: wake it up + if(m_protocolThreadWaitingReconnection) + { + SetEvent(m_protocolThreadWaitingReconnection); + return S_OK; + } + + return E_FAIL; + } + + m_Connected = true; + + HRESULT hr; + + if(m_controlWindow == NULL) + { + hr = CreateControlWindow(NULL); + + if(FAILED(hr)) + return hr; + } + + for(;;) + { + // TODO: initialize plugin DLLs/channels + + m_clientUI = new RdpClientUI(); + + if(m_clientUI == NULL) + { + hr = E_OUTOFMEMORY; + break; + } + + m_clientUI->Initialize(m_controlWindow); + + m_protocolState.licence_username = BstrToLpsz(m_UserName); + + if(m_protocolState.licence_username == NULL) + { + hr = E_OUTOFMEMORY; + break; + } + + DWORD dwSize = ARRAYSIZE(m_protocolState.licence_hostname); + + if(!GetComputerNameA(m_protocolState.licence_hostname, &dwSize)) + { + hr = HRESULT_FROM_WIN32(GetLastError()); + break; + } + + // Keyboard layout + // BUGBUG: not too sure about the semantics + long keyboardLayout = -1; + WCHAR * endPtr = NULL; + + if(m_KeyboardLayoutString) + keyboardLayout = wcstol(m_KeyboardLayoutString, &endPtr, 0); + + // no keyboard layout specified or invalid keyboard layout: use current keyboard layout + if(endPtr == NULL || *endPtr == 0 || keyboardLayout == -1) + keyboardLayout = PtrToLong(GetKeyboardLayout(0)); // FIXME? use LOWORD()? + + m_protocolState.keylayout = keyboardLayout; + + // in case of failure, assume English (US) + if(m_protocolState.keylayout == 0) + m_protocolState.keylayout = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); + + // Physical keyboard information + m_protocolState.keyboard_type = GetKeyboardType(0); + m_protocolState.keyboard_subtype = GetKeyboardType(1); + m_protocolState.keyboard_functionkeys = GetKeyboardType(2); + + // in case of failure, assume an IBM Enhanced keyboard with 12 function keys + if(m_protocolState.keyboard_type == 0 || m_protocolState.keyboard_functionkeys == 0) + { + m_protocolState.keyboard_type = 4; + m_protocolState.keyboard_subtype = 0; + m_protocolState.keyboard_functionkeys = 12; + } + + // More initialization + m_protocolState.width = m_DesktopWidth; + m_protocolState.height = m_DesktopHeight; + m_protocolState.server_depth = m_ColorDepth; + m_protocolState.bitmap_compression = m_Compress ? TRUE : FALSE; + m_protocolState.bitmap_cache = True; // TODO + m_protocolState.bitmap_cache_persist_enable = False; // TODO + m_protocolState.bitmap_cache_precache = True; // FIXME? + m_protocolState.encryption = m_EncryptionEnabled ? TRUE : FALSE; // TBD: detect automatically + m_protocolState.packet_encryption = m_EncryptionEnabled ? TRUE : FALSE; + m_protocolState.desktop_save = True; // FIXME? tie to bitmap cache setting? + m_protocolState.polygon_ellipse_orders = True; + m_protocolState.use_rdp5 = True; // TBD: detect automatically + m_protocolState.console_session = m_ConnectToServerConsole ? TRUE : FALSE; + m_protocolState.rdp5_performanceflags = m_PerformanceFlags; + m_protocolState.tcp_port_rdp = m_RDPPort; + m_protocolState.rdp.current_status = 1; + + // TODO: cache tuning based on the provided parameters + + m_protocolState.cache.bmpcache_lru[0] = -1; + m_protocolState.cache.bmpcache_lru[1] = -1; + m_protocolState.cache.bmpcache_lru[2] = -1; + m_protocolState.cache.bmpcache_mru[0] = -1; + m_protocolState.cache.bmpcache_mru[1] = -1; + m_protocolState.cache.bmpcache_mru[2] = -1; + + DWORD dwIgnore; + m_protocolThread = CreateThread(NULL, 0, ProtocolLoopThreadProc, this, 0, &dwIgnore); + + hr = S_OK; + break; + } + + if(FAILED(hr)) + m_Connected = false; + + return hr; + } + + virtual STDMETHODIMP IMsTscAx::Disconnect() + { + if(!m_Connected) + return E_FAIL; + + // Terminate the protocol thread. On exit, it will fire the Disconnected event + TerminateProtocolThread(); + return S_OK; + } + + virtual STDMETHODIMP IMsTscAx::CreateVirtualChannels(BSTR newVal) + { + UINT strLength = SysStringLen(newVal); + + if(strLength < 1 || strLength > 300) + return E_INVALIDARG; + + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsTscAx::SendOnVirtualChannel(BSTR chanName, BSTR ChanData) + { + return E_NOTIMPL; // TODO + } + + /* IMsRdpClient */ // 6/10 + virtual STDMETHODIMP IMsRdpClient::put_ColorDepth(long pcolorDepth) + { + switch(pcolorDepth) + { + case 8: + case 15: + case 16: + case 24: + case 32: + break; + + default: + return E_INVALIDARG; + } + + return SetProperty(m_ColorDepth, pcolorDepth); + } + + virtual STDMETHODIMP IMsRdpClient::get_ColorDepth(long * pcolorDepth) const + { + return GetProperty(m_ColorDepth, pcolorDepth); + } + + virtual STDMETHODIMP IMsRdpClient::get_AdvancedSettings2(MSTSCLib::IMsRdpClientAdvancedSettings ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + virtual STDMETHODIMP IMsRdpClient::get_SecuredSettings2(MSTSCLib::IMsRdpClientSecuredSettings ** ppSecuredSettings) const + { + return GetSecuredSettings(ppSecuredSettings); + } + + virtual STDMETHODIMP IMsRdpClient::get_ExtendedDisconnectReason(MSTSCLib::ExtendedDisconnectReasonCode * pExtendedDisconnectReason) const + { + return GetProperty(m_ExtendedDisconnectReason, pExtendedDisconnectReason); + } + + virtual STDMETHODIMP IMsRdpClient::put_FullScreen(VARIANT_BOOL pfFullScreen) + { + if(!m_Connected) + return E_FAIL; + + if(pfFullScreen && !m_SecuredSettingsEnabled) + return E_FAIL; + + // TODO + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsRdpClient::get_FullScreen(VARIANT_BOOL * pfFullScreen) const + { + return GetProperty(m_FullScreen, pfFullScreen); + } + + virtual STDMETHODIMP IMsRdpClient::SetVirtualChannelOptions(BSTR chanName, long chanOptions) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClient::GetVirtualChannelOptions(BSTR chanName, long * pChanOptions) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClient::RequestClose(MSTSCLib::ControlCloseStatus * pCloseStatus) + { + if(pCloseStatus == NULL) + return E_POINTER; + + if(!m_Connected) + { + *pCloseStatus = MSTSCLib::controlCloseCanProceed; + return S_OK; + } + + *pCloseStatus = MSTSCLib::controlCloseWaitForEvents; + + if(!PostMessage(m_controlWindow, RDPC_WM_REQUEST_CLOSE, 0, 0)) + return HRESULT_FROM_WIN32(GetLastError()); + + return S_OK; + } + + /* IMsRdpClient2 */ + virtual STDMETHODIMP IMsRdpClient2::get_AdvancedSettings3(MSTSCLib::IMsRdpClientAdvancedSettings2 ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + virtual STDMETHODIMP IMsRdpClient2::put_ConnectedStatusText(BSTR pConnectedStatusText) + { + return SetProperty(m_ConnectedStatusText, pConnectedStatusText); + } + + virtual STDMETHODIMP IMsRdpClient2::get_ConnectedStatusText(BSTR * pConnectedStatusText) const + { + return GetProperty(m_ConnectedStatusText, pConnectedStatusText); + } + + /* IMsRdpClient3 */ + virtual STDMETHODIMP IMsRdpClient3::get_AdvancedSettings4(MSTSCLib::IMsRdpClientAdvancedSettings3 ** ppAdvSettings) const + { + return GetAdvancedSettings(ppAdvSettings); + } + + /* IMsRdpClient4 */ + virtual STDMETHODIMP IMsRdpClient4::get_AdvancedSettings5(MSTSCLib::IMsRdpClientAdvancedSettings4 ** ppAdvSettings5) const + { + return GetAdvancedSettings(ppAdvSettings5); + } + + /* IMsTscNonScriptable */ + virtual STDMETHODIMP IMsTscNonScriptable::put_ClearTextPassword(BSTR rhs) + { + return SetProperty(m_ClearTextPassword, rhs); + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_PortablePassword(BSTR pPortablePass) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_PortablePassword(BSTR * pPortablePass) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_PortableSalt(BSTR pPortableSalt) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_PortableSalt(BSTR * pPortableSalt) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_BinaryPassword(BSTR pBinaryPassword) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_BinaryPassword(BSTR * pBinaryPassword) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::put_BinarySalt(BSTR pSalt) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::get_BinarySalt(BSTR * pSalt) const + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP IMsTscNonScriptable::ResetPassword() + { + return SetProperty(m_ClearTextPassword, NULL); + } + + /* IMsRdpClientNonScriptable */ // 0/2 + virtual STDMETHODIMP IMsRdpClientNonScriptable::NotifyRedirectDeviceChange(MSTSCLib::UINT_PTR wParam, MSTSCLib::LONG_PTR lParam) + { + return E_NOTIMPL; // TODO + } + + virtual STDMETHODIMP IMsRdpClientNonScriptable::SendKeys(long numKeys, VARIANT_BOOL * pbArrayKeyUp, long * plKeyData) + { + // NOTE: the keys must be sent in a single, atomic sequence + // TODO: acquire the write lock + return E_NOTIMPL; // TODO + } + + /* IMsRdpClientNonScriptable2 */ + virtual STDMETHODIMP IMsRdpClientNonScriptable2::put_UIParentWindowHandle(HWND phwndUIParentWindowHandle) + { + return SetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle); + } + + virtual STDMETHODIMP IMsRdpClientNonScriptable2::get_UIParentWindowHandle(HWND * phwndUIParentWindowHandle) const + { + return GetProperty(m_UIParentWindowHandle, phwndUIParentWindowHandle); + } +}; + +#pragma warning(pop) + +/* More glue to interface to the rdesktop code */ +extern "C" +{ + +/* Orders */ +/* support routines */ +void ui_begin_update(RDPCLIENT * This) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_BeginUpdate(); +} + +void ui_end_update(RDPCLIENT * This) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_EndUpdate(); +} + +void ui_set_clip(RDPCLIENT * This, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_SetClip(x, y, cx, cy); +} + +void ui_reset_clip(RDPCLIENT * This) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_ResetClip(); +} + +/* blits */ +void ui_destblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_DestBlt(opcode, x, y, cx, cy); +} + +void ui_memblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_MemBlt(opcode, x, y, cx, cy, src, srcx, srcy); +} + +void ui_patblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_PatBlt(opcode, x, y, cx, cy, brush, bgcolour, fgcolour); +} + +void ui_screenblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, int srcx, int srcy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_ScreenBlt(opcode, x, y, cx, cy, srcx, srcy); +} + +void ui_triblt(RDPCLIENT * This, uint8 opcode, int x, int y, int cx, int cy, HBITMAP src, int srcx, int srcy, BRUSH * brush, int bgcolour, int fgcolour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_TriBlt(opcode, x, y, cx, cy, src, srcx, srcy, brush, bgcolour, fgcolour); +} + +void ui_paint_bitmap(RDPCLIENT * This, int x, int y, int cx, int cy, int width, int height, uint8 * data) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_PaintBitmap(x, y, cx, cy, width, height, data); +} + +/* shapes */ +void ui_ellipse(RDPCLIENT * This, uint8 opcode, uint8 fillmode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour, int fgcolour) +{ + // TODO +// RdpClient::InnerToOuter(This)->GetUI()->Display_Ellipse(opcode, fillmode, x, y, cx, cy, brush, bgcolour, fgcolour); +} + +void ui_line(RDPCLIENT * This, uint8 opcode, int startx, int starty, int endx, int endy, PEN * pen) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Line(opcode, startx, starty, endx, endy, pen); +} + +void ui_polygon(RDPCLIENT * This, uint8 opcode, uint8 fillmode, POINT * point, int npoints, BRUSH * brush, int bgcolour, int fgcolour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Polygon(opcode, fillmode, point, npoints, brush, bgcolour, fgcolour); +} + +void ui_polyline(RDPCLIENT * This, uint8 opcode, POINT * points, int npoints, PEN * pen) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Polyline(opcode, points, npoints, pen); +} + +void ui_rect(RDPCLIENT * This, int x, int y, int cx, int cy, int colour) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_Rect(x, y, cx, cy, colour); +} + +/* text */ +void ui_draw_text +( + RDPCLIENT * This, + uint8 font, + uint8 flags, + uint8 opcode, + int mixmode, + int x, + int y, + int clipx, + int clipy, + int clipcx, + int clipcy, + int boxx, + int boxy, + int boxcx, + int boxcy, + BRUSH * brush, + int bgcolour, + int fgcolour, + uint8 * text, + uint8 length +) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_DrawText + ( + font, + flags, + opcode, + mixmode, + x, + y, + clipx, + clipy, + clipcx, + clipcy, + boxx, + boxy, + boxcx, + boxcy, + brush, + bgcolour, + fgcolour, + text, + length + ); +} + +/* desktop save/restore */ +void ui_desktop_save(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_SaveDesktop(offset, x, y, cx, cy); +} + +void ui_desktop_restore(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy) +{ + RdpClient::InnerToOuter(This)->GetUI()->Display_RestoreDesktop(offset, x, y, cx, cy); +} + +/* Resources */ +/* bitmaps */ +HBITMAP ui_create_bitmap(RDPCLIENT * This, int width, int height, uint8 * data) +{ + return win32_create_dib(width, height, This->server_depth, data); +} + +void ui_destroy_bitmap(RDPCLIENT *, HBITMAP bmp) +{ + DeleteObject(bmp); +} + +/* palettes */ +HCOLOURMAP ui_create_colourmap(RDPCLIENT *, COLOURMAP * colours) +{ + return NULL; +} + +void ui_set_colourmap(RDPCLIENT * This, HCOLOURMAP map) +{ + // TODO +} + +/* cursors */ +HCURSOR ui_create_cursor(RDPCLIENT * This, unsigned int x, unsigned int y, int width, int height, uint8 * andmask, uint8 * xormask) +{ + uint8 * andbuf = NULL; + uint8 * xorbuf = NULL; + + uint8 * andbits = win32_convert_scanlines(width, - height, 1, 2, 4, andmask, &andbuf); + uint8 * xorbits = win32_convert_scanlines(width, height, 24, 2, 4, xormask, &xorbuf); + + HBITMAP hbmMask = CreateBitmap(width, height, 1, 1, andbits); + HBITMAP hbmColor = win32_create_dib(width, height, 24, xorbits); + + ICONINFO iconinfo; + iconinfo.fIcon = FALSE; + iconinfo.xHotspot = x; + iconinfo.yHotspot = y; + iconinfo.hbmMask = hbmMask; + iconinfo.hbmColor = hbmColor; + + HICON icon = CreateIconIndirect(&iconinfo); + + if(icon == NULL) + error("CreateIconIndirect %dx%d failed\n", width, height); + + if(andbuf) + delete[] andbuf; + + if(xorbuf) + delete[] xorbuf; + + DeleteObject(hbmMask); + DeleteObject(hbmColor); + + return icon; +} + +void ui_destroy_cursor(RDPCLIENT *, HCURSOR cursor) +{ + DestroyIcon(cursor); +} + +/* glyphs */ +HGLYPH ui_create_glyph(RDPCLIENT * This, int width, int height, const uint8 * data) +{ + uint8 * databuf = NULL; + uint8 * databits = win32_convert_scanlines(width, height, 1, 1, 2, data, &databuf); + + HBITMAP hbm = CreateBitmap(width, height, 1, 1, databits); + + if(databuf) + delete[] databuf; + + const uint8 * p = data; + int stride = alignup(alignup(width, 8) / 8, 1); + +#ifdef _DEBUG + printf("glyph %p\n", hbm); + + for(int i = 0; i < height; ++ i, p += stride) + { + for(int j = 0; j < width; ++ j) + { + int B = p[j / 8]; + int b = 8 - j % 8 - 1; + + if(B & (1 << b)) + fputs("##", stdout); + else + fputs("..", stdout); + } + + fputc('\n', stdout); + } + + fputc('\n', stdout); +#endif + + return hbm; +} + +void ui_destroy_glyph(RDPCLIENT *, HGLYPH glyph) +{ + DeleteObject(glyph); +} + +/* Input window */ +void ui_move_pointer(RDPCLIENT * This, int x, int y) +{ + // TODO +} + +void ui_set_cursor(RDPCLIENT * This, HCURSOR cursor) +{ + // TODO +} + +void ui_set_null_cursor(RDPCLIENT * This) +{ + // TODO +} + +/* Miscellaneous */ +void ui_resize_window(RDPCLIENT * This) +{ +} + +void ui_bell(RDPCLIENT *) +{ + MessageBeep(0); +} + +int ui_select(RDPCLIENT * This, SOCKET rdp_socket) +{ + return SleepEx(0, TRUE) == WAIT_IO_COMPLETION; +} + +/* Events */ +BOOL event_pubkey(RDPCLIENT * This, unsigned char * key, unsigned int key_size) +{ + if(!RdpClient::OnPublicKey(This, key, key_size)) + return FALSE; + else + return TRUE; +} + +void event_logon(RDPCLIENT * This) +{ + RdpClient::OnLogon(This); +} + +BOOL event_redirect(RDPCLIENT * This, uint32 flags, uint32 server_len, wchar_t * server, uint32 cookie_len, char * cookie, uint32 username_len, wchar_t * username, uint32 domain_len, wchar_t * domain, uint32 password_len, wchar_t * password) +{ + if + ( + !RdpClient::OnRedirect + ( + This, + flags, + server_len, + server, + cookie_len, + cookie, + username_len, + username, + domain_len, + domain, + password_len, + password + ) + ) + return FALSE; + else + return TRUE; +} + +} + +class ClassFactory: public IClassFactory +{ +private: + LONG m_refCount; + CLSID m_classId; + unsigned m_libIndex; + +public: + ClassFactory(REFCLSID rclsid, unsigned libIndex): + m_refCount(1), + m_classId(rclsid) + { + lockServer(); + } + + ~ClassFactory() + { + unlockServer(); + } + + virtual STDMETHODIMP QueryInterface(REFIID riid, void ** ppvObject) + { + if(riid == IID_IUnknown || riid == IID_IClassFactory) + { + *ppvObject = this; + return S_OK; + } + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + } + + virtual STDMETHODIMP_(ULONG) AddRef() + { + return InterlockedIncrement(&m_refCount); + } + + virtual STDMETHODIMP_(ULONG) Release() + { + LONG n = InterlockedDecrement(&m_refCount); + + if(n == 0) + delete this; + + return n; + } + + virtual STDMETHODIMP CreateInstance(IUnknown * pUnkOuter, REFIID riid, void ** ppvObject) + { + if(pUnkOuter && riid != IID_IUnknown) + return CLASS_E_NOAGGREGATION; + + return RdpClient::CreateInstance(m_classId, m_libIndex, pUnkOuter, riid, ppvObject); + } + + virtual STDMETHODIMP LockServer(BOOL fLock) + { + if(fLock) + lockServer(); + else + unlockServer(); + + return S_OK; + } +}; + +extern "C" +{ + +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv) +{ + unsigned libindex; + + if + ( + rclsid == MSTSCLib::CLSID_MsTscAx || + rclsid == MSTSCLib::CLSID_MsRdpClient || + rclsid == MSTSCLib::CLSID_MsRdpClient2 || + rclsid == MSTSCLib::CLSID_MsRdpClient3 || + rclsid == MSTSCLib::CLSID_MsRdpClient4 + ) + libindex = 1; + else if + ( + rclsid == MSTSCLib_Redist::CLSID_MsTscAx || + rclsid == MSTSCLib_Redist::CLSID_MsRdpClient || + rclsid == MSTSCLib_Redist::CLSID_MsRdpClient2 || + rclsid == MSTSCLib_Redist::CLSID_MsRdpClient3 // || + // rclsid != MSTSCLib::CLSID_MsRdpClient4 + ) + libindex = 2; + else + return CLASS_E_CLASSNOTAVAILABLE; + + ClassFactory * p = new ClassFactory(rclsid, libindex); + + if(p == NULL) + return E_OUTOFMEMORY; + + HRESULT hr = p->QueryInterface(riid, ppv); + + p->Release(); + + if(FAILED(hr)) + return hr; + + return S_OK; +} + +STDAPI DllCanUnloadNow(void) +{ + return canUnloadServer() ? S_OK : S_FALSE; +} + +STDAPI_(ULONG) DllGetTscCtlVer(void) +{ + // BUGBUG: don't hardcode this + return 0x05020ECE; // 5.2.3790 +} + +DWORD WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved) +{ + assert(hInstance == GetCurrentModule()); + + switch(fdwReason) + { + case DLL_PROCESS_ATTACH: + { + DisableThreadLibraryCalls(hInstance); + + if(!RdpClient::Startup()) + return FALSE; + } + + break; + + case DLL_PROCESS_DETACH: + { + // Process is terminating, no need to clean up + if(lpvReserved) + break; + + RdpClient::Shutdown(); + } + + break; + } + + return TRUE; +} + +} + +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib.idl b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib.idl new file mode 100644 index 00000000000..d1ec277ab57 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib.idl @@ -0,0 +1,561 @@ +[ +#ifdef MSTSCLIB_REDIST_ + uuid(AF586AAE-B62A-420E-B796-294E7EE64C70), +#else + uuid(8C11EFA1-92C3-11D1-BC1E-00C04FA31489), +#endif + version(1.0) +] +library MSTSCLib +{ + importlib("stdole32.tlb"); + + dispinterface IMsTscAxEvents; + + interface IMsTscAx; + interface IMsRdpClient; + interface IMsRdpClient2; + interface IMsRdpClient3; + interface IMsRdpClient4; + + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + interface IMsRdpClientNonScriptable2; + + interface IMsTscAdvancedSettings; + interface IMsRdpClientAdvancedSettings; + interface IMsRdpClientAdvancedSettings2; + interface IMsRdpClientAdvancedSettings3; + interface IMsRdpClientAdvancedSettings4; + + interface IMsTscSecuredSettings; + interface IMsRdpClientSecuredSettings; + + interface IMsTscDebug; + + typedef [public] enum __MIDL___MIDL_itf_mstsax_0275_0001 + { + autoReconnectContinueAutomatic = 0, + autoReconnectContinueStop = 1, + autoReconnectContinueManual = 2 + } + AutoReconnectContinueState; + + typedef [public] enum __MIDL_IMsRdpClient_0001 + { + exDiscReasonNoInfo = 0, + exDiscReasonAPIInitiatedDisconnect = 1, + exDiscReasonAPIInitiatedLogoff = 2, + exDiscReasonServerIdleTimeout = 3, + exDiscReasonServerLogonTimeout = 4, + exDiscReasonReplacedByOtherConnection = 5, + exDiscReasonOutOfMemory = 6, + exDiscReasonServerDeniedConnection = 7, + exDiscReasonServerDeniedConnectionFips = 8, + exDiscReasonLicenseInternal = 256, + exDiscReasonLicenseNoLicenseServer = 257, + exDiscReasonLicenseNoLicense = 258, + exDiscReasonLicenseErrClientMsg = 259, + exDiscReasonLicenseHwidDoesntMatchLicense = 260, + exDiscReasonLicenseErrClientLicense = 261, + exDiscReasonLicenseCantFinishProtocol = 262, + exDiscReasonLicenseClientEndedProtocol = 263, + exDiscReasonLicenseErrClientEncryption = 264, + exDiscReasonLicenseCantUpgradeLicense = 265, + exDiscReasonLicenseNoRemoteConnections = 266, + exDiscReasonProtocolRangeStart = 4096, + exDiscReasonProtocolRangeEnd = 32767 + } + ExtendedDisconnectReasonCode; + + typedef [public] enum __MIDL_IMsRdpClient_0002 + { + controlCloseCanProceed = 0, + controlCloseWaitForEvents = 1 + } + ControlCloseStatus; + + typedef [public] unsigned __int3264 UINT_PTR; + typedef [public] __int3264 LONG_PTR; + + [uuid(336D5562-EFA8-482E-8CB3-C5C0FC7A7DB6)] + dispinterface IMsTscAxEvents + { + properties: + + methods: + [id(0x00000001)] void OnConnecting(); + [id(0x00000002)] void OnConnected(); + [id(0x00000003)] void OnLoginComplete(); + [id(0x00000004)] void OnDisconnected([in] long discReason); + [id(0x00000005)] void OnEnterFullScreenMode(); + [id(0x00000006)] void OnLeaveFullScreenMode(); + [id(0x00000007)] void OnChannelReceivedData([in] BSTR chanName, [in] BSTR data); + [id(0x00000008)] void OnRequestGoFullScreen(); + [id(0x00000009)] void OnRequestLeaveFullScreen(); + [id(0x0000000a)] void OnFatalError([in] long errorCode); + [id(0x0000000b)] void OnWarning([in] long warningCode); + [id(0x0000000c)] void OnRemoteDesktopSizeChange([in] long width, [in] long height); + [id(0x0000000d)] void OnIdleTimeoutNotification(); + [id(0x0000000e)] void OnRequestContainerMinimize(); + [id(0x0000000f)] void OnConfirmClose([out, retval] VARIANT_BOOL * pfAllowClose); + [id(0x00000010)] void OnReceivedTSPublicKey([in] BSTR publicKey, [out, retval] VARIANT_BOOL * pfContinueLogon); + [id(0x00000011)] void OnAutoReconnecting([in] long disconnectReason, [in] long attemptCount, [out, retval] AutoReconnectContinueState * pArcContinueStatus); + [id(0x00000012)] void OnAuthenticationWarningDisplayed(); + [id(0x00000013)] void OnAuthenticationWarningDismissed(); + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(327BB5CD-834E-4400-AEF2-B30E15E5D682), +#else + uuid(8C11EFAE-92C3-11D1-BC1E-00C04FA31489), +#endif + dual, + oleautomation + ] + interface IMsTscAx: IDispatch + { + [id(0x00000001), propput] HRESULT Server([in] BSTR pServer); + [id(0x00000001), propget] HRESULT Server([out, retval] BSTR * pServer); + [id(0x00000002), propput] HRESULT Domain([in] BSTR pDomain); + [id(0x00000002), propget] HRESULT Domain([out, retval] BSTR * pDomain); + [id(0x00000003), propput] HRESULT UserName([in] BSTR pUserName); + [id(0x00000003), propget] HRESULT UserName([out, retval] BSTR * pUserName); + [id(0x00000004), propput] HRESULT DisconnectedText([in] BSTR pDisconnectedText); + [id(0x00000004), propget] HRESULT DisconnectedText([out, retval] BSTR * pDisconnectedText); + [id(0x00000005), propput] HRESULT ConnectingText([in] BSTR pConnectingText); + [id(0x00000005), propget] HRESULT ConnectingText([out, retval] BSTR * pConnectingText); + [id(0x00000006), propget] HRESULT Connected([out, retval] short * pIsConnected); + [id(0x0000000c), propput] HRESULT DesktopWidth([in] long pVal); + [id(0x0000000c), propget] HRESULT DesktopWidth([out, retval] long * pVal); + [id(0x0000000d), propput] HRESULT DesktopHeight([in] long pVal); + [id(0x0000000d), propget] HRESULT DesktopHeight([out, retval] long * pVal); + [id(0x00000010), propput] HRESULT StartConnected([in] long pfStartConnected); + [id(0x00000010), propget] HRESULT StartConnected([out, retval] long * pfStartConnected); + [id(0x00000011), propget] HRESULT HorizontalScrollBarVisible([out, retval] long * pfHScrollVisible); + [id(0x00000012), propget] HRESULT VerticalScrollBarVisible([out, retval] long * pfVScrollVisible); + [id(0x00000013), propput] HRESULT FullScreenTitle([in] BSTR rhs); + [id(0x00000014), propget] HRESULT CipherStrength([out, retval] long * pCipherStrength); + [id(0x00000015), propget] HRESULT Version([out, retval] BSTR * pVersion); + [id(0x00000016), propget] HRESULT SecuredSettingsEnabled([out, retval] long * pSecuredSettingsEnabled); + [id(0x00000061), propget] HRESULT SecuredSettings([out, retval] IMsTscSecuredSettings ** ppSecuredSettings); + [id(0x00000062), propget] HRESULT AdvancedSettings([out, retval] IMsTscAdvancedSettings ** ppAdvSettings); + [id(0x00000063), propget, hidden] HRESULT Debugger([out, retval] IMsTscDebug ** ppDebugger); + [id(0x0000001e)] HRESULT Connect(); + [id(0x0000001f)] HRESULT Disconnect(); + [id(0x00000021)] HRESULT CreateVirtualChannels([in] BSTR newVal); + [id(0x00000022)] HRESULT SendOnVirtualChannel([in] BSTR chanName, [in] BSTR ChanData); + }; + + [ + uuid(92B4A539-7115-4B7C-A5A9-E5D9EFC2780A), + dual, + oleautomation + ] + interface IMsRdpClient: IMsTscAx + { + [id(0x00000064), propput] HRESULT ColorDepth([in] long pcolorDepth); + [id(0x00000064), propget] HRESULT ColorDepth([out, retval] long * pcolorDepth); + [id(0x00000065), propget] HRESULT AdvancedSettings2([out, retval] IMsRdpClientAdvancedSettings ** ppAdvSettings); + [id(0x00000066), propget] HRESULT SecuredSettings2([out, retval] IMsRdpClientSecuredSettings ** ppSecuredSettings); + [id(0x00000067), propget] HRESULT ExtendedDisconnectReason([out, retval] ExtendedDisconnectReasonCode * pExtendedDisconnectReason); + [id(0x00000068), propput] HRESULT FullScreen([in] VARIANT_BOOL pfFullScreen); + [id(0x00000068), propget] HRESULT FullScreen([out, retval] VARIANT_BOOL * pfFullScreen); + [id(0x00000023)] HRESULT SetVirtualChannelOptions([in] BSTR chanName, [in] long chanOptions); + [id(0x00000024)] HRESULT GetVirtualChannelOptions([in] BSTR chanName, [out, retval] long * pChanOptions); + [id(0x00000025)] HRESULT RequestClose([out, retval] ControlCloseStatus * pCloseStatus); + }; + + [ + uuid(E7E17DC4-3B71-4BA7-A8E6-281FFADCA28F), + dual, + oleautomation + ] + interface IMsRdpClient2: IMsRdpClient + { + [id(0x000000c8), propget] HRESULT AdvancedSettings3([out, retval] IMsRdpClientAdvancedSettings2 ** ppAdvSettings); + [id(0x000000c9), propput] HRESULT ConnectedStatusText([in] BSTR pConnectedStatusText); + [id(0x000000c9), propget] HRESULT ConnectedStatusText([out, retval] BSTR * pConnectedStatusText); + }; + + [ + uuid(91B7CBC5-A72E-4FA0-9300-D647D7E897FF), + dual, + oleautomation + ] + interface IMsRdpClient3: IMsRdpClient2 + { + [id(0x0000012c), propget] HRESULT AdvancedSettings4([out, retval] IMsRdpClientAdvancedSettings3 ** ppAdvSettings); + }; + + [ + uuid(095E0738-D97D-488B-B9F6-DD0E8D66C0DE), + dual, + oleautomation + ] + interface IMsRdpClient4: IMsRdpClient3 + { + [id(0x00000190), propget] HRESULT AdvancedSettings5([out, retval] IMsRdpClientAdvancedSettings4 ** ppAdvSettings5); + }; + + [uuid(C1E6743A-41C1-4A74-832A-0DD06C1C7A0E)] + interface IMsTscNonScriptable: IUnknown + { + [propput] HRESULT ClearTextPassword([in] BSTR rhs); + [propput] HRESULT PortablePassword([in] BSTR pPortablePass); + [propget] HRESULT PortablePassword([out, retval] BSTR * pPortablePass); + [propput] HRESULT PortableSalt([in] BSTR pPortableSalt); + [propget] HRESULT PortableSalt([out, retval] BSTR * pPortableSalt); + [propput] HRESULT BinaryPassword([in] BSTR pBinaryPassword); + [propget] HRESULT BinaryPassword([out, retval] BSTR * pBinaryPassword); + [propput] HRESULT BinarySalt([in] BSTR pSalt); + [propget] HRESULT BinarySalt([out, retval] BSTR * pSalt); + HRESULT ResetPassword(); + }; + + [uuid(2F079C4C-87B2-4AFD-97AB-20CDB43038AE)] + interface IMsRdpClientNonScriptable: IMsTscNonScriptable + { + HRESULT NotifyRedirectDeviceChange([in] UINT_PTR wParam, [in] LONG_PTR lParam); + HRESULT SendKeys([in] long numKeys, [in] VARIANT_BOOL * pbArrayKeyUp, [in] long * plKeyData); + }; + + [uuid(17A5E535-4072-4FA4-AF32-C8D0D47345E9)] + interface IMsRdpClientNonScriptable2: IMsRdpClientNonScriptable + { + [propput] HRESULT UIParentWindowHandle([in] HWND phwndUIParentWindowHandle); + [propget] HRESULT UIParentWindowHandle([out, retval] HWND * phwndUIParentWindowHandle); + }; + + [ + uuid(809945CC-4B3B-4A92-A6B0-DBF9B5F2EF2D), + dual, + oleautomation + ] + interface IMsTscAdvancedSettings: IDispatch + { + [id(0x00000079), propput] HRESULT Compress([in] long pcompress); + [id(0x00000079), propget] HRESULT Compress([out, retval] long * pcompress); + [id(0x0000007a), propput] HRESULT BitmapPeristence([in] long pbitmapPeristence); + [id(0x0000007a), propget] HRESULT BitmapPeristence([out, retval] long * pbitmapPeristence); + [id(0x000000a1), propput] HRESULT allowBackgroundInput([in] long pallowBackgroundInput); + [id(0x000000a1), propget] HRESULT allowBackgroundInput([out, retval] long * pallowBackgroundInput); + [id(0x000000a2), propput] HRESULT KeyBoardLayoutStr([in] BSTR rhs); + [id(0x000000aa), propput] HRESULT PluginDlls([in] BSTR rhs); + [id(0x000000ab), propput] HRESULT IconFile([in] BSTR rhs); + [id(0x000000ac), propput] HRESULT IconIndex([in] long rhs); + [id(0x000000ad), propput] HRESULT ContainerHandledFullScreen([in] long pContainerHandledFullScreen); + [id(0x000000ad), propget] HRESULT ContainerHandledFullScreen([out, retval] long * pContainerHandledFullScreen); + [id(0x000000ae), propput] HRESULT DisableRdpdr([in] long pDisableRdpdr); + [id(0x000000ae), propget] HRESULT DisableRdpdr([out, retval] long * pDisableRdpdr); + }; + + [ + uuid(3C65B4AB-12B3-465B-ACD4-B8DAD3BFF9E2), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings: IMsTscAdvancedSettings + { + [id(0x00000065), propput] HRESULT SmoothScroll([in] long psmoothScroll); + [id(0x00000065), propget] HRESULT SmoothScroll([out, retval] long * psmoothScroll); + [id(0x00000066), propput] HRESULT AcceleratorPassthrough([in] long pacceleratorPassthrough); + [id(0x00000066), propget] HRESULT AcceleratorPassthrough([out, retval] long * pacceleratorPassthrough); + [id(0x00000067), propput] HRESULT ShadowBitmap([in] long pshadowBitmap); + [id(0x00000067), propget] HRESULT ShadowBitmap([out, retval] long * pshadowBitmap); + [id(0x00000068), propput] HRESULT TransportType([in] long ptransportType); + [id(0x00000068), propget] HRESULT TransportType([out, retval] long * ptransportType); + [id(0x00000069), propput] HRESULT SasSequence([in] long psasSequence); + [id(0x00000069), propget] HRESULT SasSequence([out, retval] long * psasSequence); + [id(0x0000006a), propput] HRESULT EncryptionEnabled([in] long pencryptionEnabled); + [id(0x0000006a), propget] HRESULT EncryptionEnabled([out, retval] long * pencryptionEnabled); + [id(0x0000006b), propput] HRESULT DedicatedTerminal([in] long pdedicatedTerminal); + [id(0x0000006b), propget] HRESULT DedicatedTerminal([out, retval] long * pdedicatedTerminal); + [id(0x0000006c), propput] HRESULT RDPPort([in] long prdpPort); + [id(0x0000006c), propget] HRESULT RDPPort([out, retval] long * prdpPort); + [id(0x0000006d), propput] HRESULT EnableMouse([in] long penableMouse); + [id(0x0000006d), propget] HRESULT EnableMouse([out, retval] long * penableMouse); + [id(0x0000006e), propput] HRESULT DisableCtrlAltDel([in] long pdisableCtrlAltDel); + [id(0x0000006e), propget] HRESULT DisableCtrlAltDel([out, retval] long * pdisableCtrlAltDel); + [id(0x0000006f), propput] HRESULT EnableWindowsKey([in] long penableWindowsKey); + [id(0x0000006f), propget] HRESULT EnableWindowsKey([out, retval] long * penableWindowsKey); + [id(0x00000070), propput] HRESULT DoubleClickDetect([in] long pdoubleClickDetect); + [id(0x00000070), propget] HRESULT DoubleClickDetect([out, retval] long * pdoubleClickDetect); + [id(0x00000071), propput] HRESULT MaximizeShell([in] long pmaximizeShell); + [id(0x00000071), propget] HRESULT MaximizeShell([out, retval] long * pmaximizeShell); + [id(0x00000072), propput] HRESULT HotKeyFullScreen([in] long photKeyFullScreen); + [id(0x00000072), propget] HRESULT HotKeyFullScreen([out, retval] long * photKeyFullScreen); + [id(0x00000073), propput] HRESULT HotKeyCtrlEsc([in] long photKeyCtrlEsc); + [id(0x00000073), propget] HRESULT HotKeyCtrlEsc([out, retval] long * photKeyCtrlEsc); + [id(0x00000074), propput] HRESULT HotKeyAltEsc([in] long photKeyAltEsc); + [id(0x00000074), propget] HRESULT HotKeyAltEsc([out, retval] long * photKeyAltEsc); + [id(0x00000075), propput] HRESULT HotKeyAltTab([in] long photKeyAltTab); + [id(0x00000075), propget] HRESULT HotKeyAltTab([out, retval] long * photKeyAltTab); + [id(0x00000076), propput] HRESULT HotKeyAltShiftTab([in] long photKeyAltShiftTab); + [id(0x00000076), propget] HRESULT HotKeyAltShiftTab([out, retval] long * photKeyAltShiftTab); + [id(0x00000077), propput] HRESULT HotKeyAltSpace([in] long photKeyAltSpace); + [id(0x00000077), propget] HRESULT HotKeyAltSpace([out, retval] long * photKeyAltSpace); + [id(0x00000078), propput] HRESULT HotKeyCtrlAltDel([in] long photKeyCtrlAltDel); + [id(0x00000078), propget] HRESULT HotKeyCtrlAltDel([out, retval] long * photKeyCtrlAltDel); + [id(0x0000007b), propput] HRESULT orderDrawThreshold([in] long porderDrawThreshold); + [id(0x0000007b), propget] HRESULT orderDrawThreshold([out, retval] long * porderDrawThreshold); + [id(0x0000007c), propput] HRESULT BitmapCacheSize([in] long pbitmapCacheSize); + [id(0x0000007c), propget] HRESULT BitmapCacheSize([out, retval] long * pbitmapCacheSize); + [id(0x0000007d), propput] HRESULT BitmapVirtualCacheSize([in] long pbitmapVirtualCacheSize); + [id(0x0000007d), propget] HRESULT BitmapVirtualCacheSize([out, retval] long * pbitmapVirtualCacheSize); + [id(0x000000af), propput] HRESULT ScaleBitmapCachesByBPP([in] long pbScale); + [id(0x000000af), propget] HRESULT ScaleBitmapCachesByBPP([out, retval] long * pbScale); + [id(0x0000007e), propput] HRESULT NumBitmapCaches([in] long pnumBitmapCaches); + [id(0x0000007e), propget] HRESULT NumBitmapCaches([out, retval] long * pnumBitmapCaches); + [id(0x0000007f), propput] HRESULT CachePersistenceActive([in] long pcachePersistenceActive); + [id(0x0000007f), propget] HRESULT CachePersistenceActive([out, retval] long * pcachePersistenceActive); + [id(0x0000008a), propput] HRESULT PersistCacheDirectory([in] BSTR rhs); + [id(0x0000009c), propput] HRESULT brushSupportLevel([in] long pbrushSupportLevel); + [id(0x0000009c), propget] HRESULT brushSupportLevel([out, retval] long * pbrushSupportLevel); + [id(0x0000009d), propput] HRESULT minInputSendInterval([in] long pminInputSendInterval); + [id(0x0000009d), propget] HRESULT minInputSendInterval([out, retval] long * pminInputSendInterval); + [id(0x0000009e), propput] HRESULT InputEventsAtOnce([in] long pinputEventsAtOnce); + [id(0x0000009e), propget] HRESULT InputEventsAtOnce([out, retval] long * pinputEventsAtOnce); + [id(0x0000009f), propput] HRESULT maxEventCount([in] long pmaxEventCount); + [id(0x0000009f), propget] HRESULT maxEventCount([out, retval] long * pmaxEventCount); + [id(0x000000a0), propput] HRESULT keepAliveInterval([in] long pkeepAliveInterval); + [id(0x000000a0), propget] HRESULT keepAliveInterval([out, retval] long * pkeepAliveInterval); + [id(0x000000a3), propput] HRESULT shutdownTimeout([in] long pshutdownTimeout); + [id(0x000000a3), propget] HRESULT shutdownTimeout([out, retval] long * pshutdownTimeout); + [id(0x000000a4), propput] HRESULT overallConnectionTimeout([in] long poverallConnectionTimeout); + [id(0x000000a4), propget] HRESULT overallConnectionTimeout([out, retval] long * poverallConnectionTimeout); + [id(0x000000a5), propput] HRESULT singleConnectionTimeout([in] long psingleConnectionTimeout); + [id(0x000000a5), propget] HRESULT singleConnectionTimeout([out, retval] long * psingleConnectionTimeout); + [id(0x000000a6), propput] HRESULT KeyboardType([in] long pkeyboardType); + [id(0x000000a6), propget] HRESULT KeyboardType([out, retval] long * pkeyboardType); + [id(0x000000a7), propput] HRESULT KeyboardSubType([in] long pkeyboardSubType); + [id(0x000000a7), propget] HRESULT KeyboardSubType([out, retval] long * pkeyboardSubType); + [id(0x000000a8), propput] HRESULT KeyboardFunctionKey([in] long pkeyboardFunctionKey); + [id(0x000000a8), propget] HRESULT KeyboardFunctionKey([out, retval] long * pkeyboardFunctionKey); + [id(0x000000a9), propput] HRESULT WinceFixedPalette([in] long pwinceFixedPalette); + [id(0x000000a9), propget] HRESULT WinceFixedPalette([out, retval] long * pwinceFixedPalette); + [id(0x000000b2), propput] HRESULT ConnectToServerConsole([in] VARIANT_BOOL pConnectToConsole); + [id(0x000000b2), propget] HRESULT ConnectToServerConsole([out, retval] VARIANT_BOOL * pConnectToConsole); + [id(0x000000b6), propput] HRESULT BitmapPersistence([in] long pbitmapPersistence); + [id(0x000000b6), propget] HRESULT BitmapPersistence([out, retval] long * pbitmapPersistence); + [id(0x000000b7), propput] HRESULT MinutesToIdleTimeout([in] long pminutesToIdleTimeout); + [id(0x000000b7), propget] HRESULT MinutesToIdleTimeout([out, retval] long * pminutesToIdleTimeout); + [id(0x000000b8), propput] HRESULT SmartSizing([in] VARIANT_BOOL pfSmartSizing); + [id(0x000000b8), propget] HRESULT SmartSizing([out, retval] VARIANT_BOOL * pfSmartSizing); + [id(0x000000b9), propput] HRESULT RdpdrLocalPrintingDocName([in] BSTR pLocalPrintingDocName); + [id(0x000000b9), propget] HRESULT RdpdrLocalPrintingDocName([out, retval] BSTR * pLocalPrintingDocName); + [id(0x000000c9), propput] HRESULT RdpdrClipCleanTempDirString([in] BSTR clipCleanTempDirString); + [id(0x000000c9), propget] HRESULT RdpdrClipCleanTempDirString([out, retval] BSTR * clipCleanTempDirString); + [id(0x000000ca), propput] HRESULT RdpdrClipPasteInfoString([in] BSTR clipPasteInfoString); + [id(0x000000ca), propget] HRESULT RdpdrClipPasteInfoString([out, retval] BSTR * clipPasteInfoString); + [id(0x000000ba), propput] HRESULT ClearTextPassword([in] BSTR rhs); + [id(0x000000bb), propput] HRESULT DisplayConnectionBar([in] VARIANT_BOOL pDisplayConnectionBar); + [id(0x000000bb), propget] HRESULT DisplayConnectionBar([out, retval] VARIANT_BOOL * pDisplayConnectionBar); + [id(0x000000bc), propput] HRESULT PinConnectionBar([in] VARIANT_BOOL pPinConnectionBar); + [id(0x000000bc), propget] HRESULT PinConnectionBar([out, retval] VARIANT_BOOL * pPinConnectionBar); + [id(0x000000bd), propput] HRESULT GrabFocusOnConnect([in] VARIANT_BOOL pfGrabFocusOnConnect); + [id(0x000000bd), propget] HRESULT GrabFocusOnConnect([out, retval] VARIANT_BOOL * pfGrabFocusOnConnect); + [id(0x000000be), propput] HRESULT LoadBalanceInfo([in] BSTR pLBInfo); + [id(0x000000be), propget] HRESULT LoadBalanceInfo([out, retval] BSTR * pLBInfo); + [id(0x000000bf), propput] HRESULT RedirectDrives([in] VARIANT_BOOL pRedirectDrives); + [id(0x000000bf), propget] HRESULT RedirectDrives([out, retval] VARIANT_BOOL * pRedirectDrives); + [id(0x000000c0), propput] HRESULT RedirectPrinters([in] VARIANT_BOOL pRedirectPrinters); + [id(0x000000c0), propget] HRESULT RedirectPrinters([out, retval] VARIANT_BOOL * pRedirectPrinters); + [id(0x000000c1), propput] HRESULT RedirectPorts([in] VARIANT_BOOL pRedirectPorts); + [id(0x000000c1), propget] HRESULT RedirectPorts([out, retval] VARIANT_BOOL * pRedirectPorts); + [id(0x000000c2), propput] HRESULT RedirectSmartCards([in] VARIANT_BOOL pRedirectSmartCards); + [id(0x000000c2), propget] HRESULT RedirectSmartCards([out, retval] VARIANT_BOOL * pRedirectSmartCards); + [id(0x000000c3), propput] HRESULT BitmapVirtualCache16BppSize([in] long pBitmapVirtualCache16BppSize); + [id(0x000000c3), propget] HRESULT BitmapVirtualCache16BppSize([out, retval] long * pBitmapVirtualCache16BppSize); + [id(0x000000c4), propput] HRESULT BitmapVirtualCache24BppSize([in] long pBitmapVirtualCache24BppSize); + [id(0x000000c4), propget] HRESULT BitmapVirtualCache24BppSize([out, retval] long * pBitmapVirtualCache24BppSize); + [id(0x000000c8), propput] HRESULT PerformanceFlags([in] long pDisableList); + [id(0x000000c8), propget] HRESULT PerformanceFlags([out, retval] long * pDisableList); + [id(0x000000cb), propput] HRESULT ConnectWithEndpoint([in] VARIANT * rhs); + [id(0x000000cc), propput] HRESULT NotifyTSPublicKey([in] VARIANT_BOOL pfNotify); + [id(0x000000cc), propget] HRESULT NotifyTSPublicKey([out, retval] VARIANT_BOOL * pfNotify); + }; + + [ + uuid(9AC42117-2B76-4320-AA44-0E616AB8437B), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings2: IMsRdpClientAdvancedSettings + { + [id(0x000000cd), propget] HRESULT CanAutoReconnect([out, retval] VARIANT_BOOL * pfCanAutoReconnect); + [id(0x000000ce), propput] HRESULT EnableAutoReconnect([in] VARIANT_BOOL pfEnableAutoReconnect); + [id(0x000000ce), propget] HRESULT EnableAutoReconnect([out, retval] VARIANT_BOOL * pfEnableAutoReconnect); + [id(0x000000cf), propput] HRESULT MaxReconnectAttempts([in] long pMaxReconnectAttempts); + [id(0x000000cf), propget] HRESULT MaxReconnectAttempts([out, retval] long * pMaxReconnectAttempts); + }; + + [ + uuid(19CD856B-C542-4C53-ACEE-F127E3BE1A59), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings3: IMsRdpClientAdvancedSettings2 + { + [id(0x000000d2), propput] HRESULT ConnectionBarShowMinimizeButton([in] VARIANT_BOOL pfShowMinimize); + [id(0x000000d2), propget] HRESULT ConnectionBarShowMinimizeButton([out, retval] VARIANT_BOOL * pfShowMinimize); + [id(0x000000d3), propput] HRESULT ConnectionBarShowRestoreButton([in] VARIANT_BOOL pfShowRestore); + [id(0x000000d3), propget] HRESULT ConnectionBarShowRestoreButton([out, retval] VARIANT_BOOL * pfShowRestore); + }; + + [ + uuid(FBA7F64E-7345-4405-AE50-FA4A763DC0DE), + dual, + oleautomation + ] + interface IMsRdpClientAdvancedSettings4: IMsRdpClientAdvancedSettings3 + { + [id(0x000000d4), propput] HRESULT AuthenticationLevel([in] unsigned int puiAuthLevel); + [id(0x000000d4), propget] HRESULT AuthenticationLevel([out, retval] unsigned int * puiAuthLevel); + }; + + [ + uuid(C9D65442-A0F9-45B2-8F73-D61D2DB8CBB6), + dual, + oleautomation + ] + interface IMsTscSecuredSettings: IDispatch + { + [id(0x00000001), propput] HRESULT StartProgram([in] BSTR pStartProgram); + [id(0x00000001), propget] HRESULT StartProgram([out, retval] BSTR * pStartProgram); + [id(0x00000002), propput] HRESULT WorkDir([in] BSTR pWorkDir); + [id(0x00000002), propget] HRESULT WorkDir([out, retval] BSTR * pWorkDir); + [id(0x00000003), propput] HRESULT FullScreen([in] long pfFullScreen); + [id(0x00000003), propget] HRESULT FullScreen([out, retval] long * pfFullScreen); + }; + + [ + uuid(605BEFCF-39C1-45CC-A811-068FB7BE346D), + dual, + oleautomation + ] + interface IMsRdpClientSecuredSettings: IMsTscSecuredSettings + { + [id(0x00000004), propput] HRESULT KeyboardHookMode([in] long pkeyboardHookMode); + [id(0x00000004), propget] HRESULT KeyboardHookMode([out, retval] long * pkeyboardHookMode); + [id(0x00000005), propput] HRESULT AudioRedirectionMode([in] long pAudioRedirectionMode); + [id(0x00000005), propget] HRESULT AudioRedirectionMode([out, retval] long * pAudioRedirectionMode); + }; + + [ + uuid(209D0EB9-6254-47B1-9033-A98DAE55BB27), + hidden, + dual, + oleautomation + ] + interface IMsTscDebug: IDispatch + { + [id(0x000000c8), propput] HRESULT HatchBitmapPDU([in] long phatchBitmapPDU); + [id(0x000000c8), propget] HRESULT HatchBitmapPDU([out, retval] long * phatchBitmapPDU); + [id(0x000000c9), propput] HRESULT HatchSSBOrder([in] long phatchSSBOrder); + [id(0x000000c9), propget] HRESULT HatchSSBOrder([out, retval] long * phatchSSBOrder); + [id(0x000000ca), propput] HRESULT HatchMembltOrder([in] long phatchMembltOrder); + [id(0x000000ca), propget] HRESULT HatchMembltOrder([out, retval] long * phatchMembltOrder); + [id(0x000000cb), propput] HRESULT HatchIndexPDU([in] long phatchIndexPDU); + [id(0x000000cb), propget] HRESULT HatchIndexPDU([out, retval] long * phatchIndexPDU); + [id(0x000000cc), propput] HRESULT LabelMemblt([in] long plabelMemblt); + [id(0x000000cc), propget] HRESULT LabelMemblt([out, retval] long * plabelMemblt); + [id(0x000000cd), propput] HRESULT BitmapCacheMonitor([in] long pbitmapCacheMonitor); + [id(0x000000cd), propget] HRESULT BitmapCacheMonitor([out, retval] long * pbitmapCacheMonitor); + [id(0x000000ce), propput] HRESULT MallocFailuresPercent([in] long pmallocFailuresPercent); + [id(0x000000ce), propget] HRESULT MallocFailuresPercent([out, retval] long * pmallocFailuresPercent); + [id(0x000000cf), propput] HRESULT MallocHugeFailuresPercent([in] long pmallocHugeFailuresPercent); + [id(0x000000cf), propget] HRESULT MallocHugeFailuresPercent([out, retval] long * pmallocHugeFailuresPercent); + [id(0x000000d0), propput] HRESULT NetThroughput([in] long NetThroughput); + [id(0x000000d0), propget] HRESULT NetThroughput([out, retval] long * NetThroughput); + [id(0x000000d1), propput] HRESULT CLXCmdLine([in] BSTR pCLXCmdLine); + [id(0x000000d1), propget] HRESULT CLXCmdLine([out, retval] BSTR * pCLXCmdLine); + [id(0x000000d2), propput] HRESULT CLXDll([in] BSTR pCLXDll); + [id(0x000000d2), propget] HRESULT CLXDll([out, retval] BSTR * pCLXDll); + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(1FB464C8-09BB-4017-A2F5-EB742F04392F) +#else + uuid(A41A4187-5A86-4E26-B40A-856F9035D9CB) +#endif + ] + coclass MsTscAx + { + interface IMsRdpClient; + [default] interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(791FA017-2DE3-492E-ACC5-53C67A2B94D0) +#else + uuid(7CACBD7B-0D99-468F-AC33-22E495C0AFE5) +#endif + ] + coclass MsRdpClient + { + [default] interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(9059F30F-4EB1-4BD2-9FDC-36F43A218F4A) +#else + uuid(3523C2FB-4031-44E4-9A3B-F1E94986EE7F) +#endif + ] + coclass MsRdpClient2 + { + [default] interface IMsRdpClient2; + interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [ +#ifdef MSTSCLIB_REDIST_ + uuid(7584C670-2274-4EFB-B00B-D6AABA6D3850) +#else + uuid(ACE575FD-1FCF-4074-9401-EBAB990FA9DE) +#endif + ] + coclass MsRdpClient3 + { + [default] interface IMsRdpClient3; + interface IMsRdpClient2; + interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + }; + + [uuid(6AE29350-321B-42BE-BBE5-12FB5270C0DE)] + coclass MsRdpClient4 + { + [default] interface IMsRdpClient4; + interface IMsRdpClient3; + interface IMsRdpClient2; + interface IMsRdpClient; + interface IMsTscAx; + [default, source] dispinterface IMsTscAxEvents; + interface IMsTscNonScriptable; + interface IMsRdpClientNonScriptable; + interface IMsRdpClientNonScriptable2; + }; + +}; + +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib.rc b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib.rc new file mode 100644 index 00000000000..a187007a61b --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib.rc @@ -0,0 +1,3 @@ +#define TYPELIB_RESOURCEID__ 1 +#include "./typelib.rh" +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_h.h b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_h.h new file mode 100644 index 00000000000..c49476ba32f --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_h.h @@ -0,0 +1,8946 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:06 2006 + */ +/* Compiler settings for .\mstsclib.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + + +#ifndef __mstsclib_h_h__ +#define __mstsclib_h_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMsTscAxEvents_FWD_DEFINED__ +#define __IMsTscAxEvents_FWD_DEFINED__ +typedef interface IMsTscAxEvents IMsTscAxEvents; +#endif /* __IMsTscAxEvents_FWD_DEFINED__ */ + + +#ifndef __IMsTscAx_FWD_DEFINED__ +#define __IMsTscAx_FWD_DEFINED__ +typedef interface IMsTscAx IMsTscAx; +#endif /* __IMsTscAx_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient_FWD_DEFINED__ +#define __IMsRdpClient_FWD_DEFINED__ +typedef interface IMsRdpClient IMsRdpClient; +#endif /* __IMsRdpClient_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient2_FWD_DEFINED__ +#define __IMsRdpClient2_FWD_DEFINED__ +typedef interface IMsRdpClient2 IMsRdpClient2; +#endif /* __IMsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient3_FWD_DEFINED__ +#define __IMsRdpClient3_FWD_DEFINED__ +typedef interface IMsRdpClient3 IMsRdpClient3; +#endif /* __IMsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient4_FWD_DEFINED__ +#define __IMsRdpClient4_FWD_DEFINED__ +typedef interface IMsRdpClient4 IMsRdpClient4; +#endif /* __IMsRdpClient4_FWD_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_FWD_DEFINED__ +#define __IMsTscNonScriptable_FWD_DEFINED__ +typedef interface IMsTscNonScriptable IMsTscNonScriptable; +#endif /* __IMsTscNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable IMsRdpClientNonScriptable; +#endif /* __IMsRdpClientNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable2_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable2 IMsRdpClientNonScriptable2; +#endif /* __IMsRdpClientNonScriptable2_FWD_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_FWD_DEFINED__ +#define __IMsTscAdvancedSettings_FWD_DEFINED__ +typedef interface IMsTscAdvancedSettings IMsTscAdvancedSettings; +#endif /* __IMsTscAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings IMsRdpClientAdvancedSettings; +#endif /* __IMsRdpClientAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings2 IMsRdpClientAdvancedSettings2; +#endif /* __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings3 IMsRdpClientAdvancedSettings3; +#endif /* __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings4 IMsRdpClientAdvancedSettings4; +#endif /* __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_FWD_DEFINED__ +#define __IMsTscSecuredSettings_FWD_DEFINED__ +typedef interface IMsTscSecuredSettings IMsTscSecuredSettings; +#endif /* __IMsTscSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_FWD_DEFINED__ +#define __IMsRdpClientSecuredSettings_FWD_DEFINED__ +typedef interface IMsRdpClientSecuredSettings IMsRdpClientSecuredSettings; +#endif /* __IMsRdpClientSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsTscDebug_FWD_DEFINED__ +#define __IMsTscDebug_FWD_DEFINED__ +typedef interface IMsTscDebug IMsTscDebug; +#endif /* __IMsTscDebug_FWD_DEFINED__ */ + + +#ifndef __MsTscAx_FWD_DEFINED__ +#define __MsTscAx_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsTscAx MsTscAx; +#else +typedef struct MsTscAx MsTscAx; +#endif /* __cplusplus */ + +#endif /* __MsTscAx_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient_FWD_DEFINED__ +#define __MsRdpClient_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient MsRdpClient; +#else +typedef struct MsRdpClient MsRdpClient; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient2_FWD_DEFINED__ +#define __MsRdpClient2_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient2 MsRdpClient2; +#else +typedef struct MsRdpClient2 MsRdpClient2; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient3_FWD_DEFINED__ +#define __MsRdpClient3_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient3 MsRdpClient3; +#else +typedef struct MsRdpClient3 MsRdpClient3; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient4_FWD_DEFINED__ +#define __MsRdpClient4_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient4 MsRdpClient4; +#else +typedef struct MsRdpClient4 MsRdpClient4; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient4_FWD_DEFINED__ */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + + +#ifndef __MSTSCLib_LIBRARY_DEFINED__ +#define __MSTSCLib_LIBRARY_DEFINED__ + +/* library MSTSCLib */ +/* [version][uuid] */ + + + + + + + + + + + + + + + + + + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mstsax_0275_0001 + { autoReconnectContinueAutomatic = 0, + autoReconnectContinueStop = 1, + autoReconnectContinueManual = 2 + } AutoReconnectContinueState; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0001 + { exDiscReasonNoInfo = 0, + exDiscReasonAPIInitiatedDisconnect = 1, + exDiscReasonAPIInitiatedLogoff = 2, + exDiscReasonServerIdleTimeout = 3, + exDiscReasonServerLogonTimeout = 4, + exDiscReasonReplacedByOtherConnection = 5, + exDiscReasonOutOfMemory = 6, + exDiscReasonServerDeniedConnection = 7, + exDiscReasonServerDeniedConnectionFips = 8, + exDiscReasonLicenseInternal = 256, + exDiscReasonLicenseNoLicenseServer = 257, + exDiscReasonLicenseNoLicense = 258, + exDiscReasonLicenseErrClientMsg = 259, + exDiscReasonLicenseHwidDoesntMatchLicense = 260, + exDiscReasonLicenseErrClientLicense = 261, + exDiscReasonLicenseCantFinishProtocol = 262, + exDiscReasonLicenseClientEndedProtocol = 263, + exDiscReasonLicenseErrClientEncryption = 264, + exDiscReasonLicenseCantUpgradeLicense = 265, + exDiscReasonLicenseNoRemoteConnections = 266, + exDiscReasonProtocolRangeStart = 4096, + exDiscReasonProtocolRangeEnd = 32767 + } ExtendedDisconnectReasonCode; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0002 + { controlCloseCanProceed = 0, + controlCloseWaitForEvents = 1 + } ControlCloseStatus; + +typedef /* [custom][public] */ unsigned __int3264 UINT_PTR; + +typedef /* [custom][public] */ __int3264 LONG_PTR; + + +EXTERN_C const IID LIBID_MSTSCLib; + +#ifndef __IMsTscAxEvents_DISPINTERFACE_DEFINED__ +#define __IMsTscAxEvents_DISPINTERFACE_DEFINED__ + +/* dispinterface IMsTscAxEvents */ +/* [uuid] */ + + +EXTERN_C const IID DIID_IMsTscAxEvents; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("336D5562-EFA8-482E-8CB3-C5C0FC7A7DB6") + IMsTscAxEvents : public IDispatch + { + }; + +#else /* C style interface */ + + typedef struct IMsTscAxEventsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAxEvents * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAxEvents * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAxEvents * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAxEvents * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAxEvents * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + END_INTERFACE + } IMsTscAxEventsVtbl; + + interface IMsTscAxEvents + { + CONST_VTBL struct IMsTscAxEventsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAxEvents_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAxEvents_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAxEvents_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAxEvents_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAxEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAxEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAxEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + +#endif /* __IMsTscAxEvents_DISPINTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAx_INTERFACE_DEFINED__ +#define __IMsTscAx_INTERFACE_DEFINED__ + +/* interface IMsTscAx */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAx; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8C11EFAE-92C3-11D1-BC1E-00C04FA31489") + IMsTscAx : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Server( + /* [in] */ BSTR pServer) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Server( + /* [retval][out] */ BSTR *pServer) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Domain( + /* [in] */ BSTR pDomain) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Domain( + /* [retval][out] */ BSTR *pDomain) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_UserName( + /* [in] */ BSTR pUserName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_UserName( + /* [retval][out] */ BSTR *pUserName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisconnectedText( + /* [in] */ BSTR pDisconnectedText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisconnectedText( + /* [retval][out] */ BSTR *pDisconnectedText) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectingText( + /* [in] */ BSTR pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectingText( + /* [retval][out] */ BSTR *pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Connected( + /* [retval][out] */ short *pIsConnected) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopWidth( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopWidth( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopHeight( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopHeight( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartConnected( + /* [in] */ long pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartConnected( + /* [retval][out] */ long *pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HorizontalScrollBarVisible( + /* [retval][out] */ long *pfHScrollVisible) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_VerticalScrollBarVisible( + /* [retval][out] */ long *pfVScrollVisible) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreenTitle( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CipherStrength( + /* [retval][out] */ long *pCipherStrength) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Version( + /* [retval][out] */ BSTR *pVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettingsEnabled( + /* [retval][out] */ long *pSecuredSettingsEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings( + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings( + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [hidden][propget][id] */ HRESULT STDMETHODCALLTYPE get_Debugger( + /* [retval][out] */ IMsTscDebug **ppDebugger) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Connect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Disconnect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CreateVirtualChannels( + /* [in] */ BSTR newVal) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SendOnVirtualChannel( + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAxVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAx * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAx * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAx * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAx * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAx * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsTscAx * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsTscAx * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsTscAx * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsTscAx * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsTscAx * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsTscAx * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsTscAx * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsTscAx * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsTscAx * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsTscAx * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsTscAx * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsTscAx * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsTscAx * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsTscAx * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + END_INTERFACE + } IMsTscAxVtbl; + + interface IMsTscAx + { + CONST_VTBL struct IMsTscAxVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAx_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAx_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAx_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAx_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAx_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAx_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAx_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAx_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsTscAx_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsTscAx_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsTscAx_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsTscAx_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsTscAx_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsTscAx_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsTscAx_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsTscAx_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsTscAx_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsTscAx_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsTscAx_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsTscAx_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsTscAx_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsTscAx_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsTscAx_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsTscAx_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsTscAx_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsTscAx_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsTscAx_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsTscAx_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsTscAx_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsTscAx_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsTscAx_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAx_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient_INTERFACE_DEFINED__ +#define __IMsRdpClient_INTERFACE_DEFINED__ + +/* interface IMsRdpClient */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("92B4A539-7115-4B7C-A5A9-E5D9EFC2780A") + IMsRdpClient : public IMsTscAx + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ColorDepth( + /* [in] */ long pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ColorDepth( + /* [retval][out] */ long *pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings2( + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings2( + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ExtendedDisconnectReason( + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ VARIANT_BOOL pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ VARIANT_BOOL *pfFullScreen) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE GetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE RequestClose( + /* [retval][out] */ ControlCloseStatus *pCloseStatus) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + END_INTERFACE + } IMsRdpClientVtbl; + + interface IMsRdpClient + { + CONST_VTBL struct IMsRdpClientVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient2_INTERFACE_DEFINED__ +#define __IMsRdpClient2_INTERFACE_DEFINED__ + +/* interface IMsRdpClient2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E7E17DC4-3B71-4BA7-A8E6-281FFADCA28F") + IMsRdpClient2 : public IMsRdpClient + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings3( + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectedStatusText( + /* [in] */ BSTR pConnectedStatusText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectedStatusText( + /* [retval][out] */ BSTR *pConnectedStatusText) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient2 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient2 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient2 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient2 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient2 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient2 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient2 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient2 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient2 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient2 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient2 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + END_INTERFACE + } IMsRdpClient2Vtbl; + + interface IMsRdpClient2 + { + CONST_VTBL struct IMsRdpClient2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient2_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient2_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient2_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient2_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient2_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient2_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient2_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient2_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient2_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient2_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient2_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient2_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient2_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient2_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient2_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient2_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient2_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient2_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient2_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient2_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient2_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient2_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient2_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient2_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient2_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient3_INTERFACE_DEFINED__ +#define __IMsRdpClient3_INTERFACE_DEFINED__ + +/* interface IMsRdpClient3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("91B7CBC5-A72E-4FA0-9300-D647D7E897FF") + IMsRdpClient3 : public IMsRdpClient2 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings4( + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient3 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient3 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient3 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient3 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient3 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient3 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient3 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient3 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient3 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient3 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient3 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + END_INTERFACE + } IMsRdpClient3Vtbl; + + interface IMsRdpClient3 + { + CONST_VTBL struct IMsRdpClient3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient3_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient3_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient3_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient3_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient3_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient3_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient3_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient3_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient3_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient3_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient3_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient3_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient3_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient3_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient3_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient3_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient3_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient3_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient3_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient3_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient3_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient3_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient3_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient3_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient3_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient3_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient4_INTERFACE_DEFINED__ +#define __IMsRdpClient4_INTERFACE_DEFINED__ + +/* interface IMsRdpClient4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("095E0738-D97D-488B-B9F6-DD0E8D66C0DE") + IMsRdpClient4 : public IMsRdpClient3 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings5( + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient4 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient4 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient4 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient4 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient4 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient4 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient4 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient4 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient4 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient4 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient4 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings5 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5); + + END_INTERFACE + } IMsRdpClient4Vtbl; + + interface IMsRdpClient4 + { + CONST_VTBL struct IMsRdpClient4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient4_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient4_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient4_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient4_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient4_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient4_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient4_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient4_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient4_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient4_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient4_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient4_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient4_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient4_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient4_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient4_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient4_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient4_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient4_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient4_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient4_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient4_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient4_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient4_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient4_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient4_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + + +#define IMsRdpClient4_get_AdvancedSettings5(This,ppAdvSettings5) \ + ( (This)->lpVtbl -> get_AdvancedSettings5(This,ppAdvSettings5) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_INTERFACE_DEFINED__ +#define __IMsTscNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsTscNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsTscNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C1E6743A-41C1-4A74-832A-0DD06C1C7A0E") + IMsTscNonScriptable : public IUnknown + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortablePassword( + /* [in] */ BSTR pPortablePass) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortablePassword( + /* [retval][out] */ BSTR *pPortablePass) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortableSalt( + /* [in] */ BSTR pPortableSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortableSalt( + /* [retval][out] */ BSTR *pPortableSalt) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinaryPassword( + /* [in] */ BSTR pBinaryPassword) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinaryPassword( + /* [retval][out] */ BSTR *pBinaryPassword) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinarySalt( + /* [in] */ BSTR pSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinarySalt( + /* [retval][out] */ BSTR *pSalt) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResetPassword( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsTscNonScriptable * This); + + END_INTERFACE + } IMsTscNonScriptableVtbl; + + interface IMsTscNonScriptable + { + CONST_VTBL struct IMsTscNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsTscNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2F079C4C-87B2-4AFD-97AB-20CDB43038AE") + IMsRdpClientNonScriptable : public IMsTscNonScriptable + { + public: + virtual HRESULT STDMETHODCALLTYPE NotifyRedirectDeviceChange( + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam) = 0; + + virtual HRESULT STDMETHODCALLTYPE SendKeys( + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + END_INTERFACE + } IMsRdpClientNonScriptableVtbl; + + interface IMsRdpClientNonScriptable + { + CONST_VTBL struct IMsRdpClientNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable2 */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("17A5E535-4072-4FA4-AF32-C8D0D47345E9") + IMsRdpClientNonScriptable2 : public IMsRdpClientNonScriptable + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_UIParentWindowHandle( + /* [in] */ HWND phwndUIParentWindowHandle) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_UIParentWindowHandle( + /* [retval][out] */ HWND *phwndUIParentWindowHandle) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptable2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable2 * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable2 * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ HWND phwndUIParentWindowHandle); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ HWND *phwndUIParentWindowHandle); + + END_INTERFACE + } IMsRdpClientNonScriptable2Vtbl; + + interface IMsRdpClientNonScriptable2 + { + CONST_VTBL struct IMsRdpClientNonScriptable2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable2_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable2_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable2_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + + +#define IMsRdpClientNonScriptable2_put_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> put_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#define IMsRdpClientNonScriptable2_get_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> get_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsTscAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsTscAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("809945CC-4B3B-4A92-A6B0-DBF9B5F2EF2D") + IMsTscAdvancedSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Compress( + /* [in] */ long pcompress) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Compress( + /* [retval][out] */ long *pcompress) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPeristence( + /* [in] */ long pbitmapPeristence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPeristence( + /* [retval][out] */ long *pbitmapPeristence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_allowBackgroundInput( + /* [in] */ long pallowBackgroundInput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_allowBackgroundInput( + /* [retval][out] */ long *pallowBackgroundInput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyBoardLayoutStr( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PluginDlls( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconFile( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconIndex( + /* [in] */ long rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ContainerHandledFullScreen( + /* [in] */ long pContainerHandledFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ContainerHandledFullScreen( + /* [retval][out] */ long *pContainerHandledFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableRdpdr( + /* [in] */ long pDisableRdpdr) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableRdpdr( + /* [retval][out] */ long *pDisableRdpdr) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsTscAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsTscAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + END_INTERFACE + } IMsTscAdvancedSettingsVtbl; + + interface IMsTscAdvancedSettings + { + CONST_VTBL struct IMsTscAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsTscAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsTscAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsTscAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3C65B4AB-12B3-465B-ACD4-B8DAD3BFF9E2") + IMsRdpClientAdvancedSettings : public IMsTscAdvancedSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmoothScroll( + /* [in] */ long psmoothScroll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmoothScroll( + /* [retval][out] */ long *psmoothScroll) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AcceleratorPassthrough( + /* [in] */ long pacceleratorPassthrough) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AcceleratorPassthrough( + /* [retval][out] */ long *pacceleratorPassthrough) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ShadowBitmap( + /* [in] */ long pshadowBitmap) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ShadowBitmap( + /* [retval][out] */ long *pshadowBitmap) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_TransportType( + /* [in] */ long ptransportType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_TransportType( + /* [retval][out] */ long *ptransportType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SasSequence( + /* [in] */ long psasSequence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SasSequence( + /* [retval][out] */ long *psasSequence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EncryptionEnabled( + /* [in] */ long pencryptionEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EncryptionEnabled( + /* [retval][out] */ long *pencryptionEnabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DedicatedTerminal( + /* [in] */ long pdedicatedTerminal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DedicatedTerminal( + /* [retval][out] */ long *pdedicatedTerminal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RDPPort( + /* [in] */ long prdpPort) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RDPPort( + /* [retval][out] */ long *prdpPort) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableMouse( + /* [in] */ long penableMouse) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableMouse( + /* [retval][out] */ long *penableMouse) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableCtrlAltDel( + /* [in] */ long pdisableCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableCtrlAltDel( + /* [retval][out] */ long *pdisableCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableWindowsKey( + /* [in] */ long penableWindowsKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableWindowsKey( + /* [retval][out] */ long *penableWindowsKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DoubleClickDetect( + /* [in] */ long pdoubleClickDetect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DoubleClickDetect( + /* [retval][out] */ long *pdoubleClickDetect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaximizeShell( + /* [in] */ long pmaximizeShell) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaximizeShell( + /* [retval][out] */ long *pmaximizeShell) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyFullScreen( + /* [in] */ long photKeyFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyFullScreen( + /* [retval][out] */ long *photKeyFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlEsc( + /* [in] */ long photKeyCtrlEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlEsc( + /* [retval][out] */ long *photKeyCtrlEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltEsc( + /* [in] */ long photKeyAltEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltEsc( + /* [retval][out] */ long *photKeyAltEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltTab( + /* [in] */ long photKeyAltTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltTab( + /* [retval][out] */ long *photKeyAltTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltShiftTab( + /* [in] */ long photKeyAltShiftTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltShiftTab( + /* [retval][out] */ long *photKeyAltShiftTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltSpace( + /* [in] */ long photKeyAltSpace) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltSpace( + /* [retval][out] */ long *photKeyAltSpace) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlAltDel( + /* [in] */ long photKeyCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlAltDel( + /* [retval][out] */ long *photKeyCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_orderDrawThreshold( + /* [in] */ long porderDrawThreshold) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_orderDrawThreshold( + /* [retval][out] */ long *porderDrawThreshold) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheSize( + /* [in] */ long pbitmapCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheSize( + /* [retval][out] */ long *pbitmapCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCacheSize( + /* [in] */ long pbitmapVirtualCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCacheSize( + /* [retval][out] */ long *pbitmapVirtualCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ScaleBitmapCachesByBPP( + /* [in] */ long pbScale) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ScaleBitmapCachesByBPP( + /* [retval][out] */ long *pbScale) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NumBitmapCaches( + /* [in] */ long pnumBitmapCaches) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NumBitmapCaches( + /* [retval][out] */ long *pnumBitmapCaches) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CachePersistenceActive( + /* [in] */ long pcachePersistenceActive) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CachePersistenceActive( + /* [retval][out] */ long *pcachePersistenceActive) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PersistCacheDirectory( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_brushSupportLevel( + /* [in] */ long pbrushSupportLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_brushSupportLevel( + /* [retval][out] */ long *pbrushSupportLevel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_minInputSendInterval( + /* [in] */ long pminInputSendInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_minInputSendInterval( + /* [retval][out] */ long *pminInputSendInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_InputEventsAtOnce( + /* [in] */ long pinputEventsAtOnce) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_InputEventsAtOnce( + /* [retval][out] */ long *pinputEventsAtOnce) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_maxEventCount( + /* [in] */ long pmaxEventCount) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_maxEventCount( + /* [retval][out] */ long *pmaxEventCount) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_keepAliveInterval( + /* [in] */ long pkeepAliveInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_keepAliveInterval( + /* [retval][out] */ long *pkeepAliveInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_shutdownTimeout( + /* [in] */ long pshutdownTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_shutdownTimeout( + /* [retval][out] */ long *pshutdownTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_overallConnectionTimeout( + /* [in] */ long poverallConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_overallConnectionTimeout( + /* [retval][out] */ long *poverallConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_singleConnectionTimeout( + /* [in] */ long psingleConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_singleConnectionTimeout( + /* [retval][out] */ long *psingleConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardType( + /* [in] */ long pkeyboardType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardType( + /* [retval][out] */ long *pkeyboardType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardSubType( + /* [in] */ long pkeyboardSubType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardSubType( + /* [retval][out] */ long *pkeyboardSubType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardFunctionKey( + /* [in] */ long pkeyboardFunctionKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardFunctionKey( + /* [retval][out] */ long *pkeyboardFunctionKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WinceFixedPalette( + /* [in] */ long pwinceFixedPalette) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WinceFixedPalette( + /* [retval][out] */ long *pwinceFixedPalette) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectToServerConsole( + /* [in] */ VARIANT_BOOL pConnectToConsole) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectToServerConsole( + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPersistence( + /* [in] */ long pbitmapPersistence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPersistence( + /* [retval][out] */ long *pbitmapPersistence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MinutesToIdleTimeout( + /* [in] */ long pminutesToIdleTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MinutesToIdleTimeout( + /* [retval][out] */ long *pminutesToIdleTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmartSizing( + /* [in] */ VARIANT_BOOL pfSmartSizing) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmartSizing( + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrLocalPrintingDocName( + /* [in] */ BSTR pLocalPrintingDocName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrLocalPrintingDocName( + /* [retval][out] */ BSTR *pLocalPrintingDocName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipCleanTempDirString( + /* [in] */ BSTR clipCleanTempDirString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipCleanTempDirString( + /* [retval][out] */ BSTR *clipCleanTempDirString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipPasteInfoString( + /* [in] */ BSTR clipPasteInfoString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipPasteInfoString( + /* [retval][out] */ BSTR *clipPasteInfoString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisplayConnectionBar( + /* [in] */ VARIANT_BOOL pDisplayConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisplayConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PinConnectionBar( + /* [in] */ VARIANT_BOOL pPinConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PinConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_GrabFocusOnConnect( + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_GrabFocusOnConnect( + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LoadBalanceInfo( + /* [in] */ BSTR pLBInfo) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LoadBalanceInfo( + /* [retval][out] */ BSTR *pLBInfo) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectDrives( + /* [in] */ VARIANT_BOOL pRedirectDrives) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectDrives( + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPrinters( + /* [in] */ VARIANT_BOOL pRedirectPrinters) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPrinters( + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPorts( + /* [in] */ VARIANT_BOOL pRedirectPorts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPorts( + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectSmartCards( + /* [in] */ VARIANT_BOOL pRedirectSmartCards) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectSmartCards( + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache16BppSize( + /* [in] */ long pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache16BppSize( + /* [retval][out] */ long *pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache24BppSize( + /* [in] */ long pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache24BppSize( + /* [retval][out] */ long *pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PerformanceFlags( + /* [in] */ long pDisableList) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PerformanceFlags( + /* [retval][out] */ long *pDisableList) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectWithEndpoint( + /* [in] */ VARIANT *rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NotifyTSPublicKey( + /* [in] */ VARIANT_BOOL pfNotify) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NotifyTSPublicKey( + /* [retval][out] */ VARIANT_BOOL *pfNotify) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + END_INTERFACE + } IMsRdpClientAdvancedSettingsVtbl; + + interface IMsRdpClientAdvancedSettings + { + CONST_VTBL struct IMsRdpClientAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9AC42117-2B76-4320-AA44-0E616AB8437B") + IMsRdpClientAdvancedSettings2 : public IMsRdpClientAdvancedSettings + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CanAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableAutoReconnect( + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaxReconnectAttempts( + /* [in] */ long pMaxReconnectAttempts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaxReconnectAttempts( + /* [retval][out] */ long *pMaxReconnectAttempts) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + END_INTERFACE + } IMsRdpClientAdvancedSettings2Vtbl; + + interface IMsRdpClientAdvancedSettings2 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings2_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings2_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings2_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings2_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("19CD856B-C542-4C53-ACEE-F127E3BE1A59") + IMsRdpClientAdvancedSettings3 : public IMsRdpClientAdvancedSettings2 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowMinimizeButton( + /* [in] */ VARIANT_BOOL pfShowMinimize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowMinimizeButton( + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowRestoreButton( + /* [in] */ VARIANT_BOOL pfShowRestore) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowRestoreButton( + /* [retval][out] */ VARIANT_BOOL *pfShowRestore) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + END_INTERFACE + } IMsRdpClientAdvancedSettings3Vtbl; + + interface IMsRdpClientAdvancedSettings3 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings3_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings3_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings3_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings3_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings3_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FBA7F64E-7345-4405-AE50-FA4A763DC0DE") + IMsRdpClientAdvancedSettings4 : public IMsRdpClientAdvancedSettings3 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AuthenticationLevel( + /* [in] */ unsigned int puiAuthLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AuthenticationLevel( + /* [retval][out] */ unsigned int *puiAuthLevel) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + END_INTERFACE + } IMsRdpClientAdvancedSettings4Vtbl; + + interface IMsRdpClientAdvancedSettings4 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings4_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings4_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings4_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings4_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings4_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + + +#define IMsRdpClientAdvancedSettings4_put_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> put_AuthenticationLevel(This,puiAuthLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> get_AuthenticationLevel(This,puiAuthLevel) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_INTERFACE_DEFINED__ +#define __IMsTscSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsTscSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C9D65442-A0F9-45B2-8F73-D61D2DB8CBB6") + IMsTscSecuredSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartProgram( + /* [in] */ BSTR pStartProgram) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartProgram( + /* [retval][out] */ BSTR *pStartProgram) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WorkDir( + /* [in] */ BSTR pWorkDir) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WorkDir( + /* [retval][out] */ BSTR *pWorkDir) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ long pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ long *pfFullScreen) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsTscSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsTscSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + END_INTERFACE + } IMsTscSecuredSettingsVtbl; + + interface IMsTscSecuredSettings + { + CONST_VTBL struct IMsTscSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsTscSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("605BEFCF-39C1-45CC-A811-068FB7BE346D") + IMsRdpClientSecuredSettings : public IMsTscSecuredSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardHookMode( + /* [in] */ long pkeyboardHookMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardHookMode( + /* [retval][out] */ long *pkeyboardHookMode) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AudioRedirectionMode( + /* [in] */ long pAudioRedirectionMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AudioRedirectionMode( + /* [retval][out] */ long *pAudioRedirectionMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pkeyboardHookMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pkeyboardHookMode); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pAudioRedirectionMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pAudioRedirectionMode); + + END_INTERFACE + } IMsRdpClientSecuredSettingsVtbl; + + interface IMsRdpClientSecuredSettings + { + CONST_VTBL struct IMsRdpClientSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClientSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + + +#define IMsRdpClientSecuredSettings_put_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> put_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_get_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> get_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_put_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> put_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#define IMsRdpClientSecuredSettings_get_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> get_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscDebug_INTERFACE_DEFINED__ +#define __IMsTscDebug_INTERFACE_DEFINED__ + +/* interface IMsTscDebug */ +/* [object][oleautomation][dual][hidden][uuid] */ + + +EXTERN_C const IID IID_IMsTscDebug; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("209D0EB9-6254-47B1-9033-A98DAE55BB27") + IMsTscDebug : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchBitmapPDU( + /* [in] */ long phatchBitmapPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchBitmapPDU( + /* [retval][out] */ long *phatchBitmapPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchSSBOrder( + /* [in] */ long phatchSSBOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchSSBOrder( + /* [retval][out] */ long *phatchSSBOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchMembltOrder( + /* [in] */ long phatchMembltOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchMembltOrder( + /* [retval][out] */ long *phatchMembltOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchIndexPDU( + /* [in] */ long phatchIndexPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchIndexPDU( + /* [retval][out] */ long *phatchIndexPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LabelMemblt( + /* [in] */ long plabelMemblt) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LabelMemblt( + /* [retval][out] */ long *plabelMemblt) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheMonitor( + /* [in] */ long pbitmapCacheMonitor) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheMonitor( + /* [retval][out] */ long *pbitmapCacheMonitor) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocFailuresPercent( + /* [in] */ long pmallocFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocFailuresPercent( + /* [retval][out] */ long *pmallocFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocHugeFailuresPercent( + /* [in] */ long pmallocHugeFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocHugeFailuresPercent( + /* [retval][out] */ long *pmallocHugeFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NetThroughput( + /* [in] */ long NetThroughput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NetThroughput( + /* [retval][out] */ long *NetThroughput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXCmdLine( + /* [in] */ BSTR pCLXCmdLine) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXCmdLine( + /* [retval][out] */ BSTR *pCLXCmdLine) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXDll( + /* [in] */ BSTR pCLXDll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXDll( + /* [retval][out] */ BSTR *pCLXDll) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscDebugVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscDebug * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscDebug * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscDebug * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscDebug * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscDebug * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchBitmapPDU )( + IMsTscDebug * This, + /* [in] */ long phatchBitmapPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchBitmapPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchBitmapPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchSSBOrder )( + IMsTscDebug * This, + /* [in] */ long phatchSSBOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchSSBOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchSSBOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchMembltOrder )( + IMsTscDebug * This, + /* [in] */ long phatchMembltOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchMembltOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchMembltOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchIndexPDU )( + IMsTscDebug * This, + /* [in] */ long phatchIndexPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchIndexPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchIndexPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LabelMemblt )( + IMsTscDebug * This, + /* [in] */ long plabelMemblt); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LabelMemblt )( + IMsTscDebug * This, + /* [retval][out] */ long *plabelMemblt); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [in] */ long pbitmapCacheMonitor); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [retval][out] */ long *pbitmapCacheMonitor); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocHugeFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocHugeFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NetThroughput )( + IMsTscDebug * This, + /* [in] */ long NetThroughput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NetThroughput )( + IMsTscDebug * This, + /* [retval][out] */ long *NetThroughput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXCmdLine )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXCmdLine); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXCmdLine )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXCmdLine); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXDll )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXDll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXDll )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXDll); + + END_INTERFACE + } IMsTscDebugVtbl; + + interface IMsTscDebug + { + CONST_VTBL struct IMsTscDebugVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscDebug_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscDebug_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscDebug_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscDebug_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscDebug_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscDebug_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscDebug_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscDebug_put_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> put_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_get_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> get_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_put_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> put_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_get_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> get_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_put_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> put_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_get_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> get_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_put_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> put_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_get_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> get_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_put_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> put_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_get_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> get_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_put_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> put_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_get_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> get_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_put_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_get_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_put_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> put_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_get_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> get_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_put_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> put_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_get_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> get_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_put_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> put_CLXDll(This,pCLXDll) ) + +#define IMsTscDebug_get_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> get_CLXDll(This,pCLXDll) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscDebug_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_MsTscAx; + +#ifdef __cplusplus + +class DECLSPEC_UUID("A41A4187-5A86-4E26-B40A-856F9035D9CB") +MsTscAx; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient; + +#ifdef __cplusplus + +class DECLSPEC_UUID("7CACBD7B-0D99-468F-AC33-22E495C0AFE5") +MsRdpClient; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient2; + +#ifdef __cplusplus + +class DECLSPEC_UUID("3523C2FB-4031-44E4-9A3B-F1E94986EE7F") +MsRdpClient2; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient3; + +#ifdef __cplusplus + +class DECLSPEC_UUID("ACE575FD-1FCF-4074-9401-EBAB990FA9DE") +MsRdpClient3; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient4; + +#ifdef __cplusplus + +class DECLSPEC_UUID("6AE29350-321B-42BE-BBE5-12FB5270C0DE") +MsRdpClient4; +#endif +#endif /* __MSTSCLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_i.c b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_i.c new file mode 100644 index 00000000000..60a812a56c1 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_i.c @@ -0,0 +1,145 @@ + + +/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */ + +/* link this file in with the server and any clients */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:06 2006 + */ +/* Compiler settings for .\mstsclib.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + +#include +#include + +#ifdef _MIDL_USE_GUIDDEF_ + +#ifndef INITGUID +#define INITGUID +#include +#undef INITGUID +#else +#include +#endif + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) + +#else // !_MIDL_USE_GUIDDEF_ + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef struct _IID +{ + unsigned long x; + unsigned short s1; + unsigned short s2; + unsigned char c[8]; +} IID; + +#endif // __IID_DEFINED__ + +#ifndef CLSID_DEFINED +#define CLSID_DEFINED +typedef IID CLSID; +#endif // CLSID_DEFINED + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} + +#endif !_MIDL_USE_GUIDDEF_ + +MIDL_DEFINE_GUID(IID, LIBID_MSTSCLib,0x8C11EFA1,0x92C3,0x11D1,0xBC,0x1E,0x00,0xC0,0x4F,0xA3,0x14,0x89); + + +MIDL_DEFINE_GUID(IID, DIID_IMsTscAxEvents,0x336D5562,0xEFA8,0x482E,0x8C,0xB3,0xC5,0xC0,0xFC,0x7A,0x7D,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAx,0x8C11EFAE,0x92C3,0x11D1,0xBC,0x1E,0x00,0xC0,0x4F,0xA3,0x14,0x89); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient,0x92B4A539,0x7115,0x4B7C,0xA5,0xA9,0xE5,0xD9,0xEF,0xC2,0x78,0x0A); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient2,0xE7E17DC4,0x3B71,0x4BA7,0xA8,0xE6,0x28,0x1F,0xFA,0xDC,0xA2,0x8F); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient3,0x91B7CBC5,0xA72E,0x4FA0,0x93,0x00,0xD6,0x47,0xD7,0xE8,0x97,0xFF); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient4,0x095E0738,0xD97D,0x488B,0xB9,0xF6,0xDD,0x0E,0x8D,0x66,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscNonScriptable,0xC1E6743A,0x41C1,0x4A74,0x83,0x2A,0x0D,0xD0,0x6C,0x1C,0x7A,0x0E); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable,0x2F079C4C,0x87B2,0x4AFD,0x97,0xAB,0x20,0xCD,0xB4,0x30,0x38,0xAE); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable2,0x17A5E535,0x4072,0x4FA4,0xAF,0x32,0xC8,0xD0,0xD4,0x73,0x45,0xE9); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAdvancedSettings,0x809945CC,0x4B3B,0x4A92,0xA6,0xB0,0xDB,0xF9,0xB5,0xF2,0xEF,0x2D); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings,0x3C65B4AB,0x12B3,0x465B,0xAC,0xD4,0xB8,0xDA,0xD3,0xBF,0xF9,0xE2); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings2,0x9AC42117,0x2B76,0x4320,0xAA,0x44,0x0E,0x61,0x6A,0xB8,0x43,0x7B); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings3,0x19CD856B,0xC542,0x4C53,0xAC,0xEE,0xF1,0x27,0xE3,0xBE,0x1A,0x59); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings4,0xFBA7F64E,0x7345,0x4405,0xAE,0x50,0xFA,0x4A,0x76,0x3D,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscSecuredSettings,0xC9D65442,0xA0F9,0x45B2,0x8F,0x73,0xD6,0x1D,0x2D,0xB8,0xCB,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientSecuredSettings,0x605BEFCF,0x39C1,0x45CC,0xA8,0x11,0x06,0x8F,0xB7,0xBE,0x34,0x6D); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscDebug,0x209D0EB9,0x6254,0x47B1,0x90,0x33,0xA9,0x8D,0xAE,0x55,0xBB,0x27); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsTscAx,0xA41A4187,0x5A86,0x4E26,0xB4,0x0A,0x85,0x6F,0x90,0x35,0xD9,0xCB); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient,0x7CACBD7B,0x0D99,0x468F,0xAC,0x33,0x22,0xE4,0x95,0xC0,0xAF,0xE5); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient2,0x3523C2FB,0x4031,0x44E4,0x9A,0x3B,0xF1,0xE9,0x49,0x86,0xEE,0x7F); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient3,0xACE575FD,0x1FCF,0x4074,0x94,0x01,0xEB,0xAB,0x99,0x0F,0xA9,0xDE); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient4,0x6AE29350,0x321B,0x42BE,0xBB,0xE5,0x12,0xFB,0x52,0x70,0xC0,0xDE); + +#undef MIDL_DEFINE_GUID + +#ifdef __cplusplus +} +#endif + + + diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.idl b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.idl new file mode 100644 index 00000000000..30348675903 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.idl @@ -0,0 +1,3 @@ +#define MSTSCLIB_REDIST_ +#include "./mstsclib.idl" +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.rc b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.rc new file mode 100644 index 00000000000..3da452459e9 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist.rc @@ -0,0 +1,3 @@ +#define TYPELIB_RESOURCEID__ 2 +#include "./typelib.rh" +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_h.h b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_h.h new file mode 100644 index 00000000000..dc1bc2da754 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_h.h @@ -0,0 +1,8946 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:05 2006 + */ +/* Compiler settings for .\mstsclib_redist.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + + +#ifndef __mstsclib_redist_h_h__ +#define __mstsclib_redist_h_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IMsTscAxEvents_FWD_DEFINED__ +#define __IMsTscAxEvents_FWD_DEFINED__ +typedef interface IMsTscAxEvents IMsTscAxEvents; +#endif /* __IMsTscAxEvents_FWD_DEFINED__ */ + + +#ifndef __IMsTscAx_FWD_DEFINED__ +#define __IMsTscAx_FWD_DEFINED__ +typedef interface IMsTscAx IMsTscAx; +#endif /* __IMsTscAx_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient_FWD_DEFINED__ +#define __IMsRdpClient_FWD_DEFINED__ +typedef interface IMsRdpClient IMsRdpClient; +#endif /* __IMsRdpClient_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient2_FWD_DEFINED__ +#define __IMsRdpClient2_FWD_DEFINED__ +typedef interface IMsRdpClient2 IMsRdpClient2; +#endif /* __IMsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient3_FWD_DEFINED__ +#define __IMsRdpClient3_FWD_DEFINED__ +typedef interface IMsRdpClient3 IMsRdpClient3; +#endif /* __IMsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClient4_FWD_DEFINED__ +#define __IMsRdpClient4_FWD_DEFINED__ +typedef interface IMsRdpClient4 IMsRdpClient4; +#endif /* __IMsRdpClient4_FWD_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_FWD_DEFINED__ +#define __IMsTscNonScriptable_FWD_DEFINED__ +typedef interface IMsTscNonScriptable IMsTscNonScriptable; +#endif /* __IMsTscNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable IMsRdpClientNonScriptable; +#endif /* __IMsRdpClientNonScriptable_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_FWD_DEFINED__ +#define __IMsRdpClientNonScriptable2_FWD_DEFINED__ +typedef interface IMsRdpClientNonScriptable2 IMsRdpClientNonScriptable2; +#endif /* __IMsRdpClientNonScriptable2_FWD_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_FWD_DEFINED__ +#define __IMsTscAdvancedSettings_FWD_DEFINED__ +typedef interface IMsTscAdvancedSettings IMsTscAdvancedSettings; +#endif /* __IMsTscAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings IMsRdpClientAdvancedSettings; +#endif /* __IMsRdpClientAdvancedSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings2 IMsRdpClientAdvancedSettings2; +#endif /* __IMsRdpClientAdvancedSettings2_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings3 IMsRdpClientAdvancedSettings3; +#endif /* __IMsRdpClientAdvancedSettings3_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ +typedef interface IMsRdpClientAdvancedSettings4 IMsRdpClientAdvancedSettings4; +#endif /* __IMsRdpClientAdvancedSettings4_FWD_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_FWD_DEFINED__ +#define __IMsTscSecuredSettings_FWD_DEFINED__ +typedef interface IMsTscSecuredSettings IMsTscSecuredSettings; +#endif /* __IMsTscSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_FWD_DEFINED__ +#define __IMsRdpClientSecuredSettings_FWD_DEFINED__ +typedef interface IMsRdpClientSecuredSettings IMsRdpClientSecuredSettings; +#endif /* __IMsRdpClientSecuredSettings_FWD_DEFINED__ */ + + +#ifndef __IMsTscDebug_FWD_DEFINED__ +#define __IMsTscDebug_FWD_DEFINED__ +typedef interface IMsTscDebug IMsTscDebug; +#endif /* __IMsTscDebug_FWD_DEFINED__ */ + + +#ifndef __MsTscAx_FWD_DEFINED__ +#define __MsTscAx_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsTscAx MsTscAx; +#else +typedef struct MsTscAx MsTscAx; +#endif /* __cplusplus */ + +#endif /* __MsTscAx_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient_FWD_DEFINED__ +#define __MsRdpClient_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient MsRdpClient; +#else +typedef struct MsRdpClient MsRdpClient; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient2_FWD_DEFINED__ +#define __MsRdpClient2_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient2 MsRdpClient2; +#else +typedef struct MsRdpClient2 MsRdpClient2; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient2_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient3_FWD_DEFINED__ +#define __MsRdpClient3_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient3 MsRdpClient3; +#else +typedef struct MsRdpClient3 MsRdpClient3; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient3_FWD_DEFINED__ */ + + +#ifndef __MsRdpClient4_FWD_DEFINED__ +#define __MsRdpClient4_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class MsRdpClient4 MsRdpClient4; +#else +typedef struct MsRdpClient4 MsRdpClient4; +#endif /* __cplusplus */ + +#endif /* __MsRdpClient4_FWD_DEFINED__ */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + + +#ifndef __MSTSCLib_LIBRARY_DEFINED__ +#define __MSTSCLib_LIBRARY_DEFINED__ + +/* library MSTSCLib */ +/* [version][uuid] */ + + + + + + + + + + + + + + + + + + +typedef /* [public][public][public] */ +enum __MIDL___MIDL_itf_mstsax_0275_0001 + { autoReconnectContinueAutomatic = 0, + autoReconnectContinueStop = 1, + autoReconnectContinueManual = 2 + } AutoReconnectContinueState; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0001 + { exDiscReasonNoInfo = 0, + exDiscReasonAPIInitiatedDisconnect = 1, + exDiscReasonAPIInitiatedLogoff = 2, + exDiscReasonServerIdleTimeout = 3, + exDiscReasonServerLogonTimeout = 4, + exDiscReasonReplacedByOtherConnection = 5, + exDiscReasonOutOfMemory = 6, + exDiscReasonServerDeniedConnection = 7, + exDiscReasonServerDeniedConnectionFips = 8, + exDiscReasonLicenseInternal = 256, + exDiscReasonLicenseNoLicenseServer = 257, + exDiscReasonLicenseNoLicense = 258, + exDiscReasonLicenseErrClientMsg = 259, + exDiscReasonLicenseHwidDoesntMatchLicense = 260, + exDiscReasonLicenseErrClientLicense = 261, + exDiscReasonLicenseCantFinishProtocol = 262, + exDiscReasonLicenseClientEndedProtocol = 263, + exDiscReasonLicenseErrClientEncryption = 264, + exDiscReasonLicenseCantUpgradeLicense = 265, + exDiscReasonLicenseNoRemoteConnections = 266, + exDiscReasonProtocolRangeStart = 4096, + exDiscReasonProtocolRangeEnd = 32767 + } ExtendedDisconnectReasonCode; + +typedef /* [public][public][public] */ +enum __MIDL_IMsRdpClient_0002 + { controlCloseCanProceed = 0, + controlCloseWaitForEvents = 1 + } ControlCloseStatus; + +typedef /* [custom][public] */ unsigned __int3264 UINT_PTR; + +typedef /* [custom][public] */ __int3264 LONG_PTR; + + +EXTERN_C const IID LIBID_MSTSCLib; + +#ifndef __IMsTscAxEvents_DISPINTERFACE_DEFINED__ +#define __IMsTscAxEvents_DISPINTERFACE_DEFINED__ + +/* dispinterface IMsTscAxEvents */ +/* [uuid] */ + + +EXTERN_C const IID DIID_IMsTscAxEvents; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("336D5562-EFA8-482E-8CB3-C5C0FC7A7DB6") + IMsTscAxEvents : public IDispatch + { + }; + +#else /* C style interface */ + + typedef struct IMsTscAxEventsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAxEvents * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAxEvents * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAxEvents * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAxEvents * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAxEvents * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAxEvents * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + END_INTERFACE + } IMsTscAxEventsVtbl; + + interface IMsTscAxEvents + { + CONST_VTBL struct IMsTscAxEventsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAxEvents_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAxEvents_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAxEvents_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAxEvents_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAxEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAxEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAxEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + +#endif /* __IMsTscAxEvents_DISPINTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAx_INTERFACE_DEFINED__ +#define __IMsTscAx_INTERFACE_DEFINED__ + +/* interface IMsTscAx */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAx; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("327BB5CD-834E-4400-AEF2-B30E15E5D682") + IMsTscAx : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Server( + /* [in] */ BSTR pServer) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Server( + /* [retval][out] */ BSTR *pServer) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Domain( + /* [in] */ BSTR pDomain) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Domain( + /* [retval][out] */ BSTR *pDomain) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_UserName( + /* [in] */ BSTR pUserName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_UserName( + /* [retval][out] */ BSTR *pUserName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisconnectedText( + /* [in] */ BSTR pDisconnectedText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisconnectedText( + /* [retval][out] */ BSTR *pDisconnectedText) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectingText( + /* [in] */ BSTR pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectingText( + /* [retval][out] */ BSTR *pConnectingText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Connected( + /* [retval][out] */ short *pIsConnected) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopWidth( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopWidth( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DesktopHeight( + /* [in] */ long pVal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DesktopHeight( + /* [retval][out] */ long *pVal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartConnected( + /* [in] */ long pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartConnected( + /* [retval][out] */ long *pfStartConnected) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HorizontalScrollBarVisible( + /* [retval][out] */ long *pfHScrollVisible) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_VerticalScrollBarVisible( + /* [retval][out] */ long *pfVScrollVisible) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreenTitle( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CipherStrength( + /* [retval][out] */ long *pCipherStrength) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Version( + /* [retval][out] */ BSTR *pVersion) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettingsEnabled( + /* [retval][out] */ long *pSecuredSettingsEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings( + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings( + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [hidden][propget][id] */ HRESULT STDMETHODCALLTYPE get_Debugger( + /* [retval][out] */ IMsTscDebug **ppDebugger) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Connect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE Disconnect( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CreateVirtualChannels( + /* [in] */ BSTR newVal) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SendOnVirtualChannel( + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAxVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAx * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAx * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAx * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAx * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAx * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAx * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsTscAx * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsTscAx * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsTscAx * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsTscAx * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsTscAx * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsTscAx * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsTscAx * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsTscAx * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsTscAx * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsTscAx * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsTscAx * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsTscAx * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsTscAx * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsTscAx * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsTscAx * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsTscAx * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsTscAx * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsTscAx * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsTscAx * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsTscAx * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + END_INTERFACE + } IMsTscAxVtbl; + + interface IMsTscAx + { + CONST_VTBL struct IMsTscAxVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAx_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAx_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAx_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAx_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAx_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAx_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAx_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAx_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsTscAx_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsTscAx_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsTscAx_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsTscAx_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsTscAx_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsTscAx_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsTscAx_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsTscAx_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsTscAx_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsTscAx_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsTscAx_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsTscAx_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsTscAx_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsTscAx_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsTscAx_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsTscAx_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsTscAx_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsTscAx_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsTscAx_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsTscAx_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsTscAx_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsTscAx_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsTscAx_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsTscAx_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsTscAx_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsTscAx_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAx_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient_INTERFACE_DEFINED__ +#define __IMsRdpClient_INTERFACE_DEFINED__ + +/* interface IMsRdpClient */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("92B4A539-7115-4B7C-A5A9-E5D9EFC2780A") + IMsRdpClient : public IMsTscAx + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ColorDepth( + /* [in] */ long pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ColorDepth( + /* [retval][out] */ long *pcolorDepth) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings2( + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SecuredSettings2( + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ExtendedDisconnectReason( + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ VARIANT_BOOL pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ VARIANT_BOOL *pfFullScreen) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE GetVirtualChannelOptions( + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE RequestClose( + /* [retval][out] */ ControlCloseStatus *pCloseStatus) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + END_INTERFACE + } IMsRdpClientVtbl; + + interface IMsRdpClient + { + CONST_VTBL struct IMsRdpClientVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient2_INTERFACE_DEFINED__ +#define __IMsRdpClient2_INTERFACE_DEFINED__ + +/* interface IMsRdpClient2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E7E17DC4-3B71-4BA7-A8E6-281FFADCA28F") + IMsRdpClient2 : public IMsRdpClient + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings3( + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectedStatusText( + /* [in] */ BSTR pConnectedStatusText) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectedStatusText( + /* [retval][out] */ BSTR *pConnectedStatusText) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient2 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient2 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient2 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient2 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient2 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient2 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient2 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient2 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient2 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient2 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient2 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient2 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient2 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient2 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient2 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient2 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient2 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + END_INTERFACE + } IMsRdpClient2Vtbl; + + interface IMsRdpClient2 + { + CONST_VTBL struct IMsRdpClient2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient2_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient2_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient2_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient2_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient2_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient2_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient2_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient2_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient2_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient2_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient2_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient2_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient2_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient2_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient2_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient2_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient2_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient2_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient2_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient2_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient2_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient2_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient2_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient2_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient2_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient2_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient2_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient2_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient2_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient2_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient2_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient2_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient2_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient2_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient3_INTERFACE_DEFINED__ +#define __IMsRdpClient3_INTERFACE_DEFINED__ + +/* interface IMsRdpClient3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("91B7CBC5-A72E-4FA0-9300-D647D7E897FF") + IMsRdpClient3 : public IMsRdpClient2 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings4( + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient3 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient3 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient3 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient3 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient3 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient3 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient3 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient3 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient3 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient3 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient3 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient3 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient3 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient3 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient3 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient3 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient3 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + END_INTERFACE + } IMsRdpClient3Vtbl; + + interface IMsRdpClient3 + { + CONST_VTBL struct IMsRdpClient3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient3_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient3_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient3_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient3_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient3_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient3_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient3_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient3_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient3_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient3_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient3_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient3_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient3_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient3_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient3_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient3_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient3_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient3_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient3_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient3_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient3_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient3_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient3_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient3_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient3_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient3_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient3_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient3_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient3_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient3_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient3_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient3_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient3_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient3_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient3_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClient4_INTERFACE_DEFINED__ +#define __IMsRdpClient4_INTERFACE_DEFINED__ + +/* interface IMsRdpClient4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClient4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("095E0738-D97D-488B-B9F6-DD0E8D66C0DE") + IMsRdpClient4 : public IMsRdpClient3 + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AdvancedSettings5( + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClient4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClient4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClient4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClient4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClient4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClient4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClient4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )( + IMsRdpClient4 * This, + /* [in] */ BSTR pServer); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pServer); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Domain )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDomain); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Domain )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDomain); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + IMsRdpClient4 * This, + /* [in] */ BSTR pUserName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pUserName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisconnectedText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pDisconnectedText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisconnectedText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pDisconnectedText); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectingText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectingText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectingText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )( + IMsRdpClient4 * This, + /* [retval][out] */ short *pIsConnected); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopWidth )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopWidth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DesktopHeight )( + IMsRdpClient4 * This, + /* [in] */ long pVal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DesktopHeight )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pVal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartConnected )( + IMsRdpClient4 * This, + /* [in] */ long pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartConnected )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfStartConnected); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HorizontalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfHScrollVisible); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_VerticalScrollBarVisible )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pfVScrollVisible); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreenTitle )( + IMsRdpClient4 * This, + /* [in] */ BSTR rhs); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CipherStrength )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pCipherStrength); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pVersion); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettingsEnabled )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pSecuredSettingsEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscAdvancedSettings **ppAdvSettings); + + /* [hidden][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Debugger )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsTscDebug **ppDebugger); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Connect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( + IMsRdpClient4 * This); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateVirtualChannels )( + IMsRdpClient4 * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendOnVirtualChannel )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ BSTR ChanData); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ColorDepth )( + IMsRdpClient4 * This, + /* [in] */ long pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ColorDepth )( + IMsRdpClient4 * This, + /* [retval][out] */ long *pcolorDepth); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecuredSettings2 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientSecuredSettings **ppSecuredSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExtendedDisconnectReason )( + IMsRdpClient4 * This, + /* [retval][out] */ ExtendedDisconnectReasonCode *pExtendedDisconnectReason); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClient4 * This, + /* [in] */ VARIANT_BOOL pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClient4 * This, + /* [retval][out] */ VARIANT_BOOL *pfFullScreen); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [in] */ long chanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetVirtualChannelOptions )( + IMsRdpClient4 * This, + /* [in] */ BSTR chanName, + /* [retval][out] */ long *pChanOptions); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *RequestClose )( + IMsRdpClient4 * This, + /* [retval][out] */ ControlCloseStatus *pCloseStatus); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings3 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings2 **ppAdvSettings); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [in] */ BSTR pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedStatusText )( + IMsRdpClient4 * This, + /* [retval][out] */ BSTR *pConnectedStatusText); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings4 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings3 **ppAdvSettings); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AdvancedSettings5 )( + IMsRdpClient4 * This, + /* [retval][out] */ IMsRdpClientAdvancedSettings4 **ppAdvSettings5); + + END_INTERFACE + } IMsRdpClient4Vtbl; + + interface IMsRdpClient4 + { + CONST_VTBL struct IMsRdpClient4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClient4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClient4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClient4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClient4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClient4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClient4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClient4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClient4_put_Server(This,pServer) \ + ( (This)->lpVtbl -> put_Server(This,pServer) ) + +#define IMsRdpClient4_get_Server(This,pServer) \ + ( (This)->lpVtbl -> get_Server(This,pServer) ) + +#define IMsRdpClient4_put_Domain(This,pDomain) \ + ( (This)->lpVtbl -> put_Domain(This,pDomain) ) + +#define IMsRdpClient4_get_Domain(This,pDomain) \ + ( (This)->lpVtbl -> get_Domain(This,pDomain) ) + +#define IMsRdpClient4_put_UserName(This,pUserName) \ + ( (This)->lpVtbl -> put_UserName(This,pUserName) ) + +#define IMsRdpClient4_get_UserName(This,pUserName) \ + ( (This)->lpVtbl -> get_UserName(This,pUserName) ) + +#define IMsRdpClient4_put_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> put_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_get_DisconnectedText(This,pDisconnectedText) \ + ( (This)->lpVtbl -> get_DisconnectedText(This,pDisconnectedText) ) + +#define IMsRdpClient4_put_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> put_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_ConnectingText(This,pConnectingText) \ + ( (This)->lpVtbl -> get_ConnectingText(This,pConnectingText) ) + +#define IMsRdpClient4_get_Connected(This,pIsConnected) \ + ( (This)->lpVtbl -> get_Connected(This,pIsConnected) ) + +#define IMsRdpClient4_put_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_get_DesktopWidth(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopWidth(This,pVal) ) + +#define IMsRdpClient4_put_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> put_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_get_DesktopHeight(This,pVal) \ + ( (This)->lpVtbl -> get_DesktopHeight(This,pVal) ) + +#define IMsRdpClient4_put_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> put_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_StartConnected(This,pfStartConnected) \ + ( (This)->lpVtbl -> get_StartConnected(This,pfStartConnected) ) + +#define IMsRdpClient4_get_HorizontalScrollBarVisible(This,pfHScrollVisible) \ + ( (This)->lpVtbl -> get_HorizontalScrollBarVisible(This,pfHScrollVisible) ) + +#define IMsRdpClient4_get_VerticalScrollBarVisible(This,pfVScrollVisible) \ + ( (This)->lpVtbl -> get_VerticalScrollBarVisible(This,pfVScrollVisible) ) + +#define IMsRdpClient4_put_FullScreenTitle(This,rhs) \ + ( (This)->lpVtbl -> put_FullScreenTitle(This,rhs) ) + +#define IMsRdpClient4_get_CipherStrength(This,pCipherStrength) \ + ( (This)->lpVtbl -> get_CipherStrength(This,pCipherStrength) ) + +#define IMsRdpClient4_get_Version(This,pVersion) \ + ( (This)->lpVtbl -> get_Version(This,pVersion) ) + +#define IMsRdpClient4_get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) \ + ( (This)->lpVtbl -> get_SecuredSettingsEnabled(This,pSecuredSettingsEnabled) ) + +#define IMsRdpClient4_get_SecuredSettings(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_AdvancedSettings(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_Debugger(This,ppDebugger) \ + ( (This)->lpVtbl -> get_Debugger(This,ppDebugger) ) + +#define IMsRdpClient4_Connect(This) \ + ( (This)->lpVtbl -> Connect(This) ) + +#define IMsRdpClient4_Disconnect(This) \ + ( (This)->lpVtbl -> Disconnect(This) ) + +#define IMsRdpClient4_CreateVirtualChannels(This,newVal) \ + ( (This)->lpVtbl -> CreateVirtualChannels(This,newVal) ) + +#define IMsRdpClient4_SendOnVirtualChannel(This,chanName,ChanData) \ + ( (This)->lpVtbl -> SendOnVirtualChannel(This,chanName,ChanData) ) + + +#define IMsRdpClient4_put_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> put_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_ColorDepth(This,pcolorDepth) \ + ( (This)->lpVtbl -> get_ColorDepth(This,pcolorDepth) ) + +#define IMsRdpClient4_get_AdvancedSettings2(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings2(This,ppAdvSettings) ) + +#define IMsRdpClient4_get_SecuredSettings2(This,ppSecuredSettings) \ + ( (This)->lpVtbl -> get_SecuredSettings2(This,ppSecuredSettings) ) + +#define IMsRdpClient4_get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) \ + ( (This)->lpVtbl -> get_ExtendedDisconnectReason(This,pExtendedDisconnectReason) ) + +#define IMsRdpClient4_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClient4_SetVirtualChannelOptions(This,chanName,chanOptions) \ + ( (This)->lpVtbl -> SetVirtualChannelOptions(This,chanName,chanOptions) ) + +#define IMsRdpClient4_GetVirtualChannelOptions(This,chanName,pChanOptions) \ + ( (This)->lpVtbl -> GetVirtualChannelOptions(This,chanName,pChanOptions) ) + +#define IMsRdpClient4_RequestClose(This,pCloseStatus) \ + ( (This)->lpVtbl -> RequestClose(This,pCloseStatus) ) + + +#define IMsRdpClient4_get_AdvancedSettings3(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings3(This,ppAdvSettings) ) + +#define IMsRdpClient4_put_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> put_ConnectedStatusText(This,pConnectedStatusText) ) + +#define IMsRdpClient4_get_ConnectedStatusText(This,pConnectedStatusText) \ + ( (This)->lpVtbl -> get_ConnectedStatusText(This,pConnectedStatusText) ) + + +#define IMsRdpClient4_get_AdvancedSettings4(This,ppAdvSettings) \ + ( (This)->lpVtbl -> get_AdvancedSettings4(This,ppAdvSettings) ) + + +#define IMsRdpClient4_get_AdvancedSettings5(This,ppAdvSettings5) \ + ( (This)->lpVtbl -> get_AdvancedSettings5(This,ppAdvSettings5) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClient4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscNonScriptable_INTERFACE_DEFINED__ +#define __IMsTscNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsTscNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsTscNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C1E6743A-41C1-4A74-832A-0DD06C1C7A0E") + IMsTscNonScriptable : public IUnknown + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortablePassword( + /* [in] */ BSTR pPortablePass) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortablePassword( + /* [retval][out] */ BSTR *pPortablePass) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PortableSalt( + /* [in] */ BSTR pPortableSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PortableSalt( + /* [retval][out] */ BSTR *pPortableSalt) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinaryPassword( + /* [in] */ BSTR pBinaryPassword) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinaryPassword( + /* [retval][out] */ BSTR *pBinaryPassword) = 0; + + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BinarySalt( + /* [in] */ BSTR pSalt) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BinarySalt( + /* [retval][out] */ BSTR *pSalt) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResetPassword( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsTscNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsTscNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsTscNonScriptable * This); + + END_INTERFACE + } IMsTscNonScriptableVtbl; + + interface IMsTscNonScriptable + { + CONST_VTBL struct IMsTscNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsTscNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsTscNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsTscNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsTscNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsTscNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2F079C4C-87B2-4AFD-97AB-20CDB43038AE") + IMsRdpClientNonScriptable : public IMsTscNonScriptable + { + public: + virtual HRESULT STDMETHODCALLTYPE NotifyRedirectDeviceChange( + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam) = 0; + + virtual HRESULT STDMETHODCALLTYPE SendKeys( + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptableVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + END_INTERFACE + } IMsRdpClientNonScriptableVtbl; + + interface IMsRdpClientNonScriptable + { + CONST_VTBL struct IMsRdpClientNonScriptableVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ +#define __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientNonScriptable2 */ +/* [object][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientNonScriptable2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("17A5E535-4072-4FA4-AF32-C8D0D47345E9") + IMsRdpClientNonScriptable2 : public IMsRdpClientNonScriptable + { + public: + virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_UIParentWindowHandle( + /* [in] */ HWND phwndUIParentWindowHandle) = 0; + + virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_UIParentWindowHandle( + /* [retval][out] */ HWND *phwndUIParentWindowHandle) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientNonScriptable2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientNonScriptable2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientNonScriptable2 * This); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR rhs); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortablePass); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortablePassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortablePass); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pPortableSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_PortableSalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pPortableSalt); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pBinaryPassword); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinaryPassword )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pBinaryPassword); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ BSTR pSalt); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_BinarySalt )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ BSTR *pSalt); + + HRESULT ( STDMETHODCALLTYPE *ResetPassword )( + IMsRdpClientNonScriptable2 * This); + + HRESULT ( STDMETHODCALLTYPE *NotifyRedirectDeviceChange )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ UINT_PTR wParam, + /* [in] */ LONG_PTR lParam); + + HRESULT ( STDMETHODCALLTYPE *SendKeys )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ long numKeys, + /* [in] */ VARIANT_BOOL *pbArrayKeyUp, + /* [in] */ long *plKeyData); + + /* [propput] */ HRESULT ( STDMETHODCALLTYPE *put_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [in] */ HWND phwndUIParentWindowHandle); + + /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_UIParentWindowHandle )( + IMsRdpClientNonScriptable2 * This, + /* [retval][out] */ HWND *phwndUIParentWindowHandle); + + END_INTERFACE + } IMsRdpClientNonScriptable2Vtbl; + + interface IMsRdpClientNonScriptable2 + { + CONST_VTBL struct IMsRdpClientNonScriptable2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientNonScriptable2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientNonScriptable2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientNonScriptable2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientNonScriptable2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientNonScriptable2_put_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> put_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_get_PortablePassword(This,pPortablePass) \ + ( (This)->lpVtbl -> get_PortablePassword(This,pPortablePass) ) + +#define IMsRdpClientNonScriptable2_put_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> put_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_get_PortableSalt(This,pPortableSalt) \ + ( (This)->lpVtbl -> get_PortableSalt(This,pPortableSalt) ) + +#define IMsRdpClientNonScriptable2_put_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> put_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_get_BinaryPassword(This,pBinaryPassword) \ + ( (This)->lpVtbl -> get_BinaryPassword(This,pBinaryPassword) ) + +#define IMsRdpClientNonScriptable2_put_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> put_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_get_BinarySalt(This,pSalt) \ + ( (This)->lpVtbl -> get_BinarySalt(This,pSalt) ) + +#define IMsRdpClientNonScriptable2_ResetPassword(This) \ + ( (This)->lpVtbl -> ResetPassword(This) ) + + +#define IMsRdpClientNonScriptable2_NotifyRedirectDeviceChange(This,wParam,lParam) \ + ( (This)->lpVtbl -> NotifyRedirectDeviceChange(This,wParam,lParam) ) + +#define IMsRdpClientNonScriptable2_SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) \ + ( (This)->lpVtbl -> SendKeys(This,numKeys,pbArrayKeyUp,plKeyData) ) + + +#define IMsRdpClientNonScriptable2_put_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> put_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#define IMsRdpClientNonScriptable2_get_UIParentWindowHandle(This,phwndUIParentWindowHandle) \ + ( (This)->lpVtbl -> get_UIParentWindowHandle(This,phwndUIParentWindowHandle) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientNonScriptable2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsTscAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsTscAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("809945CC-4B3B-4A92-A6B0-DBF9B5F2EF2D") + IMsTscAdvancedSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_Compress( + /* [in] */ long pcompress) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_Compress( + /* [retval][out] */ long *pcompress) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPeristence( + /* [in] */ long pbitmapPeristence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPeristence( + /* [retval][out] */ long *pbitmapPeristence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_allowBackgroundInput( + /* [in] */ long pallowBackgroundInput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_allowBackgroundInput( + /* [retval][out] */ long *pallowBackgroundInput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyBoardLayoutStr( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PluginDlls( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconFile( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_IconIndex( + /* [in] */ long rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ContainerHandledFullScreen( + /* [in] */ long pContainerHandledFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ContainerHandledFullScreen( + /* [retval][out] */ long *pContainerHandledFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableRdpdr( + /* [in] */ long pDisableRdpdr) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableRdpdr( + /* [retval][out] */ long *pDisableRdpdr) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsTscAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsTscAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsTscAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsTscAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + END_INTERFACE + } IMsTscAdvancedSettingsVtbl; + + interface IMsTscAdvancedSettings + { + CONST_VTBL struct IMsTscAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsTscAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsTscAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsTscAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsTscAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsTscAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsTscAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsTscAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsTscAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3C65B4AB-12B3-465B-ACD4-B8DAD3BFF9E2") + IMsRdpClientAdvancedSettings : public IMsTscAdvancedSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmoothScroll( + /* [in] */ long psmoothScroll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmoothScroll( + /* [retval][out] */ long *psmoothScroll) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AcceleratorPassthrough( + /* [in] */ long pacceleratorPassthrough) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AcceleratorPassthrough( + /* [retval][out] */ long *pacceleratorPassthrough) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ShadowBitmap( + /* [in] */ long pshadowBitmap) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ShadowBitmap( + /* [retval][out] */ long *pshadowBitmap) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_TransportType( + /* [in] */ long ptransportType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_TransportType( + /* [retval][out] */ long *ptransportType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SasSequence( + /* [in] */ long psasSequence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SasSequence( + /* [retval][out] */ long *psasSequence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EncryptionEnabled( + /* [in] */ long pencryptionEnabled) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EncryptionEnabled( + /* [retval][out] */ long *pencryptionEnabled) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DedicatedTerminal( + /* [in] */ long pdedicatedTerminal) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DedicatedTerminal( + /* [retval][out] */ long *pdedicatedTerminal) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RDPPort( + /* [in] */ long prdpPort) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RDPPort( + /* [retval][out] */ long *prdpPort) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableMouse( + /* [in] */ long penableMouse) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableMouse( + /* [retval][out] */ long *penableMouse) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisableCtrlAltDel( + /* [in] */ long pdisableCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisableCtrlAltDel( + /* [retval][out] */ long *pdisableCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableWindowsKey( + /* [in] */ long penableWindowsKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableWindowsKey( + /* [retval][out] */ long *penableWindowsKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DoubleClickDetect( + /* [in] */ long pdoubleClickDetect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DoubleClickDetect( + /* [retval][out] */ long *pdoubleClickDetect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaximizeShell( + /* [in] */ long pmaximizeShell) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaximizeShell( + /* [retval][out] */ long *pmaximizeShell) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyFullScreen( + /* [in] */ long photKeyFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyFullScreen( + /* [retval][out] */ long *photKeyFullScreen) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlEsc( + /* [in] */ long photKeyCtrlEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlEsc( + /* [retval][out] */ long *photKeyCtrlEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltEsc( + /* [in] */ long photKeyAltEsc) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltEsc( + /* [retval][out] */ long *photKeyAltEsc) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltTab( + /* [in] */ long photKeyAltTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltTab( + /* [retval][out] */ long *photKeyAltTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltShiftTab( + /* [in] */ long photKeyAltShiftTab) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltShiftTab( + /* [retval][out] */ long *photKeyAltShiftTab) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyAltSpace( + /* [in] */ long photKeyAltSpace) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyAltSpace( + /* [retval][out] */ long *photKeyAltSpace) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HotKeyCtrlAltDel( + /* [in] */ long photKeyCtrlAltDel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HotKeyCtrlAltDel( + /* [retval][out] */ long *photKeyCtrlAltDel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_orderDrawThreshold( + /* [in] */ long porderDrawThreshold) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_orderDrawThreshold( + /* [retval][out] */ long *porderDrawThreshold) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheSize( + /* [in] */ long pbitmapCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheSize( + /* [retval][out] */ long *pbitmapCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCacheSize( + /* [in] */ long pbitmapVirtualCacheSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCacheSize( + /* [retval][out] */ long *pbitmapVirtualCacheSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ScaleBitmapCachesByBPP( + /* [in] */ long pbScale) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ScaleBitmapCachesByBPP( + /* [retval][out] */ long *pbScale) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NumBitmapCaches( + /* [in] */ long pnumBitmapCaches) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NumBitmapCaches( + /* [retval][out] */ long *pnumBitmapCaches) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CachePersistenceActive( + /* [in] */ long pcachePersistenceActive) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CachePersistenceActive( + /* [retval][out] */ long *pcachePersistenceActive) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PersistCacheDirectory( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_brushSupportLevel( + /* [in] */ long pbrushSupportLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_brushSupportLevel( + /* [retval][out] */ long *pbrushSupportLevel) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_minInputSendInterval( + /* [in] */ long pminInputSendInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_minInputSendInterval( + /* [retval][out] */ long *pminInputSendInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_InputEventsAtOnce( + /* [in] */ long pinputEventsAtOnce) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_InputEventsAtOnce( + /* [retval][out] */ long *pinputEventsAtOnce) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_maxEventCount( + /* [in] */ long pmaxEventCount) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_maxEventCount( + /* [retval][out] */ long *pmaxEventCount) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_keepAliveInterval( + /* [in] */ long pkeepAliveInterval) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_keepAliveInterval( + /* [retval][out] */ long *pkeepAliveInterval) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_shutdownTimeout( + /* [in] */ long pshutdownTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_shutdownTimeout( + /* [retval][out] */ long *pshutdownTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_overallConnectionTimeout( + /* [in] */ long poverallConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_overallConnectionTimeout( + /* [retval][out] */ long *poverallConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_singleConnectionTimeout( + /* [in] */ long psingleConnectionTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_singleConnectionTimeout( + /* [retval][out] */ long *psingleConnectionTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardType( + /* [in] */ long pkeyboardType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardType( + /* [retval][out] */ long *pkeyboardType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardSubType( + /* [in] */ long pkeyboardSubType) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardSubType( + /* [retval][out] */ long *pkeyboardSubType) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardFunctionKey( + /* [in] */ long pkeyboardFunctionKey) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardFunctionKey( + /* [retval][out] */ long *pkeyboardFunctionKey) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WinceFixedPalette( + /* [in] */ long pwinceFixedPalette) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WinceFixedPalette( + /* [retval][out] */ long *pwinceFixedPalette) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectToServerConsole( + /* [in] */ VARIANT_BOOL pConnectToConsole) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectToServerConsole( + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapPersistence( + /* [in] */ long pbitmapPersistence) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapPersistence( + /* [retval][out] */ long *pbitmapPersistence) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MinutesToIdleTimeout( + /* [in] */ long pminutesToIdleTimeout) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MinutesToIdleTimeout( + /* [retval][out] */ long *pminutesToIdleTimeout) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_SmartSizing( + /* [in] */ VARIANT_BOOL pfSmartSizing) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_SmartSizing( + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrLocalPrintingDocName( + /* [in] */ BSTR pLocalPrintingDocName) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrLocalPrintingDocName( + /* [retval][out] */ BSTR *pLocalPrintingDocName) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipCleanTempDirString( + /* [in] */ BSTR clipCleanTempDirString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipCleanTempDirString( + /* [retval][out] */ BSTR *clipCleanTempDirString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RdpdrClipPasteInfoString( + /* [in] */ BSTR clipPasteInfoString) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RdpdrClipPasteInfoString( + /* [retval][out] */ BSTR *clipPasteInfoString) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ClearTextPassword( + /* [in] */ BSTR rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_DisplayConnectionBar( + /* [in] */ VARIANT_BOOL pDisplayConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_DisplayConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PinConnectionBar( + /* [in] */ VARIANT_BOOL pPinConnectionBar) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PinConnectionBar( + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_GrabFocusOnConnect( + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_GrabFocusOnConnect( + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LoadBalanceInfo( + /* [in] */ BSTR pLBInfo) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LoadBalanceInfo( + /* [retval][out] */ BSTR *pLBInfo) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectDrives( + /* [in] */ VARIANT_BOOL pRedirectDrives) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectDrives( + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPrinters( + /* [in] */ VARIANT_BOOL pRedirectPrinters) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPrinters( + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectPorts( + /* [in] */ VARIANT_BOOL pRedirectPorts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectPorts( + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_RedirectSmartCards( + /* [in] */ VARIANT_BOOL pRedirectSmartCards) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectSmartCards( + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache16BppSize( + /* [in] */ long pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache16BppSize( + /* [retval][out] */ long *pBitmapVirtualCache16BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapVirtualCache24BppSize( + /* [in] */ long pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapVirtualCache24BppSize( + /* [retval][out] */ long *pBitmapVirtualCache24BppSize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_PerformanceFlags( + /* [in] */ long pDisableList) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_PerformanceFlags( + /* [retval][out] */ long *pDisableList) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectWithEndpoint( + /* [in] */ VARIANT *rhs) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NotifyTSPublicKey( + /* [in] */ VARIANT_BOOL pfNotify) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NotifyTSPublicKey( + /* [retval][out] */ VARIANT_BOOL *pfNotify) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + END_INTERFACE + } IMsRdpClientAdvancedSettingsVtbl; + + interface IMsRdpClientAdvancedSettings + { + CONST_VTBL struct IMsRdpClientAdvancedSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_RedirectSmartCards_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache16BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_BitmapVirtualCache24BppSize_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ long pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_PerformanceFlags_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ long *pDisableList); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_PerformanceFlags_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT *rhs); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_ConnectWithEndpoint_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [in] */ VARIANT_BOOL pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_put_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Proxy( + IMsRdpClientAdvancedSettings * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + +void __RPC_STUB IMsRdpClientAdvancedSettings_get_NotifyTSPublicKey_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings2 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9AC42117-2B76-4320-AA44-0E616AB8437B") + IMsRdpClientAdvancedSettings2 : public IMsRdpClientAdvancedSettings + { + public: + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CanAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_EnableAutoReconnect( + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_EnableAutoReconnect( + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MaxReconnectAttempts( + /* [in] */ long pMaxReconnectAttempts) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MaxReconnectAttempts( + /* [retval][out] */ long *pMaxReconnectAttempts) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + END_INTERFACE + } IMsRdpClientAdvancedSettings2Vtbl; + + interface IMsRdpClientAdvancedSettings2 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings2_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings2_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings2_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings2_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings2_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings2_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings2_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings2_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings2_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings2_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings2_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings2_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings2_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings2_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings2_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings2_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings2_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings2_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings2_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings2_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings2_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings2_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings2_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings2_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings2_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings2_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings2_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings2_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings2_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings2_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings2_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings2_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings2_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings2_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings2_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings2_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_CanAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_EnableAutoReconnect_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [in] */ long pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_put_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Proxy( + IMsRdpClientAdvancedSettings2 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + +void __RPC_STUB IMsRdpClientAdvancedSettings2_get_MaxReconnectAttempts_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings2_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings3 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("19CD856B-C542-4C53-ACEE-F127E3BE1A59") + IMsRdpClientAdvancedSettings3 : public IMsRdpClientAdvancedSettings2 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowMinimizeButton( + /* [in] */ VARIANT_BOOL pfShowMinimize) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowMinimizeButton( + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_ConnectionBarShowRestoreButton( + /* [in] */ VARIANT_BOOL pfShowRestore) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_ConnectionBarShowRestoreButton( + /* [retval][out] */ VARIANT_BOOL *pfShowRestore) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + END_INTERFACE + } IMsRdpClientAdvancedSettings3Vtbl; + + interface IMsRdpClientAdvancedSettings3 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings3_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings3_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings3_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings3_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings3_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings3_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings3_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings3_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings3_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings3_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings3_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings3_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings3_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings3_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings3_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings3_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings3_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings3_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings3_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings3_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings3_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings3_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings3_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings3_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings3_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings3_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings3_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings3_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings3_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings3_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings3_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings3_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings3_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings3_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings3_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings3_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings3_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowMinimizeButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_put_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Proxy( + IMsRdpClientAdvancedSettings3 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + +void __RPC_STUB IMsRdpClientAdvancedSettings3_get_ConnectionBarShowRestoreButton_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings3_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ +#define __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ + +/* interface IMsRdpClientAdvancedSettings4 */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientAdvancedSettings4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("FBA7F64E-7345-4405-AE50-FA4A763DC0DE") + IMsRdpClientAdvancedSettings4 : public IMsRdpClientAdvancedSettings3 + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AuthenticationLevel( + /* [in] */ unsigned int puiAuthLevel) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AuthenticationLevel( + /* [retval][out] */ unsigned int *puiAuthLevel) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientAdvancedSettings4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientAdvancedSettings4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientAdvancedSettings4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcompress); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compress )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcompress); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPeristence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPeristence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPeristence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pallowBackgroundInput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_allowBackgroundInput )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pallowBackgroundInput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyBoardLayoutStr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PluginDlls )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconFile )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IconIndex )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pContainerHandledFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContainerHandledFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pContainerHandledFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableRdpdr); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableRdpdr )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableRdpdr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psmoothScroll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmoothScroll )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psmoothScroll); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pacceleratorPassthrough); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AcceleratorPassthrough )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pacceleratorPassthrough); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshadowBitmap); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ShadowBitmap )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshadowBitmap); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long ptransportType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TransportType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *ptransportType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psasSequence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SasSequence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psasSequence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pencryptionEnabled); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EncryptionEnabled )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pencryptionEnabled); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdedicatedTerminal); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DedicatedTerminal )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdedicatedTerminal); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long prdpPort); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RDPPort )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *prdpPort); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableMouse); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableMouse )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableMouse); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdisableCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisableCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdisableCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long penableWindowsKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableWindowsKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *penableWindowsKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pdoubleClickDetect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DoubleClickDetect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pdoubleClickDetect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaximizeShell); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaximizeShell )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaximizeShell); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyFullScreen )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltEsc); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltEsc )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltEsc); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltShiftTab); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltShiftTab )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltShiftTab); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyAltSpace); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyAltSpace )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyAltSpace); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long photKeyCtrlAltDel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HotKeyCtrlAltDel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *photKeyCtrlAltDel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long porderDrawThreshold); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_orderDrawThreshold )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *porderDrawThreshold); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapVirtualCacheSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCacheSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapVirtualCacheSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbScale); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScaleBitmapCachesByBPP )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbScale); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pnumBitmapCaches); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NumBitmapCaches )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pnumBitmapCaches); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pcachePersistenceActive); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CachePersistenceActive )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pcachePersistenceActive); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PersistCacheDirectory )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbrushSupportLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_brushSupportLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbrushSupportLevel); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminInputSendInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_minInputSendInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminInputSendInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pinputEventsAtOnce); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InputEventsAtOnce )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pinputEventsAtOnce); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pmaxEventCount); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_maxEventCount )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pmaxEventCount); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeepAliveInterval); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_keepAliveInterval )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeepAliveInterval); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pshutdownTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_shutdownTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pshutdownTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long poverallConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_overallConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *poverallConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long psingleConnectionTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_singleConnectionTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *psingleConnectionTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardSubType); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardSubType )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardSubType); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pkeyboardFunctionKey); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardFunctionKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pkeyboardFunctionKey); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pwinceFixedPalette); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WinceFixedPalette )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pwinceFixedPalette); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pConnectToConsole); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectToServerConsole )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pConnectToConsole); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pbitmapPersistence); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapPersistence )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pbitmapPersistence); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pminutesToIdleTimeout); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinutesToIdleTimeout )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pminutesToIdleTimeout); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfSmartSizing); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SmartSizing )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfSmartSizing); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLocalPrintingDocName); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrLocalPrintingDocName )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLocalPrintingDocName); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipCleanTempDirString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipCleanTempDirString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipCleanTempDirString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR clipPasteInfoString); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RdpdrClipPasteInfoString )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *clipPasteInfoString); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClearTextPassword )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pDisplayConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pDisplayConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pPinConnectionBar); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PinConnectionBar )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pPinConnectionBar); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfGrabFocusOnConnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GrabFocusOnConnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfGrabFocusOnConnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ BSTR pLBInfo); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LoadBalanceInfo )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ BSTR *pLBInfo); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectDrives); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectDrives )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectDrives); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPrinters); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPrinters )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPrinters); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectPorts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectPorts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectPorts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pRedirectSmartCards); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectSmartCards )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pRedirectSmartCards); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache16BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache16BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache16BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pBitmapVirtualCache24BppSize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapVirtualCache24BppSize )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pBitmapVirtualCache24BppSize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pDisableList); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerformanceFlags )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pDisableList); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectWithEndpoint )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT *rhs); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotifyTSPublicKey )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfNotify); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfCanAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfEnableAutoReconnect); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EnableAutoReconnect )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfEnableAutoReconnect); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ long pMaxReconnectAttempts); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxReconnectAttempts )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ long *pMaxReconnectAttempts); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowMinimize); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowMinimizeButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowMinimize); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ VARIANT_BOOL pfShowRestore); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectionBarShowRestoreButton )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ VARIANT_BOOL *pfShowRestore); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AuthenticationLevel )( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + END_INTERFACE + } IMsRdpClientAdvancedSettings4Vtbl; + + interface IMsRdpClientAdvancedSettings4 + { + CONST_VTBL struct IMsRdpClientAdvancedSettings4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientAdvancedSettings4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientAdvancedSettings4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientAdvancedSettings4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientAdvancedSettings4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientAdvancedSettings4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientAdvancedSettings4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientAdvancedSettings4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientAdvancedSettings4_put_Compress(This,pcompress) \ + ( (This)->lpVtbl -> put_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_get_Compress(This,pcompress) \ + ( (This)->lpVtbl -> get_Compress(This,pcompress) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> put_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPeristence(This,pbitmapPeristence) \ + ( (This)->lpVtbl -> get_BitmapPeristence(This,pbitmapPeristence) ) + +#define IMsRdpClientAdvancedSettings4_put_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> put_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_get_allowBackgroundInput(This,pallowBackgroundInput) \ + ( (This)->lpVtbl -> get_allowBackgroundInput(This,pallowBackgroundInput) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyBoardLayoutStr(This,rhs) \ + ( (This)->lpVtbl -> put_KeyBoardLayoutStr(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_PluginDlls(This,rhs) \ + ( (This)->lpVtbl -> put_PluginDlls(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconFile(This,rhs) \ + ( (This)->lpVtbl -> put_IconFile(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_IconIndex(This,rhs) \ + ( (This)->lpVtbl -> put_IconIndex(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> put_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) \ + ( (This)->lpVtbl -> get_ContainerHandledFullScreen(This,pContainerHandledFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> put_DisableRdpdr(This,pDisableRdpdr) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableRdpdr(This,pDisableRdpdr) \ + ( (This)->lpVtbl -> get_DisableRdpdr(This,pDisableRdpdr) ) + + +#define IMsRdpClientAdvancedSettings4_put_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> put_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_get_SmoothScroll(This,psmoothScroll) \ + ( (This)->lpVtbl -> get_SmoothScroll(This,psmoothScroll) ) + +#define IMsRdpClientAdvancedSettings4_put_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> put_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_get_AcceleratorPassthrough(This,pacceleratorPassthrough) \ + ( (This)->lpVtbl -> get_AcceleratorPassthrough(This,pacceleratorPassthrough) ) + +#define IMsRdpClientAdvancedSettings4_put_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> put_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_get_ShadowBitmap(This,pshadowBitmap) \ + ( (This)->lpVtbl -> get_ShadowBitmap(This,pshadowBitmap) ) + +#define IMsRdpClientAdvancedSettings4_put_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> put_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_get_TransportType(This,ptransportType) \ + ( (This)->lpVtbl -> get_TransportType(This,ptransportType) ) + +#define IMsRdpClientAdvancedSettings4_put_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> put_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_get_SasSequence(This,psasSequence) \ + ( (This)->lpVtbl -> get_SasSequence(This,psasSequence) ) + +#define IMsRdpClientAdvancedSettings4_put_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> put_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_get_EncryptionEnabled(This,pencryptionEnabled) \ + ( (This)->lpVtbl -> get_EncryptionEnabled(This,pencryptionEnabled) ) + +#define IMsRdpClientAdvancedSettings4_put_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> put_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_get_DedicatedTerminal(This,pdedicatedTerminal) \ + ( (This)->lpVtbl -> get_DedicatedTerminal(This,pdedicatedTerminal) ) + +#define IMsRdpClientAdvancedSettings4_put_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> put_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_get_RDPPort(This,prdpPort) \ + ( (This)->lpVtbl -> get_RDPPort(This,prdpPort) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> put_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableMouse(This,penableMouse) \ + ( (This)->lpVtbl -> get_EnableMouse(This,penableMouse) ) + +#define IMsRdpClientAdvancedSettings4_put_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> put_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_DisableCtrlAltDel(This,pdisableCtrlAltDel) \ + ( (This)->lpVtbl -> get_DisableCtrlAltDel(This,pdisableCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> put_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableWindowsKey(This,penableWindowsKey) \ + ( (This)->lpVtbl -> get_EnableWindowsKey(This,penableWindowsKey) ) + +#define IMsRdpClientAdvancedSettings4_put_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> put_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_get_DoubleClickDetect(This,pdoubleClickDetect) \ + ( (This)->lpVtbl -> get_DoubleClickDetect(This,pdoubleClickDetect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> put_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_get_MaximizeShell(This,pmaximizeShell) \ + ( (This)->lpVtbl -> get_MaximizeShell(This,pmaximizeShell) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> put_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyFullScreen(This,photKeyFullScreen) \ + ( (This)->lpVtbl -> get_HotKeyFullScreen(This,photKeyFullScreen) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> put_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlEsc(This,photKeyCtrlEsc) \ + ( (This)->lpVtbl -> get_HotKeyCtrlEsc(This,photKeyCtrlEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> put_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltEsc(This,photKeyAltEsc) \ + ( (This)->lpVtbl -> get_HotKeyAltEsc(This,photKeyAltEsc) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> put_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltTab(This,photKeyAltTab) \ + ( (This)->lpVtbl -> get_HotKeyAltTab(This,photKeyAltTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> put_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltShiftTab(This,photKeyAltShiftTab) \ + ( (This)->lpVtbl -> get_HotKeyAltShiftTab(This,photKeyAltShiftTab) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> put_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyAltSpace(This,photKeyAltSpace) \ + ( (This)->lpVtbl -> get_HotKeyAltSpace(This,photKeyAltSpace) ) + +#define IMsRdpClientAdvancedSettings4_put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> put_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) \ + ( (This)->lpVtbl -> get_HotKeyCtrlAltDel(This,photKeyCtrlAltDel) ) + +#define IMsRdpClientAdvancedSettings4_put_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> put_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_get_orderDrawThreshold(This,porderDrawThreshold) \ + ( (This)->lpVtbl -> get_orderDrawThreshold(This,porderDrawThreshold) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> put_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapCacheSize(This,pbitmapCacheSize) \ + ( (This)->lpVtbl -> get_BitmapCacheSize(This,pbitmapCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCacheSize(This,pbitmapVirtualCacheSize) ) + +#define IMsRdpClientAdvancedSettings4_put_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> put_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_get_ScaleBitmapCachesByBPP(This,pbScale) \ + ( (This)->lpVtbl -> get_ScaleBitmapCachesByBPP(This,pbScale) ) + +#define IMsRdpClientAdvancedSettings4_put_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> put_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_get_NumBitmapCaches(This,pnumBitmapCaches) \ + ( (This)->lpVtbl -> get_NumBitmapCaches(This,pnumBitmapCaches) ) + +#define IMsRdpClientAdvancedSettings4_put_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> put_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_get_CachePersistenceActive(This,pcachePersistenceActive) \ + ( (This)->lpVtbl -> get_CachePersistenceActive(This,pcachePersistenceActive) ) + +#define IMsRdpClientAdvancedSettings4_put_PersistCacheDirectory(This,rhs) \ + ( (This)->lpVtbl -> put_PersistCacheDirectory(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> put_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_brushSupportLevel(This,pbrushSupportLevel) \ + ( (This)->lpVtbl -> get_brushSupportLevel(This,pbrushSupportLevel) ) + +#define IMsRdpClientAdvancedSettings4_put_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> put_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_minInputSendInterval(This,pminInputSendInterval) \ + ( (This)->lpVtbl -> get_minInputSendInterval(This,pminInputSendInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> put_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_get_InputEventsAtOnce(This,pinputEventsAtOnce) \ + ( (This)->lpVtbl -> get_InputEventsAtOnce(This,pinputEventsAtOnce) ) + +#define IMsRdpClientAdvancedSettings4_put_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> put_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_get_maxEventCount(This,pmaxEventCount) \ + ( (This)->lpVtbl -> get_maxEventCount(This,pmaxEventCount) ) + +#define IMsRdpClientAdvancedSettings4_put_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> put_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_get_keepAliveInterval(This,pkeepAliveInterval) \ + ( (This)->lpVtbl -> get_keepAliveInterval(This,pkeepAliveInterval) ) + +#define IMsRdpClientAdvancedSettings4_put_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> put_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_shutdownTimeout(This,pshutdownTimeout) \ + ( (This)->lpVtbl -> get_shutdownTimeout(This,pshutdownTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> put_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_overallConnectionTimeout(This,poverallConnectionTimeout) \ + ( (This)->lpVtbl -> get_overallConnectionTimeout(This,poverallConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> put_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_singleConnectionTimeout(This,psingleConnectionTimeout) \ + ( (This)->lpVtbl -> get_singleConnectionTimeout(This,psingleConnectionTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> put_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardType(This,pkeyboardType) \ + ( (This)->lpVtbl -> get_KeyboardType(This,pkeyboardType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> put_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardSubType(This,pkeyboardSubType) \ + ( (This)->lpVtbl -> get_KeyboardSubType(This,pkeyboardSubType) ) + +#define IMsRdpClientAdvancedSettings4_put_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> put_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_get_KeyboardFunctionKey(This,pkeyboardFunctionKey) \ + ( (This)->lpVtbl -> get_KeyboardFunctionKey(This,pkeyboardFunctionKey) ) + +#define IMsRdpClientAdvancedSettings4_put_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> put_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_get_WinceFixedPalette(This,pwinceFixedPalette) \ + ( (This)->lpVtbl -> get_WinceFixedPalette(This,pwinceFixedPalette) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> put_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectToServerConsole(This,pConnectToConsole) \ + ( (This)->lpVtbl -> get_ConnectToServerConsole(This,pConnectToConsole) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> put_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapPersistence(This,pbitmapPersistence) \ + ( (This)->lpVtbl -> get_BitmapPersistence(This,pbitmapPersistence) ) + +#define IMsRdpClientAdvancedSettings4_put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> put_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) \ + ( (This)->lpVtbl -> get_MinutesToIdleTimeout(This,pminutesToIdleTimeout) ) + +#define IMsRdpClientAdvancedSettings4_put_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> put_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_get_SmartSizing(This,pfSmartSizing) \ + ( (This)->lpVtbl -> get_SmartSizing(This,pfSmartSizing) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> put_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) \ + ( (This)->lpVtbl -> get_RdpdrLocalPrintingDocName(This,pLocalPrintingDocName) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> put_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) \ + ( (This)->lpVtbl -> get_RdpdrClipCleanTempDirString(This,clipCleanTempDirString) ) + +#define IMsRdpClientAdvancedSettings4_put_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> put_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_get_RdpdrClipPasteInfoString(This,clipPasteInfoString) \ + ( (This)->lpVtbl -> get_RdpdrClipPasteInfoString(This,clipPasteInfoString) ) + +#define IMsRdpClientAdvancedSettings4_put_ClearTextPassword(This,rhs) \ + ( (This)->lpVtbl -> put_ClearTextPassword(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> put_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_DisplayConnectionBar(This,pDisplayConnectionBar) \ + ( (This)->lpVtbl -> get_DisplayConnectionBar(This,pDisplayConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> put_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_get_PinConnectionBar(This,pPinConnectionBar) \ + ( (This)->lpVtbl -> get_PinConnectionBar(This,pPinConnectionBar) ) + +#define IMsRdpClientAdvancedSettings4_put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> put_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) \ + ( (This)->lpVtbl -> get_GrabFocusOnConnect(This,pfGrabFocusOnConnect) ) + +#define IMsRdpClientAdvancedSettings4_put_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> put_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_get_LoadBalanceInfo(This,pLBInfo) \ + ( (This)->lpVtbl -> get_LoadBalanceInfo(This,pLBInfo) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> put_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectDrives(This,pRedirectDrives) \ + ( (This)->lpVtbl -> get_RedirectDrives(This,pRedirectDrives) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> put_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPrinters(This,pRedirectPrinters) \ + ( (This)->lpVtbl -> get_RedirectPrinters(This,pRedirectPrinters) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> put_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectPorts(This,pRedirectPorts) \ + ( (This)->lpVtbl -> get_RedirectPorts(This,pRedirectPorts) ) + +#define IMsRdpClientAdvancedSettings4_put_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> put_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_get_RedirectSmartCards(This,pRedirectSmartCards) \ + ( (This)->lpVtbl -> get_RedirectSmartCards(This,pRedirectSmartCards) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache16BppSize(This,pBitmapVirtualCache16BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> put_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) \ + ( (This)->lpVtbl -> get_BitmapVirtualCache24BppSize(This,pBitmapVirtualCache24BppSize) ) + +#define IMsRdpClientAdvancedSettings4_put_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> put_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_get_PerformanceFlags(This,pDisableList) \ + ( (This)->lpVtbl -> get_PerformanceFlags(This,pDisableList) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectWithEndpoint(This,rhs) \ + ( (This)->lpVtbl -> put_ConnectWithEndpoint(This,rhs) ) + +#define IMsRdpClientAdvancedSettings4_put_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> put_NotifyTSPublicKey(This,pfNotify) ) + +#define IMsRdpClientAdvancedSettings4_get_NotifyTSPublicKey(This,pfNotify) \ + ( (This)->lpVtbl -> get_NotifyTSPublicKey(This,pfNotify) ) + + +#define IMsRdpClientAdvancedSettings4_get_CanAutoReconnect(This,pfCanAutoReconnect) \ + ( (This)->lpVtbl -> get_CanAutoReconnect(This,pfCanAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> put_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_get_EnableAutoReconnect(This,pfEnableAutoReconnect) \ + ( (This)->lpVtbl -> get_EnableAutoReconnect(This,pfEnableAutoReconnect) ) + +#define IMsRdpClientAdvancedSettings4_put_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> put_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + +#define IMsRdpClientAdvancedSettings4_get_MaxReconnectAttempts(This,pMaxReconnectAttempts) \ + ( (This)->lpVtbl -> get_MaxReconnectAttempts(This,pMaxReconnectAttempts) ) + + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> put_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) \ + ( (This)->lpVtbl -> get_ConnectionBarShowMinimizeButton(This,pfShowMinimize) ) + +#define IMsRdpClientAdvancedSettings4_put_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> put_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + +#define IMsRdpClientAdvancedSettings4_get_ConnectionBarShowRestoreButton(This,pfShowRestore) \ + ( (This)->lpVtbl -> get_ConnectionBarShowRestoreButton(This,pfShowRestore) ) + + +#define IMsRdpClientAdvancedSettings4_put_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> put_AuthenticationLevel(This,puiAuthLevel) ) + +#define IMsRdpClientAdvancedSettings4_get_AuthenticationLevel(This,puiAuthLevel) \ + ( (This)->lpVtbl -> get_AuthenticationLevel(This,puiAuthLevel) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + +/* [propput][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [in] */ unsigned int puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_put_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + +/* [propget][id] */ HRESULT STDMETHODCALLTYPE IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Proxy( + IMsRdpClientAdvancedSettings4 * This, + /* [retval][out] */ unsigned int *puiAuthLevel); + + +void __RPC_STUB IMsRdpClientAdvancedSettings4_get_AuthenticationLevel_Stub( + IRpcStubBuffer *This, + IRpcChannelBuffer *_pRpcChannelBuffer, + PRPC_MESSAGE _pRpcMessage, + DWORD *_pdwStubPhase); + + + +#endif /* __IMsRdpClientAdvancedSettings4_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscSecuredSettings_INTERFACE_DEFINED__ +#define __IMsTscSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsTscSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsTscSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C9D65442-A0F9-45B2-8F73-D61D2DB8CBB6") + IMsTscSecuredSettings : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_StartProgram( + /* [in] */ BSTR pStartProgram) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_StartProgram( + /* [retval][out] */ BSTR *pStartProgram) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_WorkDir( + /* [in] */ BSTR pWorkDir) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_WorkDir( + /* [retval][out] */ BSTR *pWorkDir) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_FullScreen( + /* [in] */ long pfFullScreen) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_FullScreen( + /* [retval][out] */ long *pfFullScreen) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsTscSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsTscSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsTscSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsTscSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + END_INTERFACE + } IMsTscSecuredSettingsVtbl; + + interface IMsTscSecuredSettings + { + CONST_VTBL struct IMsTscSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsTscSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsTscSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsTscSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ +#define __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ + +/* interface IMsRdpClientSecuredSettings */ +/* [object][oleautomation][dual][uuid] */ + + +EXTERN_C const IID IID_IMsRdpClientSecuredSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("605BEFCF-39C1-45CC-A811-068FB7BE346D") + IMsRdpClientSecuredSettings : public IMsTscSecuredSettings + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_KeyboardHookMode( + /* [in] */ long pkeyboardHookMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_KeyboardHookMode( + /* [retval][out] */ long *pkeyboardHookMode) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_AudioRedirectionMode( + /* [in] */ long pAudioRedirectionMode) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_AudioRedirectionMode( + /* [retval][out] */ long *pAudioRedirectionMode) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsRdpClientSecuredSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsRdpClientSecuredSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsRdpClientSecuredSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsRdpClientSecuredSettings * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsRdpClientSecuredSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsRdpClientSecuredSettings * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsRdpClientSecuredSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pStartProgram); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartProgram )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pStartProgram); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [in] */ BSTR pWorkDir); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkDir )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ BSTR *pWorkDir); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pfFullScreen); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pfFullScreen); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pkeyboardHookMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KeyboardHookMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pkeyboardHookMode); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [in] */ long pAudioRedirectionMode); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AudioRedirectionMode )( + IMsRdpClientSecuredSettings * This, + /* [retval][out] */ long *pAudioRedirectionMode); + + END_INTERFACE + } IMsRdpClientSecuredSettingsVtbl; + + interface IMsRdpClientSecuredSettings + { + CONST_VTBL struct IMsRdpClientSecuredSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsRdpClientSecuredSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsRdpClientSecuredSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsRdpClientSecuredSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsRdpClientSecuredSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsRdpClientSecuredSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsRdpClientSecuredSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsRdpClientSecuredSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsRdpClientSecuredSettings_put_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> put_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_get_StartProgram(This,pStartProgram) \ + ( (This)->lpVtbl -> get_StartProgram(This,pStartProgram) ) + +#define IMsRdpClientSecuredSettings_put_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> put_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_get_WorkDir(This,pWorkDir) \ + ( (This)->lpVtbl -> get_WorkDir(This,pWorkDir) ) + +#define IMsRdpClientSecuredSettings_put_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> put_FullScreen(This,pfFullScreen) ) + +#define IMsRdpClientSecuredSettings_get_FullScreen(This,pfFullScreen) \ + ( (This)->lpVtbl -> get_FullScreen(This,pfFullScreen) ) + + +#define IMsRdpClientSecuredSettings_put_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> put_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_get_KeyboardHookMode(This,pkeyboardHookMode) \ + ( (This)->lpVtbl -> get_KeyboardHookMode(This,pkeyboardHookMode) ) + +#define IMsRdpClientSecuredSettings_put_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> put_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#define IMsRdpClientSecuredSettings_get_AudioRedirectionMode(This,pAudioRedirectionMode) \ + ( (This)->lpVtbl -> get_AudioRedirectionMode(This,pAudioRedirectionMode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsRdpClientSecuredSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IMsTscDebug_INTERFACE_DEFINED__ +#define __IMsTscDebug_INTERFACE_DEFINED__ + +/* interface IMsTscDebug */ +/* [object][oleautomation][dual][hidden][uuid] */ + + +EXTERN_C const IID IID_IMsTscDebug; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("209D0EB9-6254-47B1-9033-A98DAE55BB27") + IMsTscDebug : public IDispatch + { + public: + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchBitmapPDU( + /* [in] */ long phatchBitmapPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchBitmapPDU( + /* [retval][out] */ long *phatchBitmapPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchSSBOrder( + /* [in] */ long phatchSSBOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchSSBOrder( + /* [retval][out] */ long *phatchSSBOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchMembltOrder( + /* [in] */ long phatchMembltOrder) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchMembltOrder( + /* [retval][out] */ long *phatchMembltOrder) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_HatchIndexPDU( + /* [in] */ long phatchIndexPDU) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_HatchIndexPDU( + /* [retval][out] */ long *phatchIndexPDU) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_LabelMemblt( + /* [in] */ long plabelMemblt) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_LabelMemblt( + /* [retval][out] */ long *plabelMemblt) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_BitmapCacheMonitor( + /* [in] */ long pbitmapCacheMonitor) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_BitmapCacheMonitor( + /* [retval][out] */ long *pbitmapCacheMonitor) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocFailuresPercent( + /* [in] */ long pmallocFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocFailuresPercent( + /* [retval][out] */ long *pmallocFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_MallocHugeFailuresPercent( + /* [in] */ long pmallocHugeFailuresPercent) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_MallocHugeFailuresPercent( + /* [retval][out] */ long *pmallocHugeFailuresPercent) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_NetThroughput( + /* [in] */ long NetThroughput) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_NetThroughput( + /* [retval][out] */ long *NetThroughput) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXCmdLine( + /* [in] */ BSTR pCLXCmdLine) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXCmdLine( + /* [retval][out] */ BSTR *pCLXCmdLine) = 0; + + virtual /* [propput][id] */ HRESULT STDMETHODCALLTYPE put_CLXDll( + /* [in] */ BSTR pCLXDll) = 0; + + virtual /* [propget][id] */ HRESULT STDMETHODCALLTYPE get_CLXDll( + /* [retval][out] */ BSTR *pCLXDll) = 0; + + }; + +#else /* C style interface */ + + typedef struct IMsTscDebugVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IMsTscDebug * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IMsTscDebug * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + IMsTscDebug * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + IMsTscDebug * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + IMsTscDebug * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IMsTscDebug * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchBitmapPDU )( + IMsTscDebug * This, + /* [in] */ long phatchBitmapPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchBitmapPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchBitmapPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchSSBOrder )( + IMsTscDebug * This, + /* [in] */ long phatchSSBOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchSSBOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchSSBOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchMembltOrder )( + IMsTscDebug * This, + /* [in] */ long phatchMembltOrder); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchMembltOrder )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchMembltOrder); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HatchIndexPDU )( + IMsTscDebug * This, + /* [in] */ long phatchIndexPDU); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HatchIndexPDU )( + IMsTscDebug * This, + /* [retval][out] */ long *phatchIndexPDU); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LabelMemblt )( + IMsTscDebug * This, + /* [in] */ long plabelMemblt); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LabelMemblt )( + IMsTscDebug * This, + /* [retval][out] */ long *plabelMemblt); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [in] */ long pbitmapCacheMonitor); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BitmapCacheMonitor )( + IMsTscDebug * This, + /* [retval][out] */ long *pbitmapCacheMonitor); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [in] */ long pmallocHugeFailuresPercent); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MallocHugeFailuresPercent )( + IMsTscDebug * This, + /* [retval][out] */ long *pmallocHugeFailuresPercent); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NetThroughput )( + IMsTscDebug * This, + /* [in] */ long NetThroughput); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NetThroughput )( + IMsTscDebug * This, + /* [retval][out] */ long *NetThroughput); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXCmdLine )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXCmdLine); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXCmdLine )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXCmdLine); + + /* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CLXDll )( + IMsTscDebug * This, + /* [in] */ BSTR pCLXDll); + + /* [propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CLXDll )( + IMsTscDebug * This, + /* [retval][out] */ BSTR *pCLXDll); + + END_INTERFACE + } IMsTscDebugVtbl; + + interface IMsTscDebug + { + CONST_VTBL struct IMsTscDebugVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IMsTscDebug_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IMsTscDebug_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IMsTscDebug_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IMsTscDebug_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IMsTscDebug_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IMsTscDebug_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IMsTscDebug_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IMsTscDebug_put_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> put_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_get_HatchBitmapPDU(This,phatchBitmapPDU) \ + ( (This)->lpVtbl -> get_HatchBitmapPDU(This,phatchBitmapPDU) ) + +#define IMsTscDebug_put_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> put_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_get_HatchSSBOrder(This,phatchSSBOrder) \ + ( (This)->lpVtbl -> get_HatchSSBOrder(This,phatchSSBOrder) ) + +#define IMsTscDebug_put_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> put_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_get_HatchMembltOrder(This,phatchMembltOrder) \ + ( (This)->lpVtbl -> get_HatchMembltOrder(This,phatchMembltOrder) ) + +#define IMsTscDebug_put_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> put_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_get_HatchIndexPDU(This,phatchIndexPDU) \ + ( (This)->lpVtbl -> get_HatchIndexPDU(This,phatchIndexPDU) ) + +#define IMsTscDebug_put_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> put_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_get_LabelMemblt(This,plabelMemblt) \ + ( (This)->lpVtbl -> get_LabelMemblt(This,plabelMemblt) ) + +#define IMsTscDebug_put_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> put_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_get_BitmapCacheMonitor(This,pbitmapCacheMonitor) \ + ( (This)->lpVtbl -> get_BitmapCacheMonitor(This,pbitmapCacheMonitor) ) + +#define IMsTscDebug_put_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_get_MallocFailuresPercent(This,pmallocFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocFailuresPercent(This,pmallocFailuresPercent) ) + +#define IMsTscDebug_put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> put_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) \ + ( (This)->lpVtbl -> get_MallocHugeFailuresPercent(This,pmallocHugeFailuresPercent) ) + +#define IMsTscDebug_put_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> put_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_get_NetThroughput(This,NetThroughput) \ + ( (This)->lpVtbl -> get_NetThroughput(This,NetThroughput) ) + +#define IMsTscDebug_put_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> put_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_get_CLXCmdLine(This,pCLXCmdLine) \ + ( (This)->lpVtbl -> get_CLXCmdLine(This,pCLXCmdLine) ) + +#define IMsTscDebug_put_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> put_CLXDll(This,pCLXDll) ) + +#define IMsTscDebug_get_CLXDll(This,pCLXDll) \ + ( (This)->lpVtbl -> get_CLXDll(This,pCLXDll) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IMsTscDebug_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_MsTscAx; + +#ifdef __cplusplus + +class DECLSPEC_UUID("1FB464C8-09BB-4017-A2F5-EB742F04392F") +MsTscAx; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient; + +#ifdef __cplusplus + +class DECLSPEC_UUID("791FA017-2DE3-492E-ACC5-53C67A2B94D0") +MsRdpClient; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient2; + +#ifdef __cplusplus + +class DECLSPEC_UUID("9059F30F-4EB1-4BD2-9FDC-36F43A218F4A") +MsRdpClient2; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient3; + +#ifdef __cplusplus + +class DECLSPEC_UUID("7584C670-2274-4EFB-B00B-D6AABA6D3850") +MsRdpClient3; +#endif + +EXTERN_C const CLSID CLSID_MsRdpClient4; + +#ifdef __cplusplus + +class DECLSPEC_UUID("6AE29350-321B-42BE-BBE5-12FB5270C0DE") +MsRdpClient4; +#endif +#endif /* __MSTSCLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_i.c b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_i.c new file mode 100644 index 00000000000..5930c974073 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/mstsclib_redist_i.c @@ -0,0 +1,145 @@ + + +/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */ + +/* link this file in with the server and any clients */ + + + /* File created by MIDL compiler version 7.00.0493 */ +/* at Sun Aug 13 16:46:05 2006 + */ +/* Compiler settings for .\mstsclib_redist.idl: + Oicf, W1, Zp8, env=Win32 (32b run) + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +//@@MIDL_FILE_HEADING( ) + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +#ifdef __cplusplus +extern "C"{ +#endif + + +#include +#include + +#ifdef _MIDL_USE_GUIDDEF_ + +#ifndef INITGUID +#define INITGUID +#include +#undef INITGUID +#else +#include +#endif + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) + +#else // !_MIDL_USE_GUIDDEF_ + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef struct _IID +{ + unsigned long x; + unsigned short s1; + unsigned short s2; + unsigned char c[8]; +} IID; + +#endif // __IID_DEFINED__ + +#ifndef CLSID_DEFINED +#define CLSID_DEFINED +typedef IID CLSID; +#endif // CLSID_DEFINED + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} + +#endif !_MIDL_USE_GUIDDEF_ + +MIDL_DEFINE_GUID(IID, LIBID_MSTSCLib,0xAF586AAE,0xB62A,0x420E,0xB7,0x96,0x29,0x4E,0x7E,0xE6,0x4C,0x70); + + +MIDL_DEFINE_GUID(IID, DIID_IMsTscAxEvents,0x336D5562,0xEFA8,0x482E,0x8C,0xB3,0xC5,0xC0,0xFC,0x7A,0x7D,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAx,0x327BB5CD,0x834E,0x4400,0xAE,0xF2,0xB3,0x0E,0x15,0xE5,0xD6,0x82); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient,0x92B4A539,0x7115,0x4B7C,0xA5,0xA9,0xE5,0xD9,0xEF,0xC2,0x78,0x0A); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient2,0xE7E17DC4,0x3B71,0x4BA7,0xA8,0xE6,0x28,0x1F,0xFA,0xDC,0xA2,0x8F); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient3,0x91B7CBC5,0xA72E,0x4FA0,0x93,0x00,0xD6,0x47,0xD7,0xE8,0x97,0xFF); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClient4,0x095E0738,0xD97D,0x488B,0xB9,0xF6,0xDD,0x0E,0x8D,0x66,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscNonScriptable,0xC1E6743A,0x41C1,0x4A74,0x83,0x2A,0x0D,0xD0,0x6C,0x1C,0x7A,0x0E); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable,0x2F079C4C,0x87B2,0x4AFD,0x97,0xAB,0x20,0xCD,0xB4,0x30,0x38,0xAE); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientNonScriptable2,0x17A5E535,0x4072,0x4FA4,0xAF,0x32,0xC8,0xD0,0xD4,0x73,0x45,0xE9); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscAdvancedSettings,0x809945CC,0x4B3B,0x4A92,0xA6,0xB0,0xDB,0xF9,0xB5,0xF2,0xEF,0x2D); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings,0x3C65B4AB,0x12B3,0x465B,0xAC,0xD4,0xB8,0xDA,0xD3,0xBF,0xF9,0xE2); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings2,0x9AC42117,0x2B76,0x4320,0xAA,0x44,0x0E,0x61,0x6A,0xB8,0x43,0x7B); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings3,0x19CD856B,0xC542,0x4C53,0xAC,0xEE,0xF1,0x27,0xE3,0xBE,0x1A,0x59); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientAdvancedSettings4,0xFBA7F64E,0x7345,0x4405,0xAE,0x50,0xFA,0x4A,0x76,0x3D,0xC0,0xDE); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscSecuredSettings,0xC9D65442,0xA0F9,0x45B2,0x8F,0x73,0xD6,0x1D,0x2D,0xB8,0xCB,0xB6); + + +MIDL_DEFINE_GUID(IID, IID_IMsRdpClientSecuredSettings,0x605BEFCF,0x39C1,0x45CC,0xA8,0x11,0x06,0x8F,0xB7,0xBE,0x34,0x6D); + + +MIDL_DEFINE_GUID(IID, IID_IMsTscDebug,0x209D0EB9,0x6254,0x47B1,0x90,0x33,0xA9,0x8D,0xAE,0x55,0xBB,0x27); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsTscAx,0x1FB464C8,0x09BB,0x4017,0xA2,0xF5,0xEB,0x74,0x2F,0x04,0x39,0x2F); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient,0x791FA017,0x2DE3,0x492E,0xAC,0xC5,0x53,0xC6,0x7A,0x2B,0x94,0xD0); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient2,0x9059F30F,0x4EB1,0x4BD2,0x9F,0xDC,0x36,0xF4,0x3A,0x21,0x8F,0x4A); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient3,0x7584C670,0x2274,0x4EFB,0xB0,0x0B,0xD6,0xAA,0xBA,0x6D,0x38,0x50); + + +MIDL_DEFINE_GUID(CLSID, CLSID_MsRdpClient4,0x6AE29350,0x321B,0x42BE,0xBB,0xE5,0x12,0xFB,0x52,0x70,0xC0,0xDE); + +#undef MIDL_DEFINE_GUID + +#ifdef __cplusplus +} +#endif + + + diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp new file mode 100644 index 00000000000..42304753671 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp @@ -0,0 +1,653 @@ +#include "stdafx.h" + +#include + +#include "rdesktop/rdesktop.h" +#include "rdesktop/proto.h" + +extern "C" +{ + /* ==== BEGIN POOP ==== */ + // Temporary implementations of stuff we totally positively need to make the Real Thing happy + /* produce a hex dump */ + void + hexdump(unsigned char *p, unsigned int len) + { + unsigned char *line = p; + int i, thisline; + unsigned int offset = 0; + + while (offset < len) + { + printf("%04x ", offset); + thisline = len - offset; + if (thisline > 16) + thisline = 16; + + for (i = 0; i < thisline; i++) + printf("%02x ", line[i]); + + for (; i < 16; i++) + printf(" "); + + for (i = 0; i < thisline; i++) + printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.'); + + printf("\n"); + offset += thisline; + line += thisline; + } + } + + void generate_random(uint8 * random) + { + memcpy(random, "12345678901234567890123456789012", 32); + } + + /* report an error */ + void + error(char *format, ...) + { + va_list ap; + + fprintf(stderr, "ERROR: "); + + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + } + + /* report a warning */ + void + warning(char *format, ...) + { + va_list ap; + + fprintf(stderr, "WARNING: "); + + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + } + + /* report an unimplemented protocol feature */ + void + unimpl(char *format, ...) + { + va_list ap; + + fprintf(stderr, "NOT IMPLEMENTED: "); + + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + } + + /* Create the bitmap cache directory */ + BOOL + rd_pstcache_mkdir(void) + { + char *home; + char bmpcache_dir[256]; + + home = getenv("HOME"); + + if (home == NULL) + return False; + + sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop"); + + if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST) + { + perror(bmpcache_dir); + return False; + } + + sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop/cache"); + + if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST) + { + perror(bmpcache_dir); + return False; + } + + return True; + } + + /* open a file in the .rdesktop directory */ + int + rd_open_file(char *filename) + { + char *home; + char fn[256]; + int fd; + + home = getenv("HOME"); + if (home == NULL) + return -1; + sprintf(fn, "%s/.rdesktop/%s", home, filename); + fd = _open(fn, _O_RDWR | _O_CREAT, 0); + if (fd == -1) + perror(fn); + return fd; + } + + /* close file */ + void + rd_close_file(int fd) + { + _close(fd); + } + + /* read from file*/ + int + rd_read_file(int fd, void *ptr, int len) + { + return _read(fd, ptr, len); + } + + /* write to file */ + int + rd_write_file(int fd, void *ptr, int len) + { + return _write(fd, ptr, len); + } + + /* move file pointer */ + int + rd_lseek_file(int fd, int offset) + { + return _lseek(fd, offset, SEEK_SET); + } + + /* do a write lock on a file */ + BOOL + rd_lock_file(int fd, int start, int len) + { + // TODOOO... + return False; + } + + int + load_licence(RDPCLIENT * This, unsigned char **data) + { + return -1; + } + + void + save_licence(RDPCLIENT * This, unsigned char *data, int length) + { + } + + /* ==== END POOP ==== */ + + /* ==== UI ==== */ + // Globals are totally teh evil, but cut me some slack here + HWND hwnd; + HBITMAP hbmBuffer; + PVOID pBuffer; + HDC hdcBuffer; + UINT wmZMouseWheel; + +}; + +static +void +mstsc_mousewheel(RDPCLIENT * This, int value, LPARAM lparam) +{ + uint16 button; + + if(value < 0) + button = MOUSE_FLAG_BUTTON5; + else + button = MOUSE_FLAG_BUTTON4; + + if(value < 0) + value = - value; + + for(int click = 0; click < value; click += WHEEL_DELTA) + rdp_send_input(This, GetTickCount(), RDP_INPUT_MOUSE, button | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); +} + +static +LRESULT +CALLBACK +mstsc_WndProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam) +{ + // BUGBUG: LongToPtr & PtrToLong will break on Win64 + + RDPCLIENT * This = reinterpret_cast(LongToPtr(GetWindowLongPtr(hwnd, GWLP_USERDATA))); + + switch(uMsg) + { + case WM_CLOSE: + DestroyWindow(hwnd); + break; + + // FIXME: temporary + case WM_DESTROY: + PostQuitMessage(0); + break; + + /* Initialization */ + case WM_CREATE: + This = static_cast(reinterpret_cast(lparam)->lpCreateParams); + SetWindowLongPtr(hwnd, GWLP_USERDATA, PtrToLong(This)); + break; + + /* Painting */ + case WM_PRINTCLIENT: + if(wparam == 0) + break; + + case WM_PAINT: + { + HDC hdc = (HDC)wparam; + + // A DC was provided: print the whole client area into it + if(hdc) + { + RECT rc; + GetClientRect(hwnd, &rc); + BitBlt(hdc, 0, 0, rc.right, rc.bottom, hdcBuffer, 0, 0, SRCCOPY); + } + // Otherwise, we're refreshing to screen + else + { + PAINTSTRUCT ps; + hdc = BeginPaint(hwnd, &ps); + + BitBlt + ( + hdc, + ps.rcPaint.left, + ps.rcPaint.top, + ps.rcPaint.right - ps.rcPaint.left, + ps.rcPaint.bottom - ps.rcPaint.top, + hdcBuffer, + ps.rcPaint.left, + ps.rcPaint.top, + SRCCOPY + ); + + EndPaint(hwnd, &ps); + } + } + + break; + + /* Keyboard stuff */ + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYPRESS | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + case WM_SYSKEYUP: + case WM_KEYUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_SCANCODE, RDP_KEYRELEASE | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0), LOBYTE(HIWORD(lparam)), 0); + break; + + /* Mouse stuff */ + // Cursor shape + case WM_SETCURSOR: + if(LOWORD(lparam) == HTCLIENT) + { + //SetCursor(hcursor); + return TRUE; + } + + break; + + // Movement + case WM_MOUSEMOVE: + //if(This->sendmotion || wparam & (MK_LBUTTON | MK_RBUTTON | MK_MBUTTON | MK_XBUTTON1 | MK_XBUTTON2)) + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_MOVE, LOWORD(lparam), HIWORD(lparam)); + + break; + + // Buttons + // TODO: X buttons + case WM_LBUTTONDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONDOWN: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3 | MOUSE_FLAG_DOWN, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_LBUTTONUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON1, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_RBUTTONUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON2, LOWORD(lparam), HIWORD(lparam)); + break; + + case WM_MBUTTONUP: + rdp_send_input(This, GetMessageTime(), RDP_INPUT_MOUSE, MOUSE_FLAG_BUTTON3, LOWORD(lparam), HIWORD(lparam)); + break; + + // Wheel + case WM_MOUSEWHEEL: + mstsc_mousewheel(This, (SHORT)HIWORD(wparam), lparam); + break; + + default: + /* Registered messages */ + // Z-Mouse wheel support - you know, just in case + if(uMsg == wmZMouseWheel) + { + mstsc_mousewheel(This, (int)wparam, lparam); + break; + } + + /* Unhandled messages */ + return DefWindowProc(hwnd, uMsg, wparam, lparam); + } + + return 0; +} + +static +DWORD +WINAPI +mstsc_ProtocolIOThread +( + LPVOID lpArgument +) +{ + RDPCLIENT * This = static_cast(lpArgument); + + WCHAR hostname[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD dw = ARRAYSIZE(hostname); + GetComputerNameW(hostname, &dw); + + uint32 flags = RDP_LOGON_NORMAL | RDP_LOGON_COMPRESSION | RDP_LOGON_COMPRESSION2; + + rdp_connect(This, "10.0.0.3", flags, L"Administrator", L"", L"", L"", L"", hostname, ""); + //rdp_connect(This, "192.168.7.232", flags, "", "", "", ""); + + hdcBuffer = CreateCompatibleDC(NULL); + + BITMAPINFO bmi; + bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); + bmi.bmiHeader.biWidth = This->width; + bmi.bmiHeader.biHeight = This->height; + bmi.bmiHeader.biPlanes = 1; + bmi.bmiHeader.biBitCount = This->server_depth; + bmi.bmiHeader.biCompression = BI_RGB; + bmi.bmiHeader.biSizeImage = 0; + bmi.bmiHeader.biXPelsPerMeter = 0; + bmi.bmiHeader.biYPelsPerMeter = 0; + bmi.bmiHeader.biClrUsed = 0; // TODO! palette displays + bmi.bmiHeader.biClrImportant = 0; // TODO! palette displays + + hbmBuffer = CreateDIBSection(hdcBuffer, &bmi, DIB_RGB_COLORS, &pBuffer, NULL, 0); + + SelectObject(hdcBuffer, hbmBuffer); + +#if 0 + rcClip.left = 0; + rcClip.top = 0; + rcClip.right = This->width + 1; + rcClip.bottom = This->height + 1; +#endif + + BOOL deactivated; + uint32 ext_disc_reason; + + rdp_main_loop(This, &deactivated, &ext_disc_reason); + // TODO: handle redirection + // EVENT: OnDisconnect + + SendMessage(hwnd, WM_CLOSE, 0, 0); + + return 0; +} + +/* Virtual channel stuff */ +extern "C" void channel_process(RDPCLIENT * This, STREAM s, uint16 mcs_channel) +{ +} + +DWORD tlsIndex; + +typedef struct CHANNEL_HANDLE_ +{ + RDPCLIENT * client; + int channel; +} +CHANNEL_HANDLE; + +static +UINT +VCAPITYPE +VirtualChannelInit +( + LPVOID * ppInitHandle, + PCHANNEL_DEF pChannel, + INT channelCount, + ULONG versionRequested, + PCHANNEL_INIT_EVENT_FN pChannelInitEventProc +) +{ + if(channelCount <= 0) + return CHANNEL_RC_BAD_CHANNEL; + + if(ppInitHandle == NULL) + return CHANNEL_RC_BAD_INIT_HANDLE; + + if(pChannel == NULL) + return CHANNEL_RC_BAD_CHANNEL; + + if(pChannelInitEventProc == NULL) + return CHANNEL_RC_BAD_PROC; + + RDPCLIENT * This = (RDPCLIENT *)TlsGetValue(tlsIndex); + + if(This == NULL) + return CHANNEL_RC_NOT_IN_VIRTUALCHANNELENTRY; + + if(This->num_channels + channelCount > CHANNEL_MAX_COUNT) + return CHANNEL_RC_TOO_MANY_CHANNELS; + + for(INT i = 0; i < channelCount; ++ i) + { + if(strlen(pChannel[i].name) > CHANNEL_NAME_LEN) + return CHANNEL_RC_BAD_CHANNEL; + } + + memcpy(This->channel_defs + This->num_channels, pChannel, sizeof(*pChannel) * channelCount); + +#if 0 // TODO + for(INT i = 0; i < channelCount; ++ i) + { + pChannel[i].options |= CHANNEL_OPTION_INITIALIZED; + + int j = This->num_channels + i; + This->channel_data[j].opened = 0; + This->channel_data[j].pChannelInitEventProc = pChannelInitEventProc; + This->channel_data[j].pChannelOpenEventProc = NULL; + } +#endif + + This->num_channels += channelCount; + + *ppInitHandle = This; + + return CHANNEL_RC_OK; +} + +UINT +VCAPITYPE +VirtualChannelOpen +( + LPVOID pInitHandle, + LPDWORD pOpenHandle, + PCHAR pChannelName, + PCHANNEL_OPEN_EVENT_FN pChannelOpenEventProc +) +{ + if(pInitHandle == NULL) + return CHANNEL_RC_BAD_INIT_HANDLE; + + if(pOpenHandle == NULL) + return CHANNEL_RC_BAD_CHANNEL_HANDLE; + + if(pChannelName == NULL) + return CHANNEL_RC_UNKNOWN_CHANNEL_NAME; + + if(pChannelOpenEventProc == NULL) + return CHANNEL_RC_BAD_PROC; + + RDPCLIENT * This = (RDPCLIENT *)pInitHandle; + +#if 0 // TODO + for(unsigned i = 0; i < This->num_channels; ++ i) + { + if(strcmp(pChannelName, This->channel_defs[i].name) == 0) + { + if(This->channel_data[i].opened) + return CHANNEL_RC_ALREADY_OPEN; + + This->channel_data[i].opened = 1; + This->channel_data[i].pChannelOpenEventProc = pChannelOpenEventProc; + + // TODO: allocate a handle here + *pOpenHandle = 0; + + break; + } + } +#endif + + return CHANNEL_RC_OK; +} + +UINT VCAPITYPE VirtualChannelClose +( + DWORD openHandle +) +{ + // TODO: channel handle management + return CHANNEL_RC_BAD_CHANNEL_HANDLE; +} + +UINT VCAPITYPE VirtualChannelWrite +( + DWORD openHandle, + LPVOID pData, + ULONG dataLength, + LPVOID pUserData +) +{ + // TODO + return CHANNEL_RC_BAD_CHANNEL_HANDLE; +} + +int wmain() +{ + WSADATA wsd; + WSAStartup(MAKEWORD(2, 2), &wsd); + + static RDPCLIENT This_; // NOTE: this is HUGE and would overflow the stack! + ZeroMemory(&This_, sizeof(This_)); + + RDPCLIENT * This = &This_; + + /* + Threading model for MissTosca: + - main thread is the GUI thread. Message loop maintained by caller + - protocol I/O is handled in an I/O thread (or thread pool) + - extra threads maintained by virtual channel handlers. Virtual channel writes are thread-neutral + + How we handle drawing: at the moment just an off-screen buffer we dump on-screen when asked to. + Still considering how to draw on-screen directly and *then* buffering off-screen (for example, + when running inside another remote session) + */ + + // FIXME: keyboard mess + This->keylayout = 0x409; + This->keyboard_type = 0x4; + This->keyboard_subtype = 0x0; + This->keyboard_functionkeys = 0xc; + This->width = 800; + This->height = 600; + This->server_depth = 24; + This->bitmap_compression = True; + //This->sendmotion = True; + This->bitmap_cache = True; + This->bitmap_cache_persist_enable = False; + This->bitmap_cache_precache = True; + This->encryption = True; + This->packet_encryption = True; + This->desktop_save = True; + This->polygon_ellipse_orders = False; // = True; + //This->fullscreen = False; + //This->grab_keyboard = True; + //This->hide_decorations = False; + This->use_rdp5 = True; + //This->rdpclip = True; + This->console_session = False; + //This->numlock_sync = False; + //This->seamless_rdp = False; + This->rdp5_performanceflags = RDP5_NO_WALLPAPER | RDP5_NO_FULLWINDOWDRAG | RDP5_NO_MENUANIMATIONS; + This->tcp_port_rdp = TCP_PORT_RDP; + +#define NOT_SET -1 + This->cache.bmpcache_lru[0] = NOT_SET; + This->cache.bmpcache_lru[1] = NOT_SET; + This->cache.bmpcache_lru[2] = NOT_SET; + This->cache.bmpcache_mru[0] = NOT_SET; + This->cache.bmpcache_mru[1] = NOT_SET; + This->cache.bmpcache_mru[2] = NOT_SET; + + This->rdp.current_status = 1; + + //hcursor = NULL; + + WNDCLASS wc; + ZeroMemory(&wc, sizeof(wc)); + + wc.lpfnWndProc = mstsc_WndProc; + wc.hbrBackground = static_cast(GetStockObject(HOLLOW_BRUSH)); + wc.lpszClassName = TEXT("MissTosca_Desktop"); + + wmZMouseWheel = RegisterWindowMessage(MSH_MOUSEWHEEL); + + ATOM a = RegisterClass(&wc); + + hwnd = CreateWindow + ( + MAKEINTATOM(a), + NULL, + WS_POPUP | WS_VISIBLE, + CW_USEDEFAULT, + CW_USEDEFAULT, + This->width, + This->height, + NULL, + NULL, + NULL, + This + ); + + // The righ time to start the protocol thread + DWORD dwThreadId; + HANDLE hThread = CreateThread(NULL, 0, mstsc_ProtocolIOThread, This, 0, &dwThreadId); + + // Your standard, garden variety message loop + MSG msg; + + while(GetMessage(&msg, NULL, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } +} + +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj new file mode 100644 index 00000000000..1b9c3db7c12 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp new file mode 100644 index 00000000000..0bc452e65b3 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp @@ -0,0 +1,3 @@ +#include "stdafx.h" + +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h new file mode 100644 index 00000000000..3815a3ebce6 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h @@ -0,0 +1,32 @@ +#pragma once + +#define _CRT_SECURE_NO_DEPRECATE +#define _SECURE_SCL 0 + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#define WIN32_LEAN_AND_MEAN +#include +#include + +#include +#include +#include +#include +#include + +#include + +// EOF diff --git a/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/typelib.rh b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/typelib.rh new file mode 100644 index 00000000000..172e1a6cce2 --- /dev/null +++ b/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/typelib.rh @@ -0,0 +1,21 @@ +#define TOSTRING_(X) #X +#define TOSTRING(X) TOSTRING_(X) + +LANGUAGE 0, 0 + +#ifndef TYPELIB_PATH__ +#error TYPELIB_PATH__ not defined +#endif + +#ifndef TYPELIB_RESOURCEID__ +#error TYPELIB_RESOURCEID__ not defined +#endif + +/* + NOTE: + TYPELIB_PATH__ is defined on the command line (-D TYPELIB_PATH__=) + TYPELIB_RESOURCEID__ is defined before this file is included +*/ +TYPELIB_RESOURCEID__ TYPELIB TOSTRING(TYPELIB_PATH__) + +// EOF diff --git a/reactos/base/applications/tsclient/rdesktop/COPYING b/reactos/base/applications/tsclient/rdesktop/COPYING new file mode 100644 index 00000000000..15fb334c821 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/COPYING @@ -0,0 +1,346 @@ +This software is released under the GNU General Public License +(reproduced below) with the additional exemption that compiling, +linking, and/or using OpenSSL together with this software is +allowed. + +--- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/reactos/base/applications/tsclient/rdesktop/Makefile.in b/reactos/base/applications/tsclient/rdesktop/Makefile.in new file mode 100644 index 00000000000..b2edc5d063d --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/Makefile.in @@ -0,0 +1,158 @@ +# +# rdesktop: A Remote Desktop Protocol client +# Makefile.in +# Copyright (C) Matthew Chapman 1999-2005 +# + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +mandir = @mandir@ +datadir = @datadir@ + +VERSION = @PACKAGE_VERSION@ +KEYMAP_PATH = $(datadir)/rdesktop/keymaps/ + +CC = @CC@ +INSTALL = @INSTALL@ +CFLAGS = @CFLAGS@ @X_CFLAGS@ @DEFS@ -DKEYMAP_PATH=\"$(KEYMAP_PATH)\" +LDFLAGS = @LDFLAGS@ @LIBS@ @X_LIBS@ @X_EXTRA_LIBS@ +STRIP = @STRIP@ + +TARGETS = rdesktop @RDP2VNCTARGET@ +VNCINC = @VNCINC@ +LDVNC = @LDVNC@ +VNCLINK = @VNCLINK@ +SOUNDOBJ = @SOUNDOBJ@ + +RDPOBJ = tcp.o iso.o mcs.o secure.o licence.o rdp.o orders.o bitmap.o cache.o rdp5.o channels.o rdpdr.o serial.o printer.o disk.o parallel.o printercache.o mppc.o pstcache.o lspci.o seamless.o +X11OBJ = rdesktop.o xwin.o xkeymap.o ewmhints.o xclip.o cliprdr.o +VNCOBJ = vnc/rdp2vnc.o vnc/vnc.o vnc/xkeymap.o vnc/x11stubs.o + +.PHONY: all +all: $(TARGETS) + +rdesktop: $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) + $(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) -lX11 + +rdp2vnc: $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) + $(VNCLINK) $(CFLAGS) -o rdp2vnc $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(LDFLAGS) $(LDVNC) + +vnc/rdp2vnc.o: rdesktop.c + $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/rdp2vnc.o -c rdesktop.c + +vnc/vnc.o: vnc/vnc.c + $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/vnc.o -c vnc/vnc.c + +vnc/xkeymap.o: xkeymap.c + $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/xkeymap.o -c xkeymap.c + +vnc/x11stubs.o: vnc/x11stubs.c + $(CC) $(CFLAGS) $(VNCINC) -o vnc/x11stubs.o -c vnc/x11stubs.c + +.PHONY: install +install: installbin installkeymaps installman + +.PHONY: installbin +installbin: rdesktop + mkdir -p $(DESTDIR)$(bindir) + $(INSTALL) rdesktop $(DESTDIR)$(bindir) + $(STRIP) $(DESTDIR)$(bindir)/rdesktop + chmod 755 $(DESTDIR)$(bindir)/rdesktop + +.PHONY: installman +installman: doc/rdesktop.1 + mkdir -p $(DESTDIR)$(mandir)/man1 + cp doc/rdesktop.1 $(DESTDIR)$(mandir)/man1 + chmod 644 $(DESTDIR)$(mandir)/man1/rdesktop.1 + +.PHONY: installkeymaps +installkeymaps: + mkdir -p $(DESTDIR)$(KEYMAP_PATH) +# Prevent copying the CVS directory + cp keymaps/?? keymaps/??-?? $(DESTDIR)$(KEYMAP_PATH) + cp keymaps/common $(DESTDIR)$(KEYMAP_PATH) + cp keymaps/modifiers $(DESTDIR)$(KEYMAP_PATH) + chmod 644 $(DESTDIR)$(KEYMAP_PATH)/* + +.PHONY: proto +proto: + cat proto.head > proto.h + cproto -DMAKE_PROTO \ + bitmap.c cache.c channels.c cliprdr.c disk.c mppc.c ewmhints.c \ + iso.c licence.c mcs.c orders.c parallel.c printer.c printercache.c \ + pstcache.c rdesktop.c rdp5.c rdp.c rdpdr.c rdpsnd.c rdpsnd_oss.c \ + secure.c serial.c tcp.c xclip.c xkeymap.c xwin.c lspci.c seamless.c >> proto.h + cat proto.tail >> proto.h + +.PHONY: clean +clean: + rm -f *.o *~ vnc/*.o vnc/*~ rdesktop rdp2vnc + +.PHONY: distclean +distclean: clean + rm -rf autom4te.cache config.log config.status Makefile + +.PHONY: dist +dist: rdesktop-$(VERSION).tar.gz + +rdesktop-$(VERSION).tar.gz: Makefile configure + mkdir -p /tmp/rdesktop-make-dist-dir + ln -sf `pwd` /tmp/rdesktop-make-dist-dir/rdesktop-$(VERSION) + (cd /tmp/rdesktop-make-dist-dir; \ + tar zcvf rdesktop-$(VERSION)/rdesktop-$(VERSION).tar.gz \ + rdesktop-$(VERSION)/COPYING \ + rdesktop-$(VERSION)/README \ + rdesktop-$(VERSION)/configure \ + rdesktop-$(VERSION)/configure.ac \ + rdesktop-$(VERSION)/config.sub \ + rdesktop-$(VERSION)/config.guess \ + rdesktop-$(VERSION)/bootstrap \ + rdesktop-$(VERSION)/install-sh \ + rdesktop-$(VERSION)/Makefile.in \ + rdesktop-$(VERSION)/rdesktop.spec \ + rdesktop-$(VERSION)/*.c \ + rdesktop-$(VERSION)/*.h \ + rdesktop-$(VERSION)/proto.head \ + rdesktop-$(VERSION)/proto.tail \ + rdesktop-$(VERSION)/keymaps/?? \ + rdesktop-$(VERSION)/keymaps/??-?? \ + rdesktop-$(VERSION)/keymaps/common \ + rdesktop-$(VERSION)/keymaps/modifiers \ + rdesktop-$(VERSION)/keymaps/convert-map \ + rdesktop-$(VERSION)/doc/HACKING \ + rdesktop-$(VERSION)/doc/AUTHORS \ + rdesktop-$(VERSION)/doc/TODO \ + rdesktop-$(VERSION)/doc/ChangeLog \ + rdesktop-$(VERSION)/doc/keymapping.txt \ + rdesktop-$(VERSION)/doc/keymap-names.txt \ + rdesktop-$(VERSION)/doc/ipv6.txt \ + rdesktop-$(VERSION)/doc/licensing.txt \ + rdesktop-$(VERSION)/doc/patches.txt \ + rdesktop-$(VERSION)/doc/redirection.txt \ + rdesktop-$(VERSION)/doc/rdesktop.1 ) + rm -rf /tmp/rdesktop-make-dist-dir + +.PHONY: dist-noversion +dist-noversion: rdesktop.tar.gz + +rdesktop.tar.gz: rdesktop-$(VERSION).tar.gz + mkdir -p /tmp/rdesktop-make-dist-dir + tar zxvf $< -C /tmp/rdesktop-make-dist-dir + mv /tmp/rdesktop-make-dist-dir/rdesktop-$(VERSION) /tmp/rdesktop-make-dist-dir/rdesktop + ls /tmp/rdesktop-make-dist-dir/rdesktop + tar zcvf $@ -C /tmp/rdesktop-make-dist-dir rdesktop + rm -rf /tmp/rdesktop-make-dist-dir + +Makefile: Makefile.in configure + ./config.status + +configure: configure.ac + ./bootstrap + +.SUFFIXES: +.SUFFIXES: .c .o + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< + diff --git a/reactos/base/applications/tsclient/rdesktop/README b/reactos/base/applications/tsclient/rdesktop/README new file mode 100644 index 00000000000..11a5c8faac5 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/README @@ -0,0 +1,32 @@ +=========================================== +rdesktop: A Remote Desktop Protocol client. +=========================================== + +rdesktop is a client for Microsoft Windows NT Terminal Server, Windows 2000 +Terminal Services, Windows 2003 Terminal Services/Remote Desktop, Windows XP +Remote Desktop, and possibly other Terminal Services products. +rdesktop currently implements the RDP version 4 and 5 protocols. + +Installation +------------ +rdesktop uses a typical GNU-style build procedure: + + % ./configure [options] + % make + % make install + +where documentation for [options] can be found by running "./configure --help". +Usually no options are necessary. The default is to install under /usr/local, +this can be changed with --prefix=directory. + +Invocation +---------- + + % rdesktop [options] server + +where server is the name of the Terminal Services machine. Note: if you +receive "Connection refused", this probably means that the server does not have +Terminal Services enabled, or there is a firewall blocking access. + +The rdesktop manual page lists the possible options ("man rdesktop"). + diff --git a/reactos/base/applications/tsclient/rdesktop/bitmap.c b/reactos/base/applications/tsclient/rdesktop/bitmap.c new file mode 100644 index 00000000000..5db5ddfb7a9 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/bitmap.c @@ -0,0 +1,1112 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Bitmap decompression routines + Copyright (C) Matthew Chapman 1999-2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +/* three seperate function for speed when decompressing the bitmaps */ +/* when modifing one function make the change in the others */ +/* comment out #define BITMAP_SPEED_OVER_SIZE below for one slower function */ +/* j@american-data.com */ + +#define BITMAP_SPEED_OVER_SIZE + +/* indent is confused by this file */ +/* *INDENT-OFF* */ + +#include "rdesktop.h" + +#define CVAL(p) (*(p++)) +#ifdef NEED_ALIGN +#ifdef L_ENDIAN +#define CVAL2(p, v) { v = (*(p++)); v |= (*(p++)) << 8; } +#else +#define CVAL2(p, v) { v = (*(p++)) << 8; v |= (*(p++)); } +#endif /* L_ENDIAN */ +#else +#define CVAL2(p, v) { v = (*((uint16*)p)); p += 2; } +#endif /* NEED_ALIGN */ + +#define UNROLL8(exp) { exp exp exp exp exp exp exp exp } + +#define REPEAT(statement) \ +{ \ + while((count & ~0x7) && ((x+8) < width)) \ + UNROLL8( statement; count--; x++; ); \ + \ + while((count > 0) && (x < width)) \ + { \ + statement; \ + count--; \ + x++; \ + } \ +} + +#define MASK_UPDATE() \ +{ \ + mixmask <<= 1; \ + if (mixmask == 0) \ + { \ + mask = fom_mask ? fom_mask : CVAL(input); \ + mixmask = 1; \ + } \ +} + +#ifdef BITMAP_SPEED_OVER_SIZE + +/* 1 byte bitmap decompress */ +static BOOL +bitmap_decompress1(uint8 * output, int width, int height, uint8 * input, int size) +{ + uint8 *end = input + size; + uint8 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint8 colour1 = 0, colour2 = 0; + uint8 mixmask, mask = 0; + uint8 mix = 0xff; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < 0xb) ? 8 : 1; + } + offset = 0; + break; + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + colour1 = CVAL(input); + case 3: /* Colour */ + colour2 = CVAL(input); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + mix = CVAL(input); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + } + lastopcode = opcode; + mixmask = 0; + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = output + height * width; +#else + line = output + y * width; +#endif + } + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + line[x] = mix; + else + line[x] = prevline[x] ^ mix; + insertmix = False; + count--; + x++; + } + if (prevline == NULL) + { + REPEAT(line[x] = 0) + } + else + { + REPEAT(line[x] = prevline[x]) + } + break; + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT(line[x] = mix) + } + else + { + REPEAT(line[x] = prevline[x] ^ mix) + } + break; + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = mix; + else + line[x] = 0; + ) + } + else + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = prevline[x] ^ mix; + else + line[x] = prevline[x]; + ) + } + break; + case 3: /* Colour */ + REPEAT(line[x] = colour2) + break; + case 4: /* Copy */ + REPEAT(line[x] = CVAL(input)) + break; + case 8: /* Bicolour */ + REPEAT + ( + if (bicolour) + { + line[x] = colour2; + bicolour = False; + } + else + { + line[x] = colour1; + bicolour = True; count++; + } + ) + break; + case 0xd: /* White */ + REPEAT(line[x] = 0xff) + break; + case 0xe: /* Black */ + REPEAT(line[x] = 0) + break; + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + return True; +} + +/* 2 byte bitmap decompress */ +static BOOL +bitmap_decompress2(uint8 * output, int width, int height, uint8 * input, int size) +{ + uint8 *end = input + size; + uint16 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint16 colour1 = 0, colour2 = 0; + uint8 mixmask, mask = 0; + uint16 mix = 0xffff; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < 0xb) ? 8 : 1; + } + offset = 0; + break; + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + CVAL2(input, colour1); + case 3: /* Colour */ + CVAL2(input, colour2); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + CVAL2(input, mix); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + } + lastopcode = opcode; + mixmask = 0; + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = ((uint16 *) output) + height * width; +#else + line = ((uint16 *) output) + y * width; +#endif + } + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + line[x] = mix; + else + line[x] = prevline[x] ^ mix; + insertmix = False; + count--; + x++; + } + if (prevline == NULL) + { + REPEAT(line[x] = 0) + } + else + { + REPEAT(line[x] = prevline[x]) + } + break; + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT(line[x] = mix) + } + else + { + REPEAT(line[x] = prevline[x] ^ mix) + } + break; + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = mix; + else + line[x] = 0; + ) + } + else + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + line[x] = prevline[x] ^ mix; + else + line[x] = prevline[x]; + ) + } + break; + case 3: /* Colour */ + REPEAT(line[x] = colour2) + break; + case 4: /* Copy */ + REPEAT(CVAL2(input, line[x])) + break; + case 8: /* Bicolour */ + REPEAT + ( + if (bicolour) + { + line[x] = colour2; + bicolour = False; + } + else + { + line[x] = colour1; + bicolour = True; + count++; + } + ) + break; + case 0xd: /* White */ + REPEAT(line[x] = 0xffff) + break; + case 0xe: /* Black */ + REPEAT(line[x] = 0) + break; + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + return True; +} + +/* 3 byte bitmap decompress */ +static BOOL +bitmap_decompress3(uint8 * output, int width, int height, uint8 * input, int size) +{ + uint8 *end = input + size; + uint8 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint8 colour1[3] = {0, 0, 0}, colour2[3] = {0, 0, 0}; + uint8 mixmask, mask = 0; + uint8 mix[3] = {0xff, 0xff, 0xff}; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < + 0xb) ? 8 : 1; + } + offset = 0; + break; + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + colour1[0] = CVAL(input); + colour1[1] = CVAL(input); + colour1[2] = CVAL(input); + case 3: /* Colour */ + colour2[0] = CVAL(input); + colour2[1] = CVAL(input); + colour2[2] = CVAL(input); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + mix[0] = CVAL(input); + mix[1] = CVAL(input); + mix[2] = CVAL(input); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + } + lastopcode = opcode; + mixmask = 0; + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = output + height * (width * 3); +#else + line = output + y * (width * 3); +#endif + } + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + { + line[x * 3] = mix[0]; + line[x * 3 + 1] = mix[1]; + line[x * 3 + 2] = mix[2]; + } + else + { + line[x * 3] = + prevline[x * 3] ^ mix[0]; + line[x * 3 + 1] = + prevline[x * 3 + 1] ^ mix[1]; + line[x * 3 + 2] = + prevline[x * 3 + 2] ^ mix[2]; + } + insertmix = False; + count--; + x++; + } + if (prevline == NULL) + { + REPEAT + ( + line[x * 3] = 0; + line[x * 3 + 1] = 0; + line[x * 3 + 2] = 0; + ) + } + else + { + REPEAT + ( + line[x * 3] = prevline[x * 3]; + line[x * 3 + 1] = prevline[x * 3 + 1]; + line[x * 3 + 2] = prevline[x * 3 + 2]; + ) + } + break; + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT + ( + line[x * 3] = mix[0]; + line[x * 3 + 1] = mix[1]; + line[x * 3 + 2] = mix[2]; + ) + } + else + { + REPEAT + ( + line[x * 3] = + prevline[x * 3] ^ mix[0]; + line[x * 3 + 1] = + prevline[x * 3 + 1] ^ mix[1]; + line[x * 3 + 2] = + prevline[x * 3 + 2] ^ mix[2]; + ) + } + break; + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + { + line[x * 3] = mix[0]; + line[x * 3 + 1] = mix[1]; + line[x * 3 + 2] = mix[2]; + } + else + { + line[x * 3] = 0; + line[x * 3 + 1] = 0; + line[x * 3 + 2] = 0; + } + ) + } + else + { + REPEAT + ( + MASK_UPDATE(); + if (mask & mixmask) + { + line[x * 3] = + prevline[x * 3] ^ mix [0]; + line[x * 3 + 1] = + prevline[x * 3 + 1] ^ mix [1]; + line[x * 3 + 2] = + prevline[x * 3 + 2] ^ mix [2]; + } + else + { + line[x * 3] = + prevline[x * 3]; + line[x * 3 + 1] = + prevline[x * 3 + 1]; + line[x * 3 + 2] = + prevline[x * 3 + 2]; + } + ) + } + break; + case 3: /* Colour */ + REPEAT + ( + line[x * 3] = colour2 [0]; + line[x * 3 + 1] = colour2 [1]; + line[x * 3 + 2] = colour2 [2]; + ) + break; + case 4: /* Copy */ + REPEAT + ( + line[x * 3] = CVAL(input); + line[x * 3 + 1] = CVAL(input); + line[x * 3 + 2] = CVAL(input); + ) + break; + case 8: /* Bicolour */ + REPEAT + ( + if (bicolour) + { + line[x * 3] = colour2[0]; + line[x * 3 + 1] = colour2[1]; + line[x * 3 + 2] = colour2[2]; + bicolour = False; + } + else + { + line[x * 3] = colour1[0]; + line[x * 3 + 1] = colour1[1]; + line[x * 3 + 2] = colour1[2]; + bicolour = True; + count++; + } + ) + break; + case 0xd: /* White */ + REPEAT + ( + line[x * 3] = 0xff; + line[x * 3 + 1] = 0xff; + line[x * 3 + 2] = 0xff; + ) + break; + case 0xe: /* Black */ + REPEAT + ( + line[x * 3] = 0; + line[x * 3 + 1] = 0; + line[x * 3 + 2] = 0; + ) + break; + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + return True; +} + +#else + +static uint32 +cvalx(uint8 **input, int Bpp) +{ + uint32 rv = 0; + memcpy(&rv, *input, Bpp); + *input += Bpp; + return rv; +} + +static void +setli(uint8 *input, int offset, uint32 value, int Bpp) +{ + input += offset * Bpp; + memcpy(input, &value, Bpp); +} + +static uint32 +getli(uint8 *input, int offset, int Bpp) +{ + uint32 rv = 0; + input += offset * Bpp; + memcpy(&rv, input, Bpp); + return rv; +} + +static BOOL +bitmap_decompressx(uint8 *output, int width, int height, uint8 *input, int size, int Bpp) +{ + uint8 *end = input + size; + uint8 *prevline = NULL; + int opcode, count, offset, isfillormix; + int lastopcode = -1, insertmix = False, bicolour = False; + uint8 code; + uint32 colour1 = 0, colour2 = 0; + uint8 mixmask, mask = 0; + uint32 mix = 0xffffffff; + int fom_mask = 0; +#if 0 + uint8 *line = NULL; + int x = width; +#else + uint8 *line = output; + int x = 0; + int y = 0; +#endif + + while (input < end) + { + fom_mask = 0; + code = CVAL(input); + opcode = code >> 4; + + /* Handle different opcode forms */ + switch (opcode) + { + case 0xc: + case 0xd: + case 0xe: + opcode -= 6; + count = code & 0xf; + offset = 16; + break; + + case 0xf: + opcode = code & 0xf; + if (opcode < 9) + { + count = CVAL(input); + count |= CVAL(input) << 8; + } + else + { + count = (opcode < 0xb) ? 8 : 1; + } + offset = 0; + break; + + default: + opcode >>= 1; + count = code & 0x1f; + offset = 32; + break; + } + + /* Handle strange cases for counts */ + if (offset != 0) + { + isfillormix = ((opcode == 2) || (opcode == 7)); + + if (count == 0) + { + if (isfillormix) + count = CVAL(input) + 1; + else + count = CVAL(input) + offset; + } + else if (isfillormix) + { + count <<= 3; + } + } + + /* Read preliminary data */ + switch (opcode) + { + case 0: /* Fill */ + if ((lastopcode == opcode) && !((x == width) && (prevline == NULL))) + insertmix = True; + break; + case 8: /* Bicolour */ + colour1 = cvalx(&input, Bpp); + case 3: /* Colour */ + colour2 = cvalx(&input, Bpp); + break; + case 6: /* SetMix/Mix */ + case 7: /* SetMix/FillOrMix */ + mix = cvalx(&input, Bpp); + opcode -= 5; + break; + case 9: /* FillOrMix_1 */ + mask = 0x03; + opcode = 0x02; + fom_mask = 3; + break; + case 0x0a: /* FillOrMix_2 */ + mask = 0x05; + opcode = 0x02; + fom_mask = 5; + break; + + } + + lastopcode = opcode; + mixmask = 0; + + /* Output body */ + while (count > 0) + { + if (x >= width) + { +#if 0 + if (height <= 0) +#else + if (y >= height) +#endif + return False; + + x = 0; + +#if 0 + height--; +#else + y ++; +#endif + + prevline = line; + +#if 0 + line = output + height * width * Bpp; +#else + line = output + y * width * Bpp; +#endif + } + + switch (opcode) + { + case 0: /* Fill */ + if (insertmix) + { + if (prevline == NULL) + setli(line, x, mix, Bpp); + else + setli(line, x, + getli(prevline, x, Bpp) ^ mix, Bpp); + + insertmix = False; + count--; + x++; + } + + if (prevline == NULL) + { + REPEAT(setli(line, x, 0, Bpp))} + else + { + REPEAT(setli + (line, x, getli(prevline, x, Bpp), Bpp)); + } + break; + + case 1: /* Mix */ + if (prevline == NULL) + { + REPEAT(setli(line, x, mix, Bpp)); + } + else + { + REPEAT(setli + (line, x, getli(prevline, x, Bpp) ^ mix, + Bpp)); + } + break; + + case 2: /* Fill or Mix */ + if (prevline == NULL) + { + REPEAT(MASK_UPDATE(); + if (mask & mixmask) setli(line, x, mix, Bpp); + else + setli(line, x, 0, Bpp);); + } + else + { + REPEAT(MASK_UPDATE(); + if (mask & mixmask) + setli(line, x, getli(prevline, x, Bpp) ^ mix, + Bpp); + else + setli(line, x, getli(prevline, x, Bpp), + Bpp);); + } + break; + + case 3: /* Colour */ + REPEAT(setli(line, x, colour2, Bpp)); + break; + + case 4: /* Copy */ + REPEAT(setli(line, x, cvalx(&input, Bpp), Bpp)); + break; + + case 8: /* Bicolour */ + REPEAT(if (bicolour) + { + setli(line, x, colour2, Bpp); bicolour = False;} + else + { + setli(line, x, colour1, Bpp); bicolour = True; + count++;} + ); + break; + + case 0xd: /* White */ + REPEAT(setli(line, x, 0xffffffff, Bpp)); + break; + + case 0xe: /* Black */ + REPEAT(setli(line, x, 0, Bpp)); + break; + + default: + unimpl("bitmap opcode 0x%x\n", opcode); + return False; + } + } + } + + return True; +} + +#endif + +/* main decompress function */ +BOOL +bitmap_decompress(uint8 * output, int width, int height, uint8 * input, int size, int Bpp) +{ +#ifdef BITMAP_SPEED_OVER_SIZE + BOOL rv = False; + switch (Bpp) + { + case 1: + rv = bitmap_decompress1(output, width, height, input, size); + break; + case 2: + rv = bitmap_decompress2(output, width, height, input, size); + break; + case 3: + rv = bitmap_decompress3(output, width, height, input, size); + break; + } +#else + BOOL rv; + rv = bitmap_decompressx(output, width, height, input, size, Bpp); +#endif + return rv; +} + +/* *INDENT-ON* */ diff --git a/reactos/base/applications/tsclient/rdesktop/bootstrap b/reactos/base/applications/tsclient/rdesktop/bootstrap new file mode 100644 index 00000000000..c640c1de4e2 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh +rm -rf autom4te.cache +autoreconf -i diff --git a/reactos/base/applications/tsclient/rdesktop/cache.c b/reactos/base/applications/tsclient/rdesktop/cache.c new file mode 100644 index 00000000000..1240be83117 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/cache.c @@ -0,0 +1,414 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Cache routines + Copyright (C) Matthew Chapman 1999-2005 + Copyright (C) Jeroen Meijer 2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "rdesktop.h" + +#undef IS_SET // !!!FIXME!!! + +/* BITMAP CACHE */ +#define NUM_ELEMENTS(array) (sizeof(array) / sizeof(array[0])) +#define IS_PERSISTENT(id) (This->pstcache_fd[id] > 0) +#define TO_TOP -1 +#define NOT_SET -1 +#define IS_SET(idx) (idx >= 0) + +/* + * TODO: Test for optimal value of BUMP_COUNT. TO_TOP gives lowest cpu utilisation but using + * a positive value will hopefully result in less frequently used bitmaps having a greater chance + * of being evicted from the cache, and therby reducing the need to load bitmaps from disk. + * (Jeroen) + */ +#define BUMP_COUNT 40 + +/* Setup the bitmap cache lru/mru linked list */ +void +cache_rebuild_bmpcache_linked_list(RDPCLIENT * This, uint8 id, sint16 * idx, int count) +{ + int n = count, c = 0; + sint16 n_idx; + + /* find top, skip evicted bitmaps */ + while (--n >= 0 && This->cache.bmpcache[id][idx[n]].bitmap == NULL); + if (n < 0) + { + This->cache.bmpcache_mru[id] = This->cache.bmpcache_lru[id] = NOT_SET; + return; + } + + This->cache.bmpcache_mru[id] = idx[n]; + This->cache.bmpcache[id][idx[n]].next = NOT_SET; + n_idx = idx[n]; + c++; + + /* link list */ + while (n >= 0) + { + /* skip evicted bitmaps */ + while (--n >= 0 && This->cache.bmpcache[id][idx[n]].bitmap == NULL); + + if (n < 0) + break; + + This->cache.bmpcache[id][n_idx].previous = idx[n]; + This->cache.bmpcache[id][idx[n]].next = n_idx; + n_idx = idx[n]; + c++; + } + + This->cache.bmpcache[id][n_idx].previous = NOT_SET; + This->cache.bmpcache_lru[id] = n_idx; + + if (c != This->cache.bmpcache_count[id]) + { + error("Oops. %d in bitmap cache linked list, %d in ui cache...\n", c, + This->cache.bmpcache_count[id]); + exit(1); + } +} + +/* Move a bitmap to a new position in the linked list. */ +void +cache_bump_bitmap(RDPCLIENT * This, uint8 id, uint16 idx, int bump) +{ + int p_idx, n_idx, n; + + if (!IS_PERSISTENT(id)) + return; + + if (This->cache.bmpcache_mru[id] == idx) + return; + + DEBUG_RDP5(("bump bitmap: id=%d, idx=%d, bump=%d\n", id, idx, bump)); + + n_idx = This->cache.bmpcache[id][idx].next; + p_idx = This->cache.bmpcache[id][idx].previous; + + if (IS_SET(n_idx)) + { + /* remove */ + --This->cache.bmpcache_count[id]; + if (IS_SET(p_idx)) + This->cache.bmpcache[id][p_idx].next = n_idx; + else + This->cache.bmpcache_lru[id] = n_idx; + if (IS_SET(n_idx)) + This->cache.bmpcache[id][n_idx].previous = p_idx; + else + This->cache.bmpcache_mru[id] = p_idx; + } + else + { + p_idx = NOT_SET; + n_idx = This->cache.bmpcache_lru[id]; + } + + if (bump >= 0) + { + for (n = 0; n < bump && IS_SET(n_idx); n++) + { + p_idx = n_idx; + n_idx = This->cache.bmpcache[id][p_idx].next; + } + } + else + { + p_idx = This->cache.bmpcache_mru[id]; + n_idx = NOT_SET; + } + + /* insert */ + ++This->cache.bmpcache_count[id]; + This->cache.bmpcache[id][idx].previous = p_idx; + This->cache.bmpcache[id][idx].next = n_idx; + + if (p_idx >= 0) + This->cache.bmpcache[id][p_idx].next = idx; + else + This->cache.bmpcache_lru[id] = idx; + + if (n_idx >= 0) + This->cache.bmpcache[id][n_idx].previous = idx; + else + This->cache.bmpcache_mru[id] = idx; +} + +/* Evict the least-recently used bitmap from the cache */ +void +cache_evict_bitmap(RDPCLIENT * This, uint8 id) +{ + uint16 idx; + int n_idx; + + if (!IS_PERSISTENT(id)) + return; + + idx = This->cache.bmpcache_lru[id]; + n_idx = This->cache.bmpcache[id][idx].next; + DEBUG_RDP5(("evict bitmap: id=%d idx=%d n_idx=%d bmp=0x%x\n", id, idx, n_idx, + This->cache.bmpcache[id][idx].bitmap)); + + ui_destroy_bitmap(This, This->cache.bmpcache[id][idx].bitmap); + --This->cache.bmpcache_count[id]; + This->cache.bmpcache[id][idx].bitmap = 0; + + This->cache.bmpcache_lru[id] = n_idx; + This->cache.bmpcache[id][n_idx].previous = NOT_SET; + + pstcache_touch_bitmap(This, id, idx, 0); +} + +/* Retrieve a bitmap from the cache */ +HBITMAP +cache_get_bitmap(RDPCLIENT * This, uint8 id, uint16 idx) +{ + if ((id < NUM_ELEMENTS(This->cache.bmpcache)) && (idx < NUM_ELEMENTS(This->cache.bmpcache[0]))) + { + if (This->cache.bmpcache[id][idx].bitmap || pstcache_load_bitmap(This, id, idx)) + { + if (IS_PERSISTENT(id)) + cache_bump_bitmap(This, id, idx, BUMP_COUNT); + + return This->cache.bmpcache[id][idx].bitmap; + } + } + else if ((id < NUM_ELEMENTS(This->cache.volatile_bc)) && (idx == 0x7fff)) + { + return This->cache.volatile_bc[id]; + } + + error("get bitmap %d:%d\n", id, idx); + return NULL; +} + +/* Store a bitmap in the cache */ +void +cache_put_bitmap(RDPCLIENT * This, uint8 id, uint16 idx, HBITMAP bitmap) +{ + HBITMAP old; + + if ((id < NUM_ELEMENTS(This->cache.bmpcache)) && (idx < NUM_ELEMENTS(This->cache.bmpcache[0]))) + { + old = This->cache.bmpcache[id][idx].bitmap; + if (old != NULL) + ui_destroy_bitmap(This, old); + This->cache.bmpcache[id][idx].bitmap = bitmap; + + if (IS_PERSISTENT(id)) + { + if (old == NULL) + This->cache.bmpcache[id][idx].previous = This->cache.bmpcache[id][idx].next = NOT_SET; + + cache_bump_bitmap(This, id, idx, TO_TOP); + if (This->cache.bmpcache_count[id] > BMPCACHE2_C2_CELLS) + cache_evict_bitmap(This, id); + } + } + else if ((id < NUM_ELEMENTS(This->cache.volatile_bc)) && (idx == 0x7fff)) + { + old = This->cache.volatile_bc[id]; + if (old != NULL) + ui_destroy_bitmap(This, old); + This->cache.volatile_bc[id] = bitmap; + } + else + { + error("put bitmap %d:%d\n", id, idx); + } +} + +/* Updates the persistent bitmap cache MRU information on exit */ +void +cache_save_state(RDPCLIENT * This) +{ + uint32 id = 0, t = 0; + int idx; + + for (id = 0; id < NUM_ELEMENTS(This->cache.bmpcache); id++) + if (IS_PERSISTENT(id)) + { + DEBUG_RDP5(("Saving cache state for bitmap cache %d...", id)); + idx = This->cache.bmpcache_lru[id]; + while (idx >= 0) + { + pstcache_touch_bitmap(This, id, idx, ++t); + idx = This->cache.bmpcache[id][idx].next; + } + DEBUG_RDP5((" %d stamps written.\n", t)); + } +} + + +/* FONT CACHE */ +/* Retrieve a glyph from the font cache */ +FONTGLYPH * +cache_get_font(RDPCLIENT * This, uint8 font, uint16 character) +{ + FONTGLYPH *glyph; + + if ((font < NUM_ELEMENTS(This->cache.fontcache)) && (character < NUM_ELEMENTS(This->cache.fontcache[0]))) + { + glyph = &This->cache.fontcache[font][character]; + if (glyph->pixmap != NULL) + return glyph; + } + + error("get font %d:%d\n", font, character); + return NULL; +} + +/* Store a glyph in the font cache */ +void +cache_put_font(RDPCLIENT * This, uint8 font, uint16 character, uint16 offset, + uint16 baseline, uint16 width, uint16 height, HGLYPH pixmap) +{ + FONTGLYPH *glyph; + + if ((font < NUM_ELEMENTS(This->cache.fontcache)) && (character < NUM_ELEMENTS(This->cache.fontcache[0]))) + { + glyph = &This->cache.fontcache[font][character]; + if (glyph->pixmap != NULL) + ui_destroy_glyph(This, glyph->pixmap); + + glyph->offset = offset; + glyph->baseline = baseline; + glyph->width = width; + glyph->height = height; + glyph->pixmap = pixmap; + } + else + { + error("put font %d:%d\n", font, character); + } +} + + +/* TEXT CACHE */ +/* Retrieve a text item from the cache */ +DATABLOB * +cache_get_text(RDPCLIENT * This, uint8 cache_id) +{ + DATABLOB *text; + + text = &This->cache.textcache[cache_id]; + return text; +} + +/* Store a text item in the cache */ +void +cache_put_text(RDPCLIENT * This, uint8 cache_id, void *data, int length) +{ + DATABLOB *text; + void * p = malloc(length); + + if(p == NULL) + return; + + text = &This->cache.textcache[cache_id]; + if (text->data != NULL) + free(text->data); + text->data = p; + text->size = length; + memcpy(text->data, data, length); +} + + +/* DESKTOP CACHE */ +/* Retrieve desktop data from the cache */ +uint8 * +cache_get_desktop(RDPCLIENT * This, uint32 offset, int cx, int cy, int bytes_per_pixel) +{ + int length = cx * cy * bytes_per_pixel; + + if (offset > sizeof(This->cache.deskcache)) + offset = 0; + + if ((offset + length) <= sizeof(This->cache.deskcache)) + { + return &This->cache.deskcache[offset]; + } + + error("get desktop %d:%d\n", offset, length); + return NULL; +} + +/* Store desktop data in the cache */ +void +cache_put_desktop(RDPCLIENT * This, uint32 offset, int cx, int cy, int scanline, int bytes_per_pixel, uint8 * data) +{ + int length = cx * cy * bytes_per_pixel; + + if (offset > sizeof(This->cache.deskcache)) + offset = 0; + + if ((offset + length) <= sizeof(This->cache.deskcache)) + { + cx *= bytes_per_pixel; + while (cy--) + { + memcpy(&This->cache.deskcache[offset], data, cx); + data += scanline; + offset += cx; + } + } + else + { + error("put desktop %d:%d\n", offset, length); + } +} + + +/* CURSOR CACHE */ +/* Retrieve cursor from cache */ +HCURSOR +cache_get_cursor(RDPCLIENT * This, uint16 cache_idx) +{ + HCURSOR cursor; + + if (cache_idx < NUM_ELEMENTS(This->cache.cursorcache)) + { + cursor = This->cache.cursorcache[cache_idx]; + if (cursor != NULL) + return cursor; + } + + error("get cursor %d\n", cache_idx); + return NULL; +} + +/* Store cursor in cache */ +void +cache_put_cursor(RDPCLIENT * This, uint16 cache_idx, HCURSOR cursor) +{ + HCURSOR old; + + if (cache_idx < NUM_ELEMENTS(This->cache.cursorcache)) + { + old = This->cache.cursorcache[cache_idx]; + if (old != NULL) + ui_destroy_cursor(This, old); + + This->cache.cursorcache[cache_idx] = cursor; + } + else + { + error("put cursor %d\n", cache_idx); + } +} diff --git a/reactos/base/applications/tsclient/rdesktop/channels.c b/reactos/base/applications/tsclient/rdesktop/channels.c new file mode 100644 index 00000000000..44bdd91a8eb --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/channels.c @@ -0,0 +1,177 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Protocol services - Virtual channels + Copyright (C) Erik Forsberg 2003 + Copyright (C) Matthew Chapman 2003-2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "rdesktop.h" + +// FIXME: header mess +#if 0 +#define CHANNEL_CHUNK_LENGTH 1600 +#define CHANNEL_FLAG_FIRST 0x01 +#define CHANNEL_FLAG_LAST 0x02 +#define CHANNEL_FLAG_SHOW_PROTOCOL 0x10 +#endif + +/* FIXME: We should use the information in TAG_SRV_CHANNELS to map RDP5 + channels to MCS channels. + + The format of TAG_SRV_CHANNELS seems to be + + global_channel_no (uint16le) + number_of_other_channels (uint16le) + ..followed by uint16les for the other channels. +*/ + +VCHANNEL * +channel_register(RDPCLIENT * This, char *name, uint32 flags, void (*callback) (RDPCLIENT *, STREAM)) +{ + VCHANNEL *channel; + + if (!This->use_rdp5) + return NULL; + + if (This->num_channels >= MAX_CHANNELS) + { + error("Channel table full, increase MAX_CHANNELS\n"); + return NULL; + } + + channel = &This->channels[This->num_channels]; + channel->mcs_id = MCS_GLOBAL_CHANNEL + 1 + This->num_channels; + strncpy(channel->name, name, 8); + channel->flags = flags; + channel->process = callback; + This->num_channels++; + return channel; +} + +STREAM +channel_init(RDPCLIENT * This, VCHANNEL * channel, uint32 length) +{ + STREAM s; + + s = sec_init(This, This->encryption ? SEC_ENCRYPT : 0, length + 8); + s_push_layer(s, channel_hdr, 8); + return s; +} + +void +channel_send(RDPCLIENT * This, STREAM s, VCHANNEL * channel) +{ + uint32 length, flags; + uint32 thislength, remaining; + uint8 *data; + + /* first fragment sent in-place */ + s_pop_layer(s, channel_hdr); + length = s->end - s->p - sizeof(CHANNEL_PDU_HEADER); + + DEBUG_CHANNEL(("channel_send, length = %d\n", length)); + + thislength = MIN(length, CHANNEL_CHUNK_LENGTH); +/* Note: In the original clipboard implementation, this number was + 1592, not 1600. However, I don't remember the reason and 1600 seems + to work so.. This applies only to *this* length, not the length of + continuation or ending packets. */ + remaining = length - thislength; + flags = (remaining == 0) ? CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST : CHANNEL_FLAG_FIRST; + if (channel->flags & CHANNEL_OPTION_SHOW_PROTOCOL) + flags |= CHANNEL_FLAG_SHOW_PROTOCOL; + + out_uint32_le(s, length); + out_uint32_le(s, flags); + data = s->end = s->p + thislength; + DEBUG_CHANNEL(("Sending %d bytes with FLAG_FIRST\n", thislength)); + sec_send_to_channel(This, s, This->encryption ? SEC_ENCRYPT : 0, channel->mcs_id); + + /* subsequent segments copied (otherwise would have to generate headers backwards) */ + while (remaining > 0) + { + thislength = MIN(remaining, CHANNEL_CHUNK_LENGTH); + remaining -= thislength; + flags = (remaining == 0) ? CHANNEL_FLAG_LAST : 0; + if (channel->flags & CHANNEL_OPTION_SHOW_PROTOCOL) + flags |= CHANNEL_FLAG_SHOW_PROTOCOL; + + DEBUG_CHANNEL(("Sending %d bytes with flags %d\n", thislength, flags)); + + s = sec_init(This, This->encryption ? SEC_ENCRYPT : 0, thislength + 8); + out_uint32_le(s, length); + out_uint32_le(s, flags); + out_uint8p(s, data, thislength); + s_mark_end(s); + sec_send_to_channel(This, s, This->encryption ? SEC_ENCRYPT : 0, channel->mcs_id); + + data += thislength; + } +} + +void +channel_process(RDPCLIENT * This, STREAM s, uint16 mcs_channel) +{ + uint32 length, flags; + uint32 thislength; + VCHANNEL *channel = NULL; + unsigned int i; + STREAM in; + + for (i = 0; i < This->num_channels; i++) + { + channel = &This->channels[i]; + if (channel->mcs_id == mcs_channel) + break; + } + + if (i >= This->num_channels) + return; + + in_uint32_le(s, length); + in_uint32_le(s, flags); + if ((flags & CHANNEL_FLAG_FIRST) && (flags & CHANNEL_FLAG_LAST)) + { + /* single fragment - pass straight up */ + channel->process(This, s); + } + else + { + /* add fragment to defragmentation buffer */ + in = &channel->in; + if (flags & CHANNEL_FLAG_FIRST) + { + if (length > in->size) + { + in->data = (uint8 *) xrealloc(in->data, length); + in->size = length; + } + in->p = in->data; + } + + thislength = MIN(s->end - s->p, in->data + in->size - in->p); + memcpy(in->p, s->p, thislength); + in->p += thislength; + + if (flags & CHANNEL_FLAG_LAST) + { + in->end = in->p; + in->p = in->data; + channel->process(This, in); + } + } +} diff --git a/reactos/base/applications/tsclient/rdesktop/cliprdr.c b/reactos/base/applications/tsclient/rdesktop/cliprdr.c new file mode 100644 index 00000000000..75cb6bd82c7 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/cliprdr.c @@ -0,0 +1,182 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Protocol services - Clipboard functions + Copyright (C) Erik Forsberg 2003 + Copyright (C) Matthew Chapman 2003 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "rdesktop.h" + +#define CLIPRDR_CONNECT 1 +#define CLIPRDR_FORMAT_ANNOUNCE 2 +#define CLIPRDR_FORMAT_ACK 3 +#define CLIPRDR_DATA_REQUEST 4 +#define CLIPRDR_DATA_RESPONSE 5 + +#define CLIPRDR_REQUEST 0 +#define CLIPRDR_RESPONSE 1 +#define CLIPRDR_ERROR 2 + +static void +cliprdr_send_packet(RDPCLIENT * This, uint16 type, uint16 status, uint8 * data, uint32 length) +{ + STREAM s; + + DEBUG_CLIPBOARD(("CLIPRDR send: type=%d, status=%d, length=%d\n", type, status, length)); + + s = channel_init(This, This->cliprdr.channel, length + 12); + out_uint16_le(s, type); + out_uint16_le(s, status); + out_uint32_le(s, length); + out_uint8p(s, data, length); + out_uint32(s, 0); /* pad? */ + s_mark_end(s); + channel_send(This, s, This->cliprdr.channel); +} + +/* Helper which announces our readiness to supply clipboard data + in a single format (such as CF_TEXT) to the RDP side. + To announce more than one format at a time, use + cliprdr_send_native_format_announce. + */ +void +cliprdr_send_simple_native_format_announce(RDPCLIENT * This, uint32 format) +{ + uint8 buffer[36]; + + DEBUG_CLIPBOARD(("cliprdr_send_simple_native_format_announce\n")); + + buf_out_uint32(buffer, format); + memset(buffer + 4, 0, sizeof(buffer) - 4); /* description */ + cliprdr_send_native_format_announce(This, buffer, sizeof(buffer)); +} + +/* Announces our readiness to supply clipboard data in multiple + formats, each denoted by a 36-byte format descriptor of + [ uint32 format + 32-byte description ]. + */ +void +cliprdr_send_native_format_announce(RDPCLIENT * This, uint8 * formats_data, uint32 formats_data_length) +{ + DEBUG_CLIPBOARD(("cliprdr_send_native_format_announce\n")); + + cliprdr_send_packet(This, CLIPRDR_FORMAT_ANNOUNCE, CLIPRDR_REQUEST, formats_data, + formats_data_length); + + if (formats_data != This->cliprdr.last_formats) + { + if (This->cliprdr.last_formats) + xfree(This->cliprdr.last_formats); + + This->cliprdr.last_formats = xmalloc(formats_data_length); + memcpy(This->cliprdr.last_formats, formats_data, formats_data_length); + This->cliprdr.last_formats_length = formats_data_length; + } +} + +void +cliprdr_send_data_request(RDPCLIENT * This, uint32 format) +{ + uint8 buffer[4]; + + DEBUG_CLIPBOARD(("cliprdr_send_data_request\n")); + buf_out_uint32(buffer, format); + cliprdr_send_packet(This, CLIPRDR_DATA_REQUEST, CLIPRDR_REQUEST, buffer, sizeof(buffer)); +} + +void +cliprdr_send_data(RDPCLIENT * This, uint8 * data, uint32 length) +{ + DEBUG_CLIPBOARD(("cliprdr_send_data\n")); + cliprdr_send_packet(This, CLIPRDR_DATA_RESPONSE, CLIPRDR_RESPONSE, data, length); +} + +static void +cliprdr_process(RDPCLIENT * This, STREAM s) +{ + uint16 type, status; + uint32 length, format; + uint8 *data; + + in_uint16_le(s, type); + in_uint16_le(s, status); + in_uint32_le(s, length); + data = s->p; + + DEBUG_CLIPBOARD(("CLIPRDR recv: type=%d, status=%d, length=%d\n", type, status, length)); + + if (status == CLIPRDR_ERROR) + { + switch (type) + { + case CLIPRDR_FORMAT_ACK: + /* FIXME: We seem to get this when we send an announce while the server is + still processing a paste. Try sending another announce. */ + cliprdr_send_native_format_announce(This, This->cliprdr.last_formats, + This->cliprdr.last_formats_length); + break; + case CLIPRDR_DATA_RESPONSE: + ui_clip_request_failed(This); + break; + default: + DEBUG_CLIPBOARD(("CLIPRDR error (type=%d)\n", type)); + } + + return; + } + + switch (type) + { + case CLIPRDR_CONNECT: + ui_clip_sync(This); + break; + case CLIPRDR_FORMAT_ANNOUNCE: + ui_clip_format_announce(This, data, length); + cliprdr_send_packet(This, CLIPRDR_FORMAT_ACK, CLIPRDR_RESPONSE, NULL, 0); + return; + case CLIPRDR_FORMAT_ACK: + break; + case CLIPRDR_DATA_REQUEST: + in_uint32_le(s, format); + ui_clip_request_data(This, format); + break; + case CLIPRDR_DATA_RESPONSE: + ui_clip_handle_data(This, data, length); + break; + case 7: /* TODO: W2K3 SP1 sends this on connect with a value of 1 */ + break; + default: + unimpl("CLIPRDR packet type %d\n", type); + } +} + +void +cliprdr_set_mode(RDPCLIENT * This, const char *optarg) +{ + ui_clip_set_mode(This, optarg); +} + +BOOL +cliprdr_init(RDPCLIENT * This) +{ + This->cliprdr.channel = + channel_register(This, "cliprdr", + CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_ENCRYPT_RDP | + CHANNEL_OPTION_COMPRESS_RDP | CHANNEL_OPTION_SHOW_PROTOCOL, + cliprdr_process); + return (This->cliprdr.channel != NULL); +} diff --git a/reactos/base/applications/tsclient/rdesktop/config.guess b/reactos/base/applications/tsclient/rdesktop/config.guess new file mode 100644 index 00000000000..654648f1711 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/config.guess @@ -0,0 +1,1411 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-06-17' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +## for Red Hat Linux +if test -f /etc/redhat-release ; then + VENDOR=redhat ; +else + VENDOR= ; +fi + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/reactos/base/applications/tsclient/rdesktop/config.sub b/reactos/base/applications/tsclient/rdesktop/config.sub new file mode 100644 index 00000000000..3ec9d2845b3 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/config.sub @@ -0,0 +1,1500 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-06-18' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | s390 | s390x \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | s390-* | s390x-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/reactos/base/applications/tsclient/rdesktop/configure.ac b/reactos/base/applications/tsclient/rdesktop/configure.ac new file mode 100644 index 00000000000..91c993f5378 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/configure.ac @@ -0,0 +1,727 @@ +AC_INIT(rdesktop, 1.4.1) + +AC_CONFIG_SRCDIR([rdesktop.c]) + +AC_PROG_CC +if test "$GCC" = yes; then + CFLAGS="$CFLAGS -Wall" +fi + +AC_PROG_INSTALL +AC_LANG_C +AC_HEADER_STDC +AC_C_BIGENDIAN([AC_DEFINE(B_ENDIAN)], [AC_DEFINE(L_ENDIAN)]) +AC_PATH_XTRA + +AC_SEARCH_LIBS(socket, socket) +AC_SEARCH_LIBS(inet_aton, resolv) + +AC_CHECK_HEADER(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H)) +AC_CHECK_HEADER(sys/modem.h, AC_DEFINE(HAVE_SYS_MODEM_H)) +AC_CHECK_HEADER(sys/filio.h, AC_DEFINE(HAVE_SYS_FILIO_H)) +AC_CHECK_HEADER(sys/strtio.h, AC_DEFINE(HAVE_SYS_STRTIO_H)) +AC_CHECK_HEADER(locale.h, AC_DEFINE(HAVE_LOCALE_H)) +AC_CHECK_HEADER(langinfo.h, AC_DEFINE(HAVE_LANGINFO_H)) + +AC_CHECK_TOOL(STRIP, strip, :) + +rpath="" + +# +# OpenSSL detection borrowed from stunnel +# +checkssldir() { : + if test -f "$1/include/openssl/ssl.h"; then + ssldir="$1" + return 0 + fi + return 1 +} +AC_MSG_CHECKING([for OpenSSL directory]) +AC_ARG_WITH(openssl, + [ --with-openssl=DIR look for OpenSSL at DIR/include, DIR/lib], + [ + dnl Check the specified location only + checkssldir "$withval" + ], + [ + dnl Search default locations of OpenSSL library + for maindir in /usr/local /usr/lib /usr/pkg /usr /var/ssl /opt; do + for dir in $maindir $maindir/openssl $maindir/ssl; do + checkssldir $dir && break 2 + done + done + ] +) +if test -z "$ssldir"; then + AC_MSG_RESULT([Not found]) + echo + echo "Couldn't find your OpenSSL library installation dir" + echo "Use --with-openssl option to fix this problem" + echo + exit 1 +fi +AC_MSG_RESULT([$ssldir]) +AC_SUBST(ssldir) +AC_DEFINE_UNQUOTED(ssldir, "$ssldir") + +dnl Add OpenSSL includes and libraries +CFLAGS="$CFLAGS -I$ssldir/include" +AC_ARG_ENABLE(static-openssl, + [ --enable-static-openssl link OpenSSL statically], + [ +LIBS="$LIBS $ssldir/lib/libcrypto.a" + ], + [ +LIBS="$LIBS -L$ssldir/lib -lcrypto" +rpath="$rpath:$ssldir/lib" + ]) + + +# +# Alignment +# +AC_MSG_CHECKING([if architecture needs alignment]) +AC_TRY_RUN([ +#include +#include +int main(int argc, char **argv) +{ + unsigned char test[8] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 }; + signal(SIGBUS, exit); + signal(SIGABRT, exit); + signal(SIGSEGV, exit); + if (*((unsigned int *)(test + 1)) != 0x55443322 && *((unsigned int *)(test + 1)) != 0x22334455) { + return 1; + } + return 0; +}], + [AC_MSG_RESULT(no)], + [AC_MSG_RESULT(yes) + AC_DEFINE(NEED_ALIGN)], + [AC_MSG_RESULT(assuming yes) + AC_DEFINE(NEED_ALIGN)]) + + +# +# EGD +# +AC_ARG_WITH(egd-socket, + [ --with-egd-socket=PATH look for Entropy Gathering Daemon socket at PATH], + [EGD_SOCKET="$withval"], + [EGD_SOCKET="/var/run/egd-pool"] +) +AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET") + + +# +# rdp2vnc +# +vncserverconfig=libvncserver-config +AC_ARG_WITH(libvncserver-config, + [ --with-libvncserver-config=CMD use CMD as libvncserver-config], + [vncserverconfig="$withval"] +) +AC_ARG_WITH(libvncserver, + [ --with-libvncserver make rdp2vnc], + [ + VNCINC=`$vncserverconfig --cflags` + AC_SUBST(VNCINC) + LDVNC=`$vncserverconfig --libs` + AC_SUBST(LDVNC) + VNCLINK=`$vncserverconfig --link` + AC_SUBST(VNCLINK) + RDP2VNCTARGET="rdp2vnc" + AC_SUBST(RDP2VNCTARGET) + ] +) + +# +# sound +# +AC_ARG_WITH(libao, + [ --with-libao=DIR look for libao at DIR/include, DIR/lib], + [ + CFLAGS="$CFLAGS -I$withval/include" + CPPFLAGS="$CPPFLAGS -I$withval/include" + LIBS="$LIBS -L$withval/lib" + rpath="$rpath:$withval/lib" + ] +) + +sound="yes" +AC_ARG_WITH(sound, + [ --with-sound select sound system ("oss", "sgi", "sun" or "libao") ], + [ + sound="$withval" + ]) +if test "$sound" = yes; then + AC_CHECK_HEADER(ao/ao.h, [sound=libao]) + AC_CHECK_HEADER(sys/soundcard.h, [sound=oss]) + AC_CHECK_HEADER(dmedia/audio.h, [sound=sgi]) + AC_CHECK_HEADER(sys/audioio.h, [sound=sun]) +fi +if test "$sound" = no; then + break +elif test "$sound" = oss; then + SOUNDOBJ="rdpsnd.o rdpsnd_oss.o" + AC_DEFINE(WITH_RDPSND) +elif test "$sound" = sgi; then + SOUNDOBJ="rdpsnd.o rdpsnd_sgi.o" + LDFLAGS="$LDFLAGS -laudio" + AC_DEFINE(WITH_RDPSND) +elif test "$sound" = sun; then + SOUNDOBJ="rdpsnd.o rdpsnd_sun.o" + AC_DEFINE(WITH_RDPSND) +elif test "$sound" = libao; then + SOUNDOBJ="rdpsnd.o rdpsnd_libao.o" + LDFLAGS="$LDFLAGS -lao" + AC_DEFINE(WITH_RDPSND) +else + AC_MSG_WARN([sound support disabled]) + AC_MSG_WARN([Currently supported systems are Open Sound System (oss), SGI AL (sgi), Sun/BSD (sun) and libao]) +fi +AC_SUBST(SOUNDOBJ) + +# +# dirfd +# +dnl Find out how to get the file descriptor associated with an open DIR*. +dnl From Jim Meyering + +AC_DEFUN([UTILS_FUNC_DIRFD], +[ + + AC_HEADER_DIRENT + dirfd_headers=' +#if HAVE_DIRENT_H +# include +#else /* not HAVE_DIRENT_H */ +# define dirent direct +# if HAVE_SYS_NDIR_H +# include +# endif /* HAVE_SYS_NDIR_H */ +# if HAVE_SYS_DIR_H +# include +# endif /* HAVE_SYS_DIR_H */ +# if HAVE_NDIR_H +# include +# endif /* HAVE_NDIR_H */ +#endif /* HAVE_DIRENT_H */ +' + AC_CHECK_FUNCS(dirfd) + AC_CHECK_DECLS([dirfd], , , $dirfd_headers) + + AC_CACHE_CHECK([whether dirfd is a macro], + jm_cv_func_dirfd_macro, + [AC_EGREP_CPP([dirent_header_defines_dirfd], [$dirfd_headers +#ifdef dirfd + dirent_header_defines_dirfd +#endif], + jm_cv_func_dirfd_macro=yes, + jm_cv_func_dirfd_macro=no)]) + + # Use the replacement only if we have no function, macro, + # or declaration with that name. + if test $ac_cv_func_dirfd,$ac_cv_have_decl_dirfd,$jm_cv_func_dirfd_macro \ + = no,no,no; then + AC_REPLACE_FUNCS([dirfd]) + AC_CACHE_CHECK( + [how to get the file descriptor associated with an open DIR*], + gl_cv_sys_dir_fd_member_name, + [ + dirfd_save_CFLAGS=$CFLAGS + for ac_expr in d_fd dd_fd; do + + CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" + AC_TRY_COMPILE( + [$dirfd_headers + ], + [DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;], + dir_fd_found=yes + ) + CFLAGS=$dirfd_save_CFLAGS + test "$dir_fd_found" = yes && break + done + test "$dir_fd_found" = yes || ac_expr=no_such_member + + gl_cv_sys_dir_fd_member_name=$ac_expr + ] + ) + if test $gl_cv_sys_dir_fd_member_name != no_such_member; then + AC_DEFINE_UNQUOTED(DIR_FD_MEMBER_NAME, + $gl_cv_sys_dir_fd_member_name, + [the name of the file descriptor member of DIR]) + fi + AH_VERBATIM(DIR_TO_FD, + [#ifdef DIR_FD_MEMBER_NAME +# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) +#else +# define DIR_TO_FD(Dir_p) -1 +#endif +] + ) + fi +]) + +UTILS_FUNC_DIRFD + +# +# iconv +# + +dnl This macros shamelessly stolen from +dnl http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg01398.html. +dnl Written by Bruno Haible. + +AC_DEFUN([UTILS_FUNC_ICONV], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], +[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + AC_CHECK_HEADER(iconv.h, AC_DEFINE(HAVE_ICONV_H)) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) +]) + +UTILS_FUNC_ICONV +LIBS="$LIBS $LIBICONV" + +# +# socklen_t +# from curl + +dnl Check for socklen_t: historically on BSD it is an int, and in +dnl POSIX 1g it is a type of its own, but some platforms use different +dnl types for the argument to getsockopt, getpeername, etc. So we +dnl have to test to find something that will work. +AC_DEFUN([TYPE_SOCKLEN_T], +[ + AC_CHECK_TYPE([socklen_t], ,[ + AC_MSG_CHECKING([for socklen_t equivalent]) + AC_CACHE_VAL([socklen_t_equiv], + [ + # Systems have either "struct sockaddr *" or + # "void *" as the second argument to getpeername + socklen_t_equiv= + for arg2 in "struct sockaddr" void; do + for t in int size_t unsigned long "unsigned long"; do + AC_TRY_COMPILE([ + #include + #include + + int getpeername (int, $arg2 *, $t *); + ],[ + $t len; + getpeername(0,0,&len); + ],[ + socklen_t_equiv="$t" + break + ]) + done + done + + if test "x$socklen_t_equiv" = x; then + AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) + fi + ]) + AC_MSG_RESULT($socklen_t_equiv) + AC_DEFINE_UNQUOTED(socklen_t, $socklen_t_equiv, + [type to use in place of socklen_t if not defined])], + [#include +#include ]) +]) + +TYPE_SOCKLEN_T + +# +# statfs stuff +# +AC_CHECK_HEADERS(sys/vfs.h) +AC_CHECK_HEADERS(sys/statvfs.h) +AC_CHECK_HEADERS(sys/statfs.h) +AC_CHECK_HEADERS(sys/param.h) + +mount_includes="\ + $ac_includes_default + #if HAVE_SYS_PARAM_H + # include + #endif + " + +AC_CHECK_HEADERS(sys/mount.h,,,[$mount_includes]) + +################################################# +# these tests are taken from the GNU fileutils package +AC_CHECKING(how to get filesystem space usage) +space=no + +# Test for statvfs64. +if test $space = no; then + # SVR4 + AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64, + [AC_TRY_RUN([ +#if defined(HAVE_UNISTD_H) +#include +#endif +#include +#include + main () + { + struct statvfs64 fsd; + exit (statvfs64 (".", &fsd)); + }], + fu_cv_sys_stat_statvfs64=yes, + fu_cv_sys_stat_statvfs64=no, + fu_cv_sys_stat_statvfs64=cross)]) + if test $fu_cv_sys_stat_statvfs64 = yes; then + space=yes + AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available]) + fi +fi + +# Perform only the link test since it seems there are no variants of the +# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs) +# because that got a false positive on SCO OSR5. Adding the declaration +# of a `struct statvfs' causes this test to fail (as it should) on such +# systems. That system is reported to work fine with STAT_STATFS4 which +# is what it gets when this test fails. +if test $space = no; then + # SVR4 + AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, + [AC_TRY_LINK([#include +#include ], + [struct statvfs fsd; statvfs (0, &fsd);], + fu_cv_sys_stat_statvfs=yes, + fu_cv_sys_stat_statvfs=no)]) + if test $fu_cv_sys_stat_statvfs = yes; then + space=yes + AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available]) + fi +fi + +if test $space = no; then + # DEC Alpha running OSF/1 + AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, + [AC_TRY_RUN([ +#include +#include +#include + main () + { + struct statfs fsd; + fsd.f_fsize = 0; + exit (statfs (".", &fsd, sizeof (struct statfs))); + }], + fu_cv_sys_stat_statfs3_osf1=yes, + fu_cv_sys_stat_statfs3_osf1=no, + fu_cv_sys_stat_statfs3_osf1=no)]) + + +#C_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) + if test $fu_cv_sys_stat_statfs3_osf1 = yes; then + space=yes + AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments]) + fi +fi + +if test $space = no; then +# AIX + AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl +member (AIX, 4.3BSD)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, + [AC_TRY_RUN([ +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_VFS_H +#include +#endif + main () + { + struct statfs fsd; + fsd.f_bsize = 0; + exit (statfs (".", &fsd)); + }], + fu_cv_sys_stat_statfs2_bsize=yes, + fu_cv_sys_stat_statfs2_bsize=no, + fu_cv_sys_stat_statfs2_bsize=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) + if test $fu_cv_sys_stat_statfs2_bsize = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property]) + fi +fi + +if test $space = no; then +# SVR3 + AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs4, + [AC_TRY_RUN([#include +#include + main () + { + struct statfs fsd; + exit (statfs (".", &fsd, sizeof fsd, 0)); + }], + fu_cv_sys_stat_statfs4=yes, + fu_cv_sys_stat_statfs4=no, + fu_cv_sys_stat_statfs4=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs4) + if test $fu_cv_sys_stat_statfs4 = yes; then + space=yes + AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments]) + fi +fi + +if test $space = no; then +# 4.4BSD and NetBSD + AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl +member (4.4BSD and NetBSD)]) + AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, + [AC_TRY_RUN([#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif + main () + { + struct statfs fsd; + fsd.f_fsize = 0; + exit (statfs (".", &fsd)); + }], + fu_cv_sys_stat_statfs2_fsize=yes, + fu_cv_sys_stat_statfs2_fsize=no, + fu_cv_sys_stat_statfs2_fsize=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) + if test $fu_cv_sys_stat_statfs2_fsize = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize]) + fi +fi + +if test $space = no; then + # Ultrix + AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) + AC_CACHE_VAL(fu_cv_sys_stat_fs_data, + [AC_TRY_RUN([#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_FS_TYPES_H +#include +#endif + main () + { + struct fs_data fsd; + /* Ultrix's statfs returns 1 for success, + 0 for not mounted, -1 for failure. */ + exit (statfs (".", &fsd) != 1); + }], + fu_cv_sys_stat_fs_data=yes, + fu_cv_sys_stat_fs_data=no, + fu_cv_sys_stat_fs_data=no)]) + AC_MSG_RESULT($fu_cv_sys_stat_fs_data) + if test $fu_cv_sys_stat_fs_data = yes; then + space=yes + AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available]) + fi +fi + + statxfs_includes="\ +$ac_includes_default +#if HAVE_SYS_STATVFS_H +# include +#endif +#if HAVE_SYS_VFS_H +# include +#endif +#if !HAVE_SYS_STATVFS_H && !HAVE_SYS_VFS_H +# if HAVE_SYS_MOUNT_H && HAVE_SYS_PARAM_H +/* NetBSD 1.5.2 needs these, for the declaration of struct statfs. */ +# include +# include +# elif HAVE_NETINET_IN_H && HAVE_NFS_NFS_CLNT_H && HAVE_NFS_VFS_H +/* Ultrix 4.4 needs these for the declaration of struct statfs. */ +# include +# include +# include +# endif +#endif +" + +AC_CHECK_MEMBERS([struct statfs.f_namemax],,,[$statxfs_includes]) +AC_CHECK_MEMBERS([struct statvfs.f_namemax],,,[$statxfs_includes]) +AC_CHECK_MEMBERS([struct statfs.f_namelen],,,[$statxfs_includes]) +AC_CHECK_MEMBERS([struct statvfs.f_namelen],,,[$statxfs_includes]) + +# +# Large file support +# +AC_SYS_LARGEFILE + +# +# mntent +# +AC_CHECK_HEADER(mntent.h, AC_DEFINE(HAVE_MNTENT_H)) +AC_CHECK_FUNCS(setmntent) + +# +# IPv6 +# +AC_ARG_WITH(ipv6, + [ --with-ipv6 enable IPv6-support], + [ + if test $withval != "no"; + then + AC_DEFINE(IPv6,1) + fi + ]) + + +# +# debugging +# +AC_ARG_WITH(debug, + [ --with-debug enable protocol debugging output], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG,1) + fi + ]) + +AC_ARG_WITH(debug-kbd, + [ --with-debug-kbd enable debugging of keyboard handling], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_KBD,1) + fi + ]) + +AC_ARG_WITH(debug-rdp5, + [ --with-debug-rdp5 enable debugging of RDP5 code], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_RDP5,1) + fi + ]) + +AC_ARG_WITH(debug-clipboard, + [ --with-debug-clipboard enable debugging of clipboard code], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_CLIPBOARD,1) + fi + ]) + +AC_ARG_WITH(debug-channel, + [ --with-debug-channel enable debugging of virtual channel code], + [ + if test $withval != "no"; + then + AC_DEFINE(WITH_DEBUG_CHANNEL,1) + fi + ]) + + +# +# target-specific stuff +# +# strip leading colon from rpath +rpath=`echo $rpath |sed 's/^://'` +AC_CANONICAL_HOST +case "$host" in +*-*-solaris*) + LDFLAGS="$LDFLAGS -R$rpath" + ;; +*-dec-osf*) + LDFLAGS="$LDFLAGS -Wl,-rpath,$rpath" + ;; +*-*-hpux*) + CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED" + ;; +*-*-irix6.5*) + LIBS="$LIBS -L$ssldir/lib32 -lcrypto" + CFLAGS="$CFLAGS -D__SGI_IRIX__" + ;; +esac + + +AC_OUTPUT(Makefile) + +dnl Local Variables: +dnl comment-start: "dnl " +dnl comment-end: "" +dnl comment-start-skip: "\\bdnl\\b\\s *" +dnl compile-command: "autoconf" +dnl End: diff --git a/reactos/base/applications/tsclient/rdesktop/constants.h b/reactos/base/applications/tsclient/rdesktop/constants.h new file mode 100644 index 00000000000..462f9028fdf --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/constants.h @@ -0,0 +1,430 @@ +/* + rdesktop: A Remote Desktop Protocol client. + Miscellaneous protocol constants + Copyright (C) Matthew Chapman 1999-2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +/* TCP port for Remote Desktop Protocol */ +#define TCP_PORT_RDP 3389 + +#define DEFAULT_CODEPAGE "UTF-8" +#define WINDOWS_CODEPAGE "UTF-16LE" + +/* ISO PDU codes */ +enum ISO_PDU_CODE +{ + ISO_PDU_CR = 0xE0, /* Connection Request */ + ISO_PDU_CC = 0xD0, /* Connection Confirm */ + ISO_PDU_DR = 0x80, /* Disconnect Request */ + ISO_PDU_DT = 0xF0, /* Data */ + ISO_PDU_ER = 0x70 /* Error */ +}; + +/* MCS PDU codes */ +enum MCS_PDU_TYPE +{ + MCS_EDRQ = 1, /* Erect Domain Request */ + MCS_DPUM = 8, /* Disconnect Provider Ultimatum */ + MCS_AURQ = 10, /* Attach User Request */ + MCS_AUCF = 11, /* Attach User Confirm */ + MCS_CJRQ = 14, /* Channel Join Request */ + MCS_CJCF = 15, /* Channel Join Confirm */ + MCS_SDRQ = 25, /* Send Data Request */ + MCS_SDIN = 26 /* Send Data Indication */ +}; + +#define MCS_CONNECT_INITIAL 0x7f65 +#define MCS_CONNECT_RESPONSE 0x7f66 + +#define BER_TAG_BOOLEAN 1 +#define BER_TAG_INTEGER 2 +#define BER_TAG_OCTET_STRING 4 +#define BER_TAG_RESULT 10 +#define MCS_TAG_DOMAIN_PARAMS 0x30 + +#define MCS_GLOBAL_CHANNEL 1003 +#define MCS_USERCHANNEL_BASE 1001 + +/* RDP secure transport constants */ +#define SEC_RANDOM_SIZE 32 +#define SEC_MODULUS_SIZE 64 +#define SEC_MAX_MODULUS_SIZE 256 +#define SEC_PADDING_SIZE 8 +#define SEC_EXPONENT_SIZE 4 + +#define SEC_CLIENT_RANDOM 0x0001 +#define SEC_ENCRYPT 0x0008 +#define SEC_LOGON_INFO 0x0040 +#define SEC_LICENCE_NEG 0x0080 +#define SEC_REDIRECT_ENCRYPT 0x0C00 + +#define SEC_TAG_SRV_INFO 0x0c01 +#define SEC_TAG_SRV_CRYPT 0x0c02 +#define SEC_TAG_SRV_CHANNELS 0x0c03 + +#define SEC_TAG_CLI_INFO 0xc001 +#define SEC_TAG_CLI_CRYPT 0xc002 +#define SEC_TAG_CLI_CHANNELS 0xc003 +#define SEC_TAG_CLI_4 0xc004 + +#define SEC_TAG_PUBKEY 0x0006 +#define SEC_TAG_KEYSIG 0x0008 + +#define SEC_RSA_MAGIC 0x31415352 /* RSA1 */ + +/* RDP licensing constants */ +#define LICENCE_TOKEN_SIZE 10 +#define LICENCE_HWID_SIZE 20 +#define LICENCE_SIGNATURE_SIZE 16 + +#define LICENCE_TAG_DEMAND 0x01 +#define LICENCE_TAG_AUTHREQ 0x02 +#define LICENCE_TAG_ISSUE 0x03 +#define LICENCE_TAG_REISSUE 0x04 +#define LICENCE_TAG_PRESENT 0x12 +#define LICENCE_TAG_REQUEST 0x13 +#define LICENCE_TAG_AUTHRESP 0x15 +#define LICENCE_TAG_RESULT 0xff + +#define LICENCE_TAG_USER 0x000f +#define LICENCE_TAG_HOST 0x0010 + +/* RDP PDU codes */ +enum RDP_PDU_TYPE +{ + RDP_PDU_DEMAND_ACTIVE = 1, + RDP_PDU_CONFIRM_ACTIVE = 3, + RDP_PDU_REDIRECT = 4, /* MS Server 2003 Session Redirect */ + RDP_PDU_DEACTIVATE = 6, + RDP_PDU_DATA = 7 +}; + +enum RDP_DATA_PDU_TYPE +{ + RDP_DATA_PDU_UPDATE = 2, + RDP_DATA_PDU_CONTROL = 20, + RDP_DATA_PDU_POINTER = 27, + RDP_DATA_PDU_INPUT = 28, + RDP_DATA_PDU_SYNCHRONISE = 31, + RDP_DATA_PDU_BELL = 34, + RDP_DATA_PDU_CLIENT_WINDOW_STATUS = 35, + RDP_DATA_PDU_LOGON = 38, + RDP_DATA_PDU_FONT2 = 39, + RDP_DATA_PDU_KEYBOARD_INDICATORS = 41, + RDP_DATA_PDU_DISCONNECT = 47 +}; + +enum RDP_CONTROL_PDU_TYPE +{ + RDP_CTL_REQUEST_CONTROL = 1, + RDP_CTL_GRANT_CONTROL = 2, + RDP_CTL_DETACH = 3, + RDP_CTL_COOPERATE = 4 +}; + +enum RDP_UPDATE_PDU_TYPE +{ + RDP_UPDATE_ORDERS = 0, + RDP_UPDATE_BITMAP = 1, + RDP_UPDATE_PALETTE = 2, + RDP_UPDATE_SYNCHRONIZE = 3 +}; + +enum RDP_POINTER_PDU_TYPE +{ + RDP_POINTER_SYSTEM = 1, + RDP_POINTER_MOVE = 3, + RDP_POINTER_COLOR = 6, + RDP_POINTER_CACHED = 7 +}; + +enum RDP_SYSTEM_POINTER_TYPE +{ + RDP_NULL_POINTER = 0, + RDP_DEFAULT_POINTER = 0x7F00 +}; + +enum RDP_INPUT_DEVICE +{ + RDP_INPUT_SYNCHRONIZE = 0, + RDP_INPUT_CODEPOINT = 1, + RDP_INPUT_VIRTKEY = 2, + RDP_INPUT_SCANCODE = 4, + RDP_INPUT_MOUSE = 0x8001 +}; + +/* Device flags */ +#define KBD_FLAG_RIGHT 0x0001 +#define KBD_FLAG_EXT 0x0100 +#define KBD_FLAG_QUIET 0x1000 +#define KBD_FLAG_DOWN 0x4000 +#define KBD_FLAG_UP 0x8000 + +/* These are for synchronization; not for keystrokes */ +#define KBD_FLAG_SCROLL 0x0001 +#define KBD_FLAG_NUMLOCK 0x0002 +#define KBD_FLAG_CAPITAL 0x0004 + +/* See T.128 */ +#define RDP_KEYPRESS 0 +#define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP) + +#define MOUSE_FLAG_MOVE 0x0800 +#define MOUSE_FLAG_BUTTON1 0x1000 +#define MOUSE_FLAG_BUTTON2 0x2000 +#define MOUSE_FLAG_BUTTON3 0x4000 +#define MOUSE_FLAG_BUTTON4 0x0280 +#define MOUSE_FLAG_BUTTON5 0x0380 +#define MOUSE_FLAG_DOWN 0x8000 + +/* Raster operation masks */ +#define ROP2_S(rop3) (rop3 & 0xf) +#define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2)) + +#define ROP2_COPY 0xc +#define ROP2_XOR 0x6 +#define ROP2_AND 0x8 +#define ROP2_NXOR 0x9 +#define ROP2_OR 0xe + +#define MIX_TRANSPARENT 0 +#define MIX_OPAQUE 1 + +#define TEXT2_VERTICAL 0x04 +#define TEXT2_IMPLICIT_X 0x20 + +#define ALTERNATE 1 +#define WINDING 2 + +/* RDP bitmap cache (version 2) constants */ +#define BMPCACHE2_C0_CELLS 0x78 +#define BMPCACHE2_C1_CELLS 0x78 +#define BMPCACHE2_C2_CELLS 0x150 +#define BMPCACHE2_NUM_PSTCELLS 0x9f6 + +#define PDU_FLAG_FIRST 0x01 +#define PDU_FLAG_LAST 0x02 + +/* RDP capabilities */ +#define RDP_CAPSET_GENERAL 1 /* Maps to generalCapabilitySet in T.128 page 138 */ +#define RDP_CAPLEN_GENERAL 0x18 +#define OS_MAJOR_TYPE_UNIX 4 +#define OS_MINOR_TYPE_XSERVER 7 + +#define RDP_CAPSET_BITMAP 2 +#define RDP_CAPLEN_BITMAP 0x1C + +#define RDP_CAPSET_ORDER 3 +#define RDP_CAPLEN_ORDER 0x58 +#define ORDER_CAP_NEGOTIATE 2 +#define ORDER_CAP_NOSUPPORT 4 + +#define RDP_CAPSET_BMPCACHE 4 +#define RDP_CAPLEN_BMPCACHE 0x28 + +#define RDP_CAPSET_CONTROL 5 +#define RDP_CAPLEN_CONTROL 0x0C + +#define RDP_CAPSET_ACTIVATE 7 +#define RDP_CAPLEN_ACTIVATE 0x0C + +#define RDP_CAPSET_POINTER 8 +#define RDP_CAPLEN_POINTER 0x08 + +#define RDP_CAPSET_SHARE 9 +#define RDP_CAPLEN_SHARE 0x08 + +#define RDP_CAPSET_COLCACHE 10 +#define RDP_CAPLEN_COLCACHE 0x08 + +#define RDP_CAPSET_BMPCACHE2 19 +#define RDP_CAPLEN_BMPCACHE2 0x28 +#define BMPCACHE2_FLAG_PERSIST ((uint32)1<<31) + +#define RDP_SOURCE "MSTSC" + +/* Logon flags */ +#define RDP_LOGON_AUTO 0x0008 +#define RDP_LOGON_NORMAL 0x0033 +#define RDP_LOGON_COMPRESSION 0x0080 /* mppc compression with 8kB histroy buffer */ +#define RDP_LOGON_BLOB 0x0100 +#define RDP_LOGON_COMPRESSION2 0x0200 /* rdp5 mppc compression with 64kB history buffer */ +#define RDP_LOGON_LEAVE_AUDIO 0x2000 + +#define RDP5_DISABLE_NOTHING 0x00 +#define RDP5_NO_WALLPAPER 0x01 +#define RDP5_NO_FULLWINDOWDRAG 0x02 +#define RDP5_NO_MENUANIMATIONS 0x04 +#define RDP5_NO_THEMING 0x08 +#define RDP5_NO_CURSOR_SHADOW 0x20 +#define RDP5_NO_CURSORSETTINGS 0x40 /* disables cursor blinking */ + +/* compression types */ +#define RDP_MPPC_BIG 0x01 +#define RDP_MPPC_COMPRESSED 0x20 +#define RDP_MPPC_RESET 0x40 +#define RDP_MPPC_FLUSH 0x80 +#define RDP_MPPC_DICT_SIZE 65536 + +#define RDP5_COMPRESSED 0x80 + +/* Keymap flags */ +#define MapRightShiftMask (1<<0) +#define MapLeftShiftMask (1<<1) +#define MapShiftMask (MapRightShiftMask | MapLeftShiftMask) + +#define MapRightAltMask (1<<2) +#define MapLeftAltMask (1<<3) +#define MapAltGrMask MapRightAltMask + +#define MapRightCtrlMask (1<<4) +#define MapLeftCtrlMask (1<<5) +#define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask) + +#define MapRightWinMask (1<<6) +#define MapLeftWinMask (1<<7) +#define MapWinMask (MapRightWinMask | MapLeftWinMask) + +#define MapNumLockMask (1<<8) +#define MapCapsLockMask (1<<9) + +#define MapLocalStateMask (1<<10) + +#define MapInhibitMask (1<<11) + +#define MASK_ADD_BITS(var, mask) (var |= mask) +#define MASK_REMOVE_BITS(var, mask) (var &= ~mask) +#define MASK_HAS_BITS(var, mask) ((var & mask)>0) +#define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0))) + +/* Clipboard constants, "borrowed" from GCC system headers in + the w32 cross compiler */ + +#if 0 +#define CF_TEXT 1 +#define CF_BITMAP 2 +#define CF_METAFILEPICT 3 +#define CF_SYLK 4 +#define CF_DIF 5 +#define CF_TIFF 6 +#define CF_OEMTEXT 7 +#define CF_DIB 8 +#define CF_PALETTE 9 +#define CF_PENDATA 10 +#define CF_RIFF 11 +#define CF_WAVE 12 +#define CF_UNICODETEXT 13 +#define CF_ENHMETAFILE 14 +#define CF_HDROP 15 +#define CF_LOCALE 16 +#define CF_MAX 17 +#define CF_OWNERDISPLAY 128 +#define CF_DSPTEXT 129 +#define CF_DSPBITMAP 130 +#define CF_DSPMETAFILEPICT 131 +#define CF_DSPENHMETAFILE 142 +#define CF_PRIVATEFIRST 512 +#define CF_PRIVATELAST 767 +#define CF_GDIOBJFIRST 768 +#define CF_GDIOBJLAST 1023 + +/* Sound format constants */ +#define WAVE_FORMAT_PCM 1 +#define WAVE_FORMAT_ADPCM 2 +#define WAVE_FORMAT_ALAW 6 +#define WAVE_FORMAT_MULAW 7 + +/* Virtual channel options */ +#define CHANNEL_OPTION_INITIALIZED 0x80000000 +#define CHANNEL_OPTION_ENCRYPT_RDP 0x40000000 +#define CHANNEL_OPTION_COMPRESS_RDP 0x00800000 +#define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000 + +/* NT status codes for RDPDR */ +#define STATUS_SUCCESS 0x00000000 +#define STATUS_NOT_IMPLEMENTED 0x00000001 +#define STATUS_PENDING 0x00000103 + +#define STATUS_NO_MORE_FILES 0x80000006 +#define STATUS_DEVICE_PAPER_EMPTY 0x8000000e +#define STATUS_DEVICE_POWERED_OFF 0x8000000f +#define STATUS_DEVICE_OFF_LINE 0x80000010 +#define STATUS_DEVICE_BUSY 0x80000011 + +#define STATUS_INVALID_HANDLE 0xc0000008 +#define STATUS_INVALID_PARAMETER 0xc000000d +#define STATUS_NO_SUCH_FILE 0xc000000f +#define STATUS_INVALID_DEVICE_REQUEST 0xc0000010 +#define STATUS_ACCESS_DENIED 0xc0000022 +#define STATUS_OBJECT_NAME_COLLISION 0xc0000035 +#define STATUS_DISK_FULL 0xc000007f +#define STATUS_FILE_IS_A_DIRECTORY 0xc00000ba +#define STATUS_NOT_SUPPORTED 0xc00000bb +#define STATUS_TIMEOUT 0xc0000102 +#define STATUS_NOTIFY_ENUM_DIR 0xc000010c +#define STATUS_CANCELLED 0xc0000120 + +/* RDPDR constants */ +#define RDPDR_MAX_DEVICES 0x10 +#define DEVICE_TYPE_SERIAL 0x01 +#define DEVICE_TYPE_PARALLEL 0x02 +#define DEVICE_TYPE_PRINTER 0x04 +#define DEVICE_TYPE_DISK 0x08 +#define DEVICE_TYPE_SCARD 0x20 + +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 + +/* RDP5 disconnect PDU */ +#define exDiscReasonNoInfo 0x0000 +#define exDiscReasonAPIInitiatedDisconnect 0x0001 +#define exDiscReasonAPIInitiatedLogoff 0x0002 +#define exDiscReasonServerIdleTimeout 0x0003 +#define exDiscReasonServerLogonTimeout 0x0004 +#define exDiscReasonReplacedByOtherConnection 0x0005 +#define exDiscReasonOutOfMemory 0x0006 +#define exDiscReasonServerDeniedConnection 0x0007 +#define exDiscReasonServerDeniedConnectionFips 0x0008 +#define exDiscReasonLicenseInternal 0x0100 +#define exDiscReasonLicenseNoLicenseServer 0x0101 +#define exDiscReasonLicenseNoLicense 0x0102 +#define exDiscReasonLicenseErrClientMsg 0x0103 +#define exDiscReasonLicenseHwidDoesntMatchLicense 0x0104 +#define exDiscReasonLicenseErrClientLicense 0x0105 +#define exDiscReasonLicenseCantFinishProtocol 0x0106 +#define exDiscReasonLicenseClientEndedProtocol 0x0107 +#define exDiscReasonLicenseErrClientEncryption 0x0108 +#define exDiscReasonLicenseCantUpgradeLicense 0x0109 +#define exDiscReasonLicenseNoRemoteConnections 0x010a +#endif + +#if 0 +/* SeamlessRDP constants */ +#define SEAMLESSRDP_NOTYETMAPPED -1 +#define SEAMLESSRDP_NORMAL 0 +#define SEAMLESSRDP_MINIMIZED 1 +#define SEAMLESSRDP_MAXIMIZED 2 +#define SEAMLESSRDP_POSITION_TIMER 200000 + +#define SEAMLESSRDP_CREATE_MODAL 0x0001 + +#define SEAMLESSRDP_HELLO_RECONNECT 0x0001 +#define SEAMLESSRDP_HELLO_HIDDEN 0x0002 +#endif diff --git a/reactos/base/applications/tsclient/rdesktop/disk.c b/reactos/base/applications/tsclient/rdesktop/disk.c new file mode 100644 index 00000000000..c97e682c596 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/disk.c @@ -0,0 +1,1246 @@ +/* -*- c-basic-offset: 8 -*- + rdesktop: A Remote Desktop Protocol client. + Disk Redirection + Copyright (C) Jeroen Meijer 2003 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "disk.h" + +#include +#include +#include +#include /* open, close */ +#include /* opendir, closedir, readdir */ +#include +#include /* errno */ +#include + +#include +#include /* ctime */ + +#if (defined(HAVE_DIRFD) || (HAVE_DECL_DIRFD == 1)) +#define DIRFD(a) (dirfd(a)) +#else +#define DIRFD(a) ((a)->DIR_FD_MEMBER_NAME) +#endif + +/* TODO: Fix mntent-handling for solaris + * #include */ +#if (defined(HAVE_MNTENT_H) && defined(HAVE_SETMNTENT)) +#include +#define MNTENT_PATH "/etc/mtab" +#define USE_SETMNTENT +#endif + +#ifdef HAVE_SYS_VFS_H +#include +#endif + +#ifdef HAVE_SYS_STATVFS_H +#include +#endif + +#ifdef HAVE_SYS_STATFS_H +#include +#endif + +#ifdef HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_MOUNT_H +#include +#endif + +#include "rdesktop.h" + +#ifdef STAT_STATFS3_OSF1 +#define STATFS_FN(path, buf) (statfs(path,buf,sizeof(buf))) +#define STATFS_T statfs +#define USE_STATFS +#endif + +#ifdef STAT_STATVFS +#define STATFS_FN(path, buf) (statvfs(path,buf)) +#define STATFS_T statvfs +#define USE_STATVFS +#endif + +#ifdef STAT_STATVFS64 +#define STATFS_FN(path, buf) (statvfs64(path,buf)) +#define STATFS_T statvfs64 +#define USE_STATVFS +#endif + +#if (defined(STAT_STATFS2_FS_DATA) || defined(STAT_STATFS2_BSIZE) || defined(STAT_STATFS2_FSIZE)) +#define STATFS_FN(path, buf) (statfs(path,buf)) +#define STATFS_T statfs +#define USE_STATFS +#endif + +#ifdef STAT_STATFS4 +#define STATFS_FN(path, buf) (statfs(path,buf,sizeof(buf),0)) +#define STATFS_T statfs +#define USE_STATFS +#endif + +#if ((defined(USE_STATFS) && defined(HAVE_STRUCT_STATFS_F_NAMEMAX)) || (defined(USE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_NAMEMAX))) +#define F_NAMELEN(buf) ((buf).f_namemax) +#endif + +#if ((defined(USE_STATFS) && defined(HAVE_STRUCT_STATFS_F_NAMELEN)) || (defined(USE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_NAMELEN))) +#define F_NAMELEN(buf) ((buf).f_namelen) +#endif + +#ifndef F_NAMELEN +#define F_NAMELEN(buf) (255) +#endif + +/* Dummy statfs fallback */ +#ifndef STATFS_T +struct dummy_statfs_t +{ + long f_bfree; + long f_bsize; + long f_blocks; + int f_namelen; + int f_namemax; +}; + +static int +dummy_statfs(struct dummy_statfs_t *buf) +{ + buf->f_blocks = 262144; + buf->f_bfree = 131072; + buf->f_bsize = 512; + buf->f_namelen = 255; + buf->f_namemax = 255; + + return 0; +} + +#define STATFS_T dummy_statfs_t +#define STATFS_FN(path,buf) (dummy_statfs(buf)) +#endif + +typedef struct +{ + char name[PATH_MAX]; + char label[PATH_MAX]; + unsigned long serial; + char type[PATH_MAX]; +} FsInfoType; + +static NTSTATUS NotifyInfo(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, NOTIFY * p); + +static time_t +get_create_time(struct stat *st) +{ + time_t ret, ret1; + + ret = MIN(st->st_ctime, st->st_mtime); + ret1 = MIN(ret, st->st_atime); + + if (ret1 != (time_t) 0) + return ret1; + + return ret; +} + +/* Convert seconds since 1970 to a filetime */ +static void +seconds_since_1970_to_filetime(time_t seconds, uint32 * high, uint32 * low) +{ + unsigned long long ticks; + + ticks = (seconds + 11644473600LL) * 10000000; + *low = (uint32) ticks; + *high = (uint32) (ticks >> 32); +} + +/* Convert seconds since 1970 back to filetime */ +static time_t +convert_1970_to_filetime(uint32 high, uint32 low) +{ + unsigned long long ticks; + time_t val; + + ticks = low + (((unsigned long long) high) << 32); + ticks /= 10000000; + ticks -= 11644473600LL; + + val = (time_t) ticks; + return (val); + +} + +/* A wrapper for ftruncate which supports growing files, even if the + native ftruncate doesn't. This is needed on Linux FAT filesystems, + for example. */ +static int +ftruncate_growable(int fd, off_t length) +{ + int ret; + off_t pos; + static const char zero = 0; + + /* Try the simple method first */ + if ((ret = ftruncate(fd, length)) != -1) + { + return ret; + } + + /* + * Some kind of error. Perhaps we were trying to grow. Retry + * in a safe way. + */ + + /* Get current position */ + if ((pos = lseek(fd, 0, SEEK_CUR)) == -1) + { + perror("lseek"); + return -1; + } + + /* Seek to new size */ + if (lseek(fd, length, SEEK_SET) == -1) + { + perror("lseek"); + return -1; + } + + /* Write a zero */ + if (write(fd, &zero, 1) == -1) + { + perror("write"); + return -1; + } + + /* Truncate. This shouldn't fail. */ + if (ftruncate(fd, length) == -1) + { + perror("ftruncate"); + return -1; + } + + /* Restore position */ + if (lseek(fd, pos, SEEK_SET) == -1) + { + perror("lseek"); + return -1; + } + + return 0; +} + +/* Just like open(2), but if a open with O_EXCL fails, retry with + GUARDED semantics. This might be necessary because some filesystems + (such as NFS filesystems mounted from a unfsd server) doesn't + support O_EXCL. GUARDED semantics are subject to race conditions, + but we can live with that. +*/ +static int +open_weak_exclusive(const char *pathname, int flags, mode_t mode) +{ + int ret; + struct stat statbuf; + + ret = open(pathname, flags, mode); + if (ret != -1 || !(flags & O_EXCL)) + { + /* Success, or not using O_EXCL */ + return ret; + } + + /* An error occured, and we are using O_EXCL. In case the FS + doesn't support O_EXCL, some kind of error will be + returned. Unfortunately, we don't know which one. Linux + 2.6.8 seems to return 524, but I cannot find a documented + #define for this case. So, we'll return only on errors that + we know aren't related to O_EXCL. */ + switch (errno) + { + case EACCES: + case EEXIST: + case EINTR: + case EISDIR: + case ELOOP: + case ENAMETOOLONG: + case ENOENT: + case ENOTDIR: + return ret; + } + + /* Retry with GUARDED semantics */ + if (stat(pathname, &statbuf) != -1) + { + /* File exists */ + errno = EEXIST; + return -1; + } + else + { + return open(pathname, flags & ~O_EXCL, mode); + } +} + +/* Enumeration of devices from rdesktop.c */ +/* returns numer of units found and initialized. */ +/* optarg looks like ':h=/mnt/floppy,b=/mnt/usbdevice1' */ +/* when it arrives to this function. */ +int +disk_enum_devices(RDPCLIENT * This, uint32 * id, char *optarg) +{ + char *pos = optarg; + char *pos2; + int count = 0; + + /* skip the first colon */ + optarg++; + while ((pos = next_arg(optarg, ',')) && *id < RDPDR_MAX_DEVICES) + { + pos2 = next_arg(optarg, '='); + + strncpy(This->rdpdr_device[*id].name, optarg, sizeof(This->rdpdr_device[*id].name) - 1); + if (strlen(optarg) > (sizeof(This->rdpdr_device[*id].name) - 1)) + fprintf(stderr, "share name %s truncated to %s\n", optarg, + This->rdpdr_device[*id].name); + + This->rdpdr_device[*id].local_path = (char *) xmalloc(strlen(pos2) + 1); + strcpy(This->rdpdr_device[*id].local_path, pos2); + This->rdpdr_device[*id].device_type = DEVICE_TYPE_DISK; + count++; + (*id)++; + + optarg = pos; + } + return count; +} + +/* Opens or creates a file or directory */ +static NTSTATUS +disk_create(RDPCLIENT * This, uint32 device_id, uint32 accessmask, uint32 sharemode, uint32 create_disposition, + uint32 flags_and_attributes, char *filename, NTHANDLE * phandle) +{ + NTHANDLE handle; + DIR *dirp; + int flags, mode; + char path[PATH_MAX]; + struct stat filestat; + + handle = 0; + dirp = NULL; + flags = 0; + mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; + + if (*filename && filename[strlen(filename) - 1] == '/') + filename[strlen(filename) - 1] = 0; + sprintf(path, "%s%s", This->rdpdr_device[device_id].local_path, filename); + + switch (create_disposition) + { + case CREATE_ALWAYS: + + /* Delete existing file/link. */ + unlink(path); + flags |= O_CREAT; + break; + + case CREATE_NEW: + + /* If the file already exists, then fail. */ + flags |= O_CREAT | O_EXCL; + break; + + case OPEN_ALWAYS: + + /* Create if not already exists. */ + flags |= O_CREAT; + break; + + case OPEN_EXISTING: + + /* Default behaviour */ + break; + + case TRUNCATE_EXISTING: + + /* If the file does not exist, then fail. */ + flags |= O_TRUNC; + break; + } + + /*printf("Open: \"%s\" flags: %X, accessmask: %X sharemode: %X create disp: %X\n", path, flags_and_attributes, accessmask, sharemode, create_disposition); */ + + /* Get information about file and set that flag ourselfs */ + if ((stat(path, &filestat) == 0) && (S_ISDIR(filestat.st_mode))) + { + if (flags_and_attributes & FILE_NON_DIRECTORY_FILE) + return STATUS_FILE_IS_A_DIRECTORY; + else + flags_and_attributes |= FILE_DIRECTORY_FILE; + } + + if (flags_and_attributes & FILE_DIRECTORY_FILE) + { + if (flags & O_CREAT) + { + mkdir(path, mode); + } + + dirp = opendir(path); + if (!dirp) + { + switch (errno) + { + case EACCES: + + return STATUS_ACCESS_DENIED; + + case ENOENT: + + return STATUS_NO_SUCH_FILE; + + default: + + perror("opendir"); + return STATUS_NO_SUCH_FILE; + } + } + handle = DIRFD(dirp); + } + else + { + + if (accessmask & GENERIC_ALL + || (accessmask & GENERIC_READ && accessmask & GENERIC_WRITE)) + { + flags |= O_RDWR; + } + else if ((accessmask & GENERIC_WRITE) && !(accessmask & GENERIC_READ)) + { + flags |= O_WRONLY; + } + else + { + flags |= O_RDONLY; + } + + handle = open_weak_exclusive(path, flags, mode); + if (handle == -1) + { + switch (errno) + { + case EISDIR: + + return STATUS_FILE_IS_A_DIRECTORY; + + case EACCES: + + return STATUS_ACCESS_DENIED; + + case ENOENT: + + return STATUS_NO_SUCH_FILE; + case EEXIST: + + return STATUS_OBJECT_NAME_COLLISION; + default: + + perror("open"); + return STATUS_NO_SUCH_FILE; + } + } + + /* all read and writes of files should be non blocking */ + if (fcntl(handle, F_SETFL, O_NONBLOCK) == -1) + perror("fcntl"); + } + + if (handle >= MAX_OPEN_FILES) + { + error("Maximum number of open files (%s) reached. Increase MAX_OPEN_FILES!\n", + handle); + exit(1); + } + + if (dirp) + This->fileinfo[handle].pdir = dirp; + else + This->fileinfo[handle].pdir = NULL; + + This->fileinfo[handle].device_id = device_id; + This->fileinfo[handle].flags_and_attributes = flags_and_attributes; + This->fileinfo[handle].accessmask = accessmask; + strncpy(This->fileinfo[handle].path, path, PATH_MAX - 1); + This->fileinfo[handle].delete_on_close = False; + This->notify_stamp = True; + + *phandle = handle; + return STATUS_SUCCESS; +} + +static NTSTATUS +disk_close(RDPCLIENT * This, NTHANDLE handle) +{ + struct fileinfo *pfinfo; + + pfinfo = &(This->fileinfo[handle]); + + This->notify_stamp = True; + + rdpdr_abort_io(This, handle, 0, STATUS_CANCELLED); + + if (pfinfo->pdir) + { + if (closedir(pfinfo->pdir) < 0) + { + perror("closedir"); + return STATUS_INVALID_HANDLE; + } + + if (pfinfo->delete_on_close) + if (rmdir(pfinfo->path) < 0) + { + perror(pfinfo->path); + return STATUS_ACCESS_DENIED; + } + pfinfo->delete_on_close = False; + } + else + { + if (close(handle) < 0) + { + perror("close"); + return STATUS_INVALID_HANDLE; + } + if (pfinfo->delete_on_close) + if (unlink(pfinfo->path) < 0) + { + perror(pfinfo->path); + return STATUS_ACCESS_DENIED; + } + + pfinfo->delete_on_close = False; + } + + return STATUS_SUCCESS; +} + +static NTSTATUS +disk_read(RDPCLIENT * This, NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) +{ + int n; + +#if 0 + /* browsing dir ???? */ + /* each request is 24 bytes */ + if (This->fileinfo[handle].flags_and_attributes & FILE_DIRECTORY_FILE) + { + *result = 0; + return STATUS_SUCCESS; + } +#endif + + lseek(handle, offset, SEEK_SET); + + n = read(handle, data, length); + + if (n < 0) + { + *result = 0; + switch (errno) + { + case EISDIR: + /* Implement 24 Byte directory read ?? + with STATUS_NOT_IMPLEMENTED server doesn't read again */ + /* return STATUS_FILE_IS_A_DIRECTORY; */ + return STATUS_NOT_IMPLEMENTED; + default: + perror("read"); + return STATUS_INVALID_PARAMETER; + } + } + + *result = n; + + return STATUS_SUCCESS; +} + +static NTSTATUS +disk_write(RDPCLIENT * This, NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) +{ + int n; + + lseek(handle, offset, SEEK_SET); + + n = write(handle, data, length); + + if (n < 0) + { + perror("write"); + *result = 0; + switch (errno) + { + case ENOSPC: + return STATUS_DISK_FULL; + default: + return STATUS_ACCESS_DENIED; + } + } + + *result = n; + + return STATUS_SUCCESS; +} + +NTSTATUS +disk_query_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM out) +{ + uint32 file_attributes, ft_high, ft_low; + struct stat filestat; + char *path, *filename; + + path = This->fileinfo[handle].path; + + /* Get information about file */ + if (fstat(handle, &filestat) != 0) + { + perror("stat"); + out_uint8(out, 0); + return STATUS_ACCESS_DENIED; + } + + /* Set file attributes */ + file_attributes = 0; + if (S_ISDIR(filestat.st_mode)) + file_attributes |= FILE_ATTRIBUTE_DIRECTORY; + + filename = 1 + strrchr(path, '/'); + if (filename && filename[0] == '.') + file_attributes |= FILE_ATTRIBUTE_HIDDEN; + + if (!file_attributes) + file_attributes |= FILE_ATTRIBUTE_NORMAL; + + if (!(filestat.st_mode & S_IWUSR)) + file_attributes |= FILE_ATTRIBUTE_READONLY; + + /* Return requested data */ + switch (info_class) + { + case FileBasicInformation: + seconds_since_1970_to_filetime(get_create_time(&filestat), &ft_high, + &ft_low); + out_uint32_le(out, ft_low); /* create_access_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(filestat.st_atime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_access_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(filestat.st_mtime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_write_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(filestat.st_ctime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_change_time */ + out_uint32_le(out, ft_high); + + out_uint32_le(out, file_attributes); + break; + + case FileStandardInformation: + + out_uint32_le(out, filestat.st_size); /* Allocation size */ + out_uint32_le(out, 0); + out_uint32_le(out, filestat.st_size); /* End of file */ + out_uint32_le(out, 0); + out_uint32_le(out, filestat.st_nlink); /* Number of links */ + out_uint8(out, 0); /* Delete pending */ + out_uint8(out, S_ISDIR(filestat.st_mode) ? 1 : 0); /* Directory */ + break; + + case FileObjectIdInformation: + + out_uint32_le(out, file_attributes); /* File Attributes */ + out_uint32_le(out, 0); /* Reparse Tag */ + break; + + default: + + unimpl("IRP Query (File) Information class: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + return STATUS_SUCCESS; +} + +NTSTATUS +disk_set_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM in, STREAM out) +{ + uint32 length, file_attributes, ft_high, ft_low, delete_on_close; + char newname[PATH_MAX], fullpath[PATH_MAX]; + struct fileinfo *pfinfo; + int mode; + struct stat filestat; + time_t write_time, change_time, access_time, mod_time; + struct utimbuf tvs; + struct STATFS_T stat_fs; + + pfinfo = &(This->fileinfo[handle]); + This->notify_stamp = True; + + switch (info_class) + { + case FileBasicInformation: + write_time = change_time = access_time = 0; + + in_uint8s(in, 4); /* Handle of root dir? */ + in_uint8s(in, 24); /* unknown */ + + /* CreationTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + + /* AccessTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + if (ft_low || ft_high) + access_time = convert_1970_to_filetime(ft_high, ft_low); + + /* WriteTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + if (ft_low || ft_high) + write_time = convert_1970_to_filetime(ft_high, ft_low); + + /* ChangeTime */ + in_uint32_le(in, ft_low); + in_uint32_le(in, ft_high); + if (ft_low || ft_high) + change_time = convert_1970_to_filetime(ft_high, ft_low); + + in_uint32_le(in, file_attributes); + + if (fstat(handle, &filestat)) + return STATUS_ACCESS_DENIED; + + tvs.modtime = filestat.st_mtime; + tvs.actime = filestat.st_atime; + if (access_time) + tvs.actime = access_time; + + + if (write_time || change_time) + mod_time = MIN(write_time, change_time); + else + mod_time = write_time ? write_time : change_time; + + if (mod_time) + tvs.modtime = mod_time; + + + if (access_time || write_time || change_time) + { +#if WITH_DEBUG_RDP5 + printf("FileBasicInformation access time %s", + ctime(&tvs.actime)); + printf("FileBasicInformation modification time %s", + ctime(&tvs.modtime)); +#endif + if (utime(pfinfo->path, &tvs) && errno != EPERM) + return STATUS_ACCESS_DENIED; + } + + if (!file_attributes) + break; /* not valid */ + + mode = filestat.st_mode; + + if (file_attributes & FILE_ATTRIBUTE_READONLY) + mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH); + else + mode |= S_IWUSR; + + mode &= 0777; +#if WITH_DEBUG_RDP5 + printf("FileBasicInformation set access mode 0%o", mode); +#endif + + if (fchmod(handle, mode)) + return STATUS_ACCESS_DENIED; + + break; + + case FileRenameInformation: + + in_uint8s(in, 4); /* Handle of root dir? */ + in_uint8s(in, 0x1a); /* unknown */ + in_uint32_le(in, length); + + if (length && (length / 2) < 256) + { + rdp_in_unistr(This, in, newname, length); + convert_to_unix_filename(newname); + } + else + { + return STATUS_INVALID_PARAMETER; + } + + sprintf(fullpath, "%s%s", This->rdpdr_device[pfinfo->device_id].local_path, + newname); + + if (rename(pfinfo->path, fullpath) != 0) + { + perror("rename"); + return STATUS_ACCESS_DENIED; + } + break; + + case FileDispositionInformation: + /* As far as I understand it, the correct + thing to do here is to *schedule* a delete, + so it will be deleted when the file is + closed. Subsequent + FileDispositionInformation requests with + DeleteFile set to FALSE should unschedule + the delete. See + http://www.osronline.com/article.cfm?article=245. */ + + in_uint32_le(in, delete_on_close); + + if (delete_on_close || + (pfinfo-> + accessmask & (FILE_DELETE_ON_CLOSE | FILE_COMPLETE_IF_OPLOCKED))) + { + pfinfo->delete_on_close = True; + } + + break; + + case FileAllocationInformation: + /* Fall through to FileEndOfFileInformation, + which uses ftrunc. This is like Samba with + "strict allocation = false", and means that + we won't detect out-of-quota errors, for + example. */ + + case FileEndOfFileInformation: + in_uint8s(in, 28); /* unknown */ + in_uint32_le(in, length); /* file size */ + + /* prevents start of writing if not enough space left on device */ + if (STATFS_FN(This->rdpdr_device[pfinfo->device_id].local_path, &stat_fs) == 0) + if (stat_fs.f_bfree * stat_fs.f_bsize < length) + return STATUS_DISK_FULL; + + if (ftruncate_growable(handle, length) != 0) + { + return STATUS_DISK_FULL; + } + + break; + default: + + unimpl("IRP Set File Information class: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + return STATUS_SUCCESS; +} + +NTSTATUS +disk_check_notify(RDPCLIENT * This, NTHANDLE handle) +{ + struct fileinfo *pfinfo; + NTSTATUS status = STATUS_PENDING; + + NOTIFY notify; + + pfinfo = &(This->fileinfo[handle]); + if (!pfinfo->pdir) + return STATUS_INVALID_DEVICE_REQUEST; + + + + status = NotifyInfo(This, handle, pfinfo->info_class, ¬ify); + + if (status != STATUS_PENDING) + return status; + + if (memcmp(&pfinfo->notify, ¬ify, sizeof(NOTIFY))) + { + /*printf("disk_check_notify found changed event\n"); */ + memcpy(&pfinfo->notify, ¬ify, sizeof(NOTIFY)); + status = STATUS_NOTIFY_ENUM_DIR; + } + + return status; + + +} + +NTSTATUS +disk_create_notify(RDPCLIENT * This, NTHANDLE handle, uint32 info_class) +{ + + struct fileinfo *pfinfo; + NTSTATUS ret = STATUS_PENDING; + + /* printf("start disk_create_notify info_class %X\n", info_class); */ + + pfinfo = &(This->fileinfo[handle]); + pfinfo->info_class = info_class; + + ret = NotifyInfo(This, handle, info_class, &pfinfo->notify); + + if (info_class & 0x1000) + { /* ???? */ + if (ret == STATUS_PENDING) + return STATUS_SUCCESS; + } + + /* printf("disk_create_notify: num_entries %d\n", pfinfo->notify.num_entries); */ + + + return ret; + +} + +static NTSTATUS +NotifyInfo(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, NOTIFY * p) +{ + struct fileinfo *pfinfo; + struct stat buf; + struct dirent *dp; + char *fullname; + DIR *dpr; + + pfinfo = &(This->fileinfo[handle]); + if (fstat(handle, &buf) < 0) + { + perror("NotifyInfo"); + return STATUS_ACCESS_DENIED; + } + p->modify_time = buf.st_mtime; + p->status_time = buf.st_ctime; + p->num_entries = 0; + p->total_time = 0; + + + dpr = opendir(pfinfo->path); + if (!dpr) + { + perror("NotifyInfo"); + return STATUS_ACCESS_DENIED; + } + + + while ((dp = readdir(dpr))) + { + if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) + continue; + p->num_entries++; + fullname = (char *) xmalloc(strlen(pfinfo->path) + strlen(dp->d_name) + 2); + sprintf(fullname, "%s/%s", pfinfo->path, dp->d_name); + + if (!stat(fullname, &buf)) + { + p->total_time += (buf.st_mtime + buf.st_ctime); + } + + xfree(fullname); + } + closedir(dpr); + + return STATUS_PENDING; +} + +static FsInfoType * +FsVolumeInfo(char *fpath) +{ + + static FsInfoType info; +#ifdef USE_SETMNTENT + FILE *fdfs; + struct mntent *e; +#endif + + /* initialize */ + memset(&info, 0, sizeof(info)); + strcpy(info.label, "RDESKTOP"); + strcpy(info.type, "RDPFS"); + +#ifdef USE_SETMNTENT + fdfs = setmntent(MNTENT_PATH, "r"); + if (!fdfs) + return &info; + + while ((e = getmntent(fdfs))) + { + if (str_startswith(e->mnt_dir, fpath)) + { + strcpy(info.type, e->mnt_type); + strcpy(info.name, e->mnt_fsname); + if (strstr(e->mnt_opts, "vfat") || strstr(e->mnt_opts, "iso9660")) + { + int fd = open(e->mnt_fsname, O_RDONLY); + if (fd >= 0) + { + unsigned char buf[512]; + memset(buf, 0, sizeof(buf)); + if (strstr(e->mnt_opts, "vfat")) + /*FAT*/ + { + strcpy(info.type, "vfat"); + read(fd, buf, sizeof(buf)); + info.serial = + (buf[42] << 24) + (buf[41] << 16) + + (buf[40] << 8) + buf[39]; + strncpy(info.label, buf + 43, 10); + info.label[10] = '\0'; + } + else if (lseek(fd, 32767, SEEK_SET) >= 0) /* ISO9660 */ + { + read(fd, buf, sizeof(buf)); + strncpy(info.label, buf + 41, 32); + info.label[32] = '\0'; + /* info.Serial = (buf[128]<<24)+(buf[127]<<16)+(buf[126]<<8)+buf[125]; */ + } + close(fd); + } + } + } + } + endmntent(fdfs); +#else + /* initialize */ + memset(&info, 0, sizeof(info)); + strcpy(info.label, "RDESKTOP"); + strcpy(info.type, "RDPFS"); + +#endif + return &info; +} + + +NTSTATUS +disk_query_volume_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM out) +{ + struct STATFS_T stat_fs; + struct fileinfo *pfinfo; + FsInfoType *fsinfo; + + pfinfo = &(This->fileinfo[handle]); + + if (STATFS_FN(pfinfo->path, &stat_fs) != 0) + { + perror("statfs"); + return STATUS_ACCESS_DENIED; + } + + fsinfo = FsVolumeInfo(pfinfo->path); + + switch (info_class) + { + case FileFsVolumeInformation: + + out_uint32_le(out, 0); /* volume creation time low */ + out_uint32_le(out, 0); /* volume creation time high */ + out_uint32_le(out, fsinfo->serial); /* serial */ + + out_uint32_le(out, 2 * strlen(fsinfo->label)); /* length of string */ + + out_uint8(out, 0); /* support objects? */ + rdp_out_unistr(This, out, fsinfo->label, 2 * strlen(fsinfo->label) - 2); + break; + + case FileFsSizeInformation: + + out_uint32_le(out, stat_fs.f_blocks); /* Total allocation units low */ + out_uint32_le(out, 0); /* Total allocation high units */ + out_uint32_le(out, stat_fs.f_bfree); /* Available allocation units */ + out_uint32_le(out, 0); /* Available allowcation units */ + out_uint32_le(out, stat_fs.f_bsize / 0x200); /* Sectors per allocation unit */ + out_uint32_le(out, 0x200); /* Bytes per sector */ + break; + + case FileFsAttributeInformation: + + out_uint32_le(out, FS_CASE_SENSITIVE | FS_CASE_IS_PRESERVED); /* fs attributes */ + out_uint32_le(out, F_NAMELEN(stat_fs)); /* max length of filename */ + + out_uint32_le(out, 2 * strlen(fsinfo->type)); /* length of fs_type */ + rdp_out_unistr(This, out, fsinfo->type, 2 * strlen(fsinfo->type) - 2); + break; + + case FileFsLabelInformation: + case FileFsDeviceInformation: + case FileFsControlInformation: + case FileFsFullSizeInformation: + case FileFsObjectIdInformation: + case FileFsMaximumInformation: + + default: + + unimpl("IRP Query Volume Information class: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + return STATUS_SUCCESS; +} + +NTSTATUS +disk_query_directory(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, char *pattern, STREAM out) +{ + uint32 file_attributes, ft_low, ft_high; + char *dirname, fullpath[PATH_MAX]; + DIR *pdir; + struct dirent *pdirent; + struct stat fstat; + struct fileinfo *pfinfo; + + pfinfo = &(This->fileinfo[handle]); + pdir = pfinfo->pdir; + dirname = pfinfo->path; + file_attributes = 0; + + switch (info_class) + { + case FileBothDirectoryInformation: + + /* If a search pattern is received, remember this pattern, and restart search */ + if (pattern[0] != 0) + { + strncpy(pfinfo->pattern, 1 + strrchr(pattern, '/'), PATH_MAX - 1); + rewinddir(pdir); + } + + /* find next dirent matching pattern */ + pdirent = readdir(pdir); + while (pdirent && fnmatch(pfinfo->pattern, pdirent->d_name, 0) != 0) + pdirent = readdir(pdir); + + if (pdirent == NULL) + return STATUS_NO_MORE_FILES; + + /* Get information for directory entry */ + sprintf(fullpath, "%s/%s", dirname, pdirent->d_name); + + if (stat(fullpath, &fstat)) + { + switch (errno) + { + case ENOENT: + case ELOOP: + case EACCES: + /* These are non-fatal errors. */ + memset(&fstat, 0, sizeof(fstat)); + break; + default: + /* Fatal error. By returning STATUS_NO_SUCH_FILE, + the directory list operation will be aborted */ + perror(fullpath); + out_uint8(out, 0); + return STATUS_NO_SUCH_FILE; + } + } + + if (S_ISDIR(fstat.st_mode)) + file_attributes |= FILE_ATTRIBUTE_DIRECTORY; + if (pdirent->d_name[0] == '.') + file_attributes |= FILE_ATTRIBUTE_HIDDEN; + if (!file_attributes) + file_attributes |= FILE_ATTRIBUTE_NORMAL; + if (!(fstat.st_mode & S_IWUSR)) + file_attributes |= FILE_ATTRIBUTE_READONLY; + + /* Return requested information */ + out_uint8s(out, 8); /* unknown zero */ + + seconds_since_1970_to_filetime(get_create_time(&fstat), &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* create time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(fstat.st_atime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_access_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(fstat.st_mtime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* last_write_time */ + out_uint32_le(out, ft_high); + + seconds_since_1970_to_filetime(fstat.st_ctime, &ft_high, &ft_low); + out_uint32_le(out, ft_low); /* change_write_time */ + out_uint32_le(out, ft_high); + + out_uint32_le(out, fstat.st_size); /* filesize low */ + out_uint32_le(out, 0); /* filesize high */ + out_uint32_le(out, fstat.st_size); /* filesize low */ + out_uint32_le(out, 0); /* filesize high */ + out_uint32_le(out, file_attributes); + out_uint8(out, 2 * strlen(pdirent->d_name) + 2); /* unicode length */ + out_uint8s(out, 7); /* pad? */ + out_uint8(out, 0); /* 8.3 file length */ + out_uint8s(out, 2 * 12); /* 8.3 unicode length */ + rdp_out_unistr(This, out, pdirent->d_name, 2 * strlen(pdirent->d_name)); + break; + + default: + /* FIXME: Support FileDirectoryInformation, + FileFullDirectoryInformation, and + FileNamesInformation */ + + unimpl("IRP Query Directory sub: 0x%x\n", info_class); + return STATUS_INVALID_PARAMETER; + } + + return STATUS_SUCCESS; +} + + + +static NTSTATUS +disk_device_control(RDPCLIENT * This, NTHANDLE handle, uint32 request, STREAM in, STREAM out) +{ + if (((request >> 16) != 20) || ((request >> 16) != 9)) + return STATUS_INVALID_PARAMETER; + + /* extract operation */ + request >>= 2; + request &= 0xfff; + + printf("DISK IOCTL %d\n", request); + + switch (request) + { + case 25: /* ? */ + case 42: /* ? */ + default: + unimpl("DISK IOCTL %d\n", request); + return STATUS_INVALID_PARAMETER; + } + + return STATUS_SUCCESS; +} + +DEVICE_FNS disk_fns = { + disk_create, + disk_close, + disk_read, + disk_write, + disk_device_control /* device_control */ +}; diff --git a/reactos/base/applications/tsclient/rdesktop/disk.h b/reactos/base/applications/tsclient/rdesktop/disk.h new file mode 100644 index 00000000000..c7f74445fdf --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/disk.h @@ -0,0 +1,139 @@ +/* + rdesktop: A Remote Desktop Protocol client. + Disk Redirection definitions + Copyright (C) Jeroen Meijer 2003 + Copyright (C) Peter Astrand 2004 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#define FILE_ATTRIBUTE_HIDDEN 0x00000002 +#define FILE_ATTRIBUTE_SYSTEM 0x00000004 +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +#define FILE_ATTRIBUTE_DEVICE 0x00000040 +#define FILE_ATTRIBUTE_UNKNOWNXXX0 0x00000060 /* ??? ACTION i.e. 0x860 == compress this file ? */ +#define FILE_ATTRIBUTE_NORMAL 0x00000080 +#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 +#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 +#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 +#define FILE_ATTRIBUTE_OFFLINE 0x00001000 +#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 +#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 + +#define FILE_FLAG_OPEN_NO_RECALL 0x00100000 +#define FILE_FLAG_OPEN_REPARSE_POINT 0x00200000 +#define FILE_FLAG_POSIX_SEMANTICS 0x01000000 +#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000 /* sometimes used to create a directory */ +#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000 +#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000 +#define FILE_FLAG_RANDOM_ACCESS 0x10000000 +#define FILE_FLAG_NO_BUFFERING 0x20000000 +#define FILE_FLAG_OVERLAPPED 0x40000000 +#define FILE_FLAG_WRITE_THROUGH 0x80000000 + +#define FILE_SHARE_READ 0x01 +#define FILE_SHARE_WRITE 0x02 +#define FILE_SHARE_DELETE 0x04 + +#define FILE_BASIC_INFORMATION 0x04 +#define FILE_STANDARD_INFORMATION 0x05 + +#define FS_CASE_SENSITIVE 0x00000001 +#define FS_CASE_IS_PRESERVED 0x00000002 +#define FS_UNICODE_STORED_ON_DISK 0x00000004 +#define FS_PERSISTENT_ACLS 0x00000008 +#define FS_FILE_COMPRESSION 0x00000010 +#define FS_VOLUME_QUOTAS 0x00000020 +#define FS_SUPPORTS_SPARSE_FILES 0x00000040 +#define FS_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FS_SUPPORTS_REMOTE_STORAGE 0X00000100 +#define FS_VOL_IS_COMPRESSED 0x00008000 +#define FILE_READ_ONLY_VOLUME 0x00080000 + +#define OPEN_EXISTING 1 +#define CREATE_NEW 2 +#define OPEN_ALWAYS 3 +#define TRUNCATE_EXISTING 4 +#define CREATE_ALWAYS 5 + +#define GENERIC_READ 0x80000000 +#define GENERIC_WRITE 0x40000000 +#define GENERIC_EXECUTE 0x20000000 +#define GENERIC_ALL 0x10000000 + +#define ERROR_FILE_NOT_FOUND 2L +#define ERROR_ALREADY_EXISTS 183L + +typedef enum _FILE_INFORMATION_CLASS +{ + FileDirectoryInformation = 1, + FileFullDirectoryInformation, + FileBothDirectoryInformation, + FileBasicInformation, + FileStandardInformation, + FileInternalInformation, + FileEaInformation, + FileAccessInformation, + FileNameInformation, + FileRenameInformation, + FileLinkInformation, + FileNamesInformation, + FileDispositionInformation, + FilePositionInformation, + FileFullEaInformation, + FileModeInformation, + FileAlignmentInformation, + FileAllInformation, + FileAllocationInformation, + FileEndOfFileInformation, + FileAlternateNameInformation, + FileStreamInformation, + FilePipeInformation, + FilePipeLocalInformation, + FilePipeRemoteInformation, + FileMailslotQueryInformation, + FileMailslotSetInformation, + FileCompressionInformation, + FileCopyOnWriteInformation, + FileCompletionInformation, + FileMoveClusterInformation, + FileOleClassIdInformation, + FileOleStateBitsInformation, + FileNetworkOpenInformation, + FileObjectIdInformation, + FileOleAllInformation, + FileOleDirectoryInformation, + FileContentIndexInformation, + FileInheritContentIndexInformation, + FileOleInformation, + FileMaximumInformation +} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; + +typedef enum _FSINFOCLASS +{ + FileFsVolumeInformation = 1, + FileFsLabelInformation, + FileFsSizeInformation, + FileFsDeviceInformation, + FileFsAttributeInformation, + FileFsControlInformation, + FileFsFullSizeInformation, + FileFsObjectIdInformation, + FileFsDriverPathInformation, + FileFsMaximumInformation +} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; diff --git a/reactos/base/applications/tsclient/rdesktop/doc/AUTHORS b/reactos/base/applications/tsclient/rdesktop/doc/AUTHORS new file mode 100644 index 00000000000..047cd0fc18d --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/AUTHORS @@ -0,0 +1,14 @@ +This is an attempt at a list of people who have made significant +contributions to the code. If you have been unintentionally omitted +please let one of the team members know. + +Matt Chapman +Peter Kallden +Hugo Trippaers +Jay Sorg +Peter Åstrand +Michal Mihalik +Norbert Federa +Erik Forsberg +Michael Gernoth +Jeroen Meijer diff --git a/reactos/base/applications/tsclient/rdesktop/doc/ChangeLog b/reactos/base/applications/tsclient/rdesktop/doc/ChangeLog new file mode 100644 index 00000000000..4119619d462 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/ChangeLog @@ -0,0 +1,86 @@ +rdesktop (1.?.?) + * SeamlessRDP - seamless windows support + * Keymap fixes + * Fix connection issues with Windows XP RTM + * Keyboard handling improvements and fixes + * SGI/Irix sound-driver fixes + * Support for clipboard INCR protocol + * Session Directory support (patch from Brian Chapeau ) + * Support for long filenames on redirected drives + * XOR ellipse drawing fix + * Clipboard unicode support (Ilya Konstantinov) + * Refactoring of color depth code (Ilya Konstantinov) + +rdesktop (1.4.1) + * persistent bitmap cache optimisations + * support for more RDP-orders (ellipse, polygon) + * libao sound-driver (for Mac OSX and others) + * Unicode support for transmitted strings/filenames + * Added korean keymap + * Xembed fixes to work with krdc correctly + * Portability fixes + * Support for RDP-compression (all bpps) + * process RDP recv queue if send queue is full (Debian bug #246461) + * SGI/Irix sound-driver fixes + + -- Michael Gernoth Sun, 8 May 2005 19:55:35 +0200 (CEST) + +rdesktop (1.4.0) + * Basic disk-, parallel-, printer- and serial-redirection + * Fix timezone-redirection + * Backing-store fixes + * Fix client-IP sent to TS + * XEmbed support for embedding rdesktop in other applications (KRDC) + * Support for setting the RDP5 experience + * Keyboard and keymap fixes + * Performance improvements + * Report disconnect-reason + * Support for RDP-compression (currently only for 8bpp) + * Support for persistent bitmap caching + * Sound-driver for SGI/Irix + + -- Michael Gernoth Sun, 6 Mar 2005 22:09:55 +0100 (CET) + +rdesktop (1.3.1) + * Crypto fixes for RDP5 + * Keyboard and keymap fixes + * some endianess fixes for high color + * portability enhancements + + -- Matthew Chapman Tue, 21 Jan 2004 20:34 + +rdesktop (1.3.0) + + * RDP5 + * 15, 16 and 24 bit color depths + * Basic clipboard redirection + * Sound + * IPv6 + * Attaching to console on Windows 2003 + + -- Peter Astrand Wed, 29 Oct 2003 16:40:58 +0100 (CET) + +rdesktop (1.2.0) + + * new - more portable - key mapping code + * support for "high" (128-bit) encryption + * toggling out of full-screen mode with Ctrl-Alt-Enter + * a few extra options including host:port syntax + * many, many bug fixes and optimisations + + -- Matthew Chapman Thu, 30 Jan 2003 04:29 + +rdesktop (1.1.0) + + * solves arith.c licensing issue by taking big number routines from + OpenSSL + * keyboard support not merged from unified patches yet + * still no manpage + + -- Matthew Chapman Mon, 17 Sep 2001 23:14:28 +1000 (AEST) + +rdesktop (1.0.0) + + * initial release + + -- Matthew Chapman diff --git a/reactos/base/applications/tsclient/rdesktop/doc/HACKING b/reactos/base/applications/tsclient/rdesktop/doc/HACKING new file mode 100644 index 00000000000..bb5ec669678 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/HACKING @@ -0,0 +1,28 @@ + +Code style / indentation +------------------------ +The file indent-all.sh contains information about the current code +style. Run this script before commits. + + +Variable argument macros +------------------------ +Variable argument macros are non-portable in general, and should be +avoided. Either use a second set of parentheses like DEBUG, or create +a variable argument function like error. + + +Structure +--------- +The core protocol stack should be system-independent (i.e. ANSI C +only) so that it is easy to port. This currently applies to the +following files: + +bitmap.c licence.c orders.c rdp.c rdp5.c cache.c iso.c mcs.c +secure.c mppc.c channels.c +rdesktop.c + + +RDP resources +------------- +http://dev.remotenetworktechnology.com/refdata.htm diff --git a/reactos/base/applications/tsclient/rdesktop/doc/TODO b/reactos/base/applications/tsclient/rdesktop/doc/TODO new file mode 100644 index 00000000000..8b9c852bd33 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/TODO @@ -0,0 +1,89 @@ + +* Clipboard: + + * Support other data types than plain text. + + * Conversion between different character sets. + + +* Drive Redirection: + + * Real support for file locking + + * Handle reconnections correctly. + + * Various deficiencies; see FIXMEs in source code. + + +* Serial Port Redirection: + + * More testing needed. + + +* Printer Redirection: + + * More testing needed. + + +* Keymapping: + + +* Sound redirection + + * Use timestamps in audio packets. + + * Add resampling to supported samplerates of audio-hardware. + + * Lower CPU-usage with an audio thread. + + +* Smartcard redirection + + * Merge patches currently implementing sc-redirection. + + +* Miscellaneous + + * Clean up header files. The current "proto.h" and "xproto.h" is far + from optimal. + + * Go through the many trackers (bugs/patches/RFEs) at SourceForge. + + * More fancy homepage. + + * Enhance documentation. Write a FAQ. + + +* SeamlessRDP mode + + * Add a client to server message for starting additional + applications. + + * Support cmd.exe. + + * Support for Input Contexts. + + * Enhanced support for WM_DELETE_WINDOW: Instead of terminating + rdesktop, close the window on the server side. + + * Systray support. + + * Support for transferring the application taskbar icon. + + * Better support for non-EWMH window managers. + + * Support for non-rectangular windows. + + * The focus handling of menus is a bit crude. + + * Support for sending focus information from client to server. + + * Implement something similiar to explhook.dll - support for running + explorer.exe in non-shell mode. + + * Better compatibility with Task Manager. + + * XINERAMA support. + + * When enumerating windows, make sure to send info about windows + that are transient for other windows after the referred window. diff --git a/reactos/base/applications/tsclient/rdesktop/doc/ipv6.txt b/reactos/base/applications/tsclient/rdesktop/doc/ipv6.txt new file mode 100644 index 00000000000..d96d173eee1 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/ipv6.txt @@ -0,0 +1,29 @@ + +IPv6 support in rdesktop +======================== +The IPv6 support was developed by Mike Dawson : + + Attached is a patch to tcp.c to enable IPv6 support. Build with + 'IPv6' defined to enable it. It's so far only been tested on + Linux 2.4.21 connecting to Windows XP SP1. + + Since terminal services doesn't seem to bind to the ipv6 interface + on XP I had to run 'netsh interface portproxy add v6tov4 + listenport=3389 connectport=3389' from the windows command prompt + to get it to work. + + +rdesktop now supports numeric IPv6 addresses: + + It checks for two or more colons in an address to decide what it's + dealing with so you can now do: + + rdesktop 2001:1:2:3::4 + + without it getting confused with an ipv4:port specification. I've + also followed the square bracket convention used by browsers + (http://www.ietf.org/rfc/rfc2732.txt) so if you want to specify a + non-standard port with an ipv6 address you can use the format: + + rdesktop [2001:1:2:3::4]:3390 + diff --git a/reactos/base/applications/tsclient/rdesktop/doc/keymap-names.txt b/reactos/base/applications/tsclient/rdesktop/doc/keymap-names.txt new file mode 100644 index 00000000000..44614cd85d5 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/keymap-names.txt @@ -0,0 +1,124 @@ + +0x0436 af Afrikaans +0x041C sq Albanian +0x0001 ar Arabic +0x0401 ar-sa Arabic (Saudi Arabia) +0x0801 ar-iq Arabic (Iraq) +0x0C01 ar-eg Arabic (Egypt) +0x1001 ar-ly Arabic (Libya) +0x1401 ar-dz Arabic (Algeria) +0x1801 ar-ma Arabic (Morocco) +0x1C01 ar-tn Arabic (Tunisia) +0x2001 ar-om Arabic (Oman) +0x2401 ar-ye Arabic (Yemen) +0x2801 ar-sy Arabic (Syria) +0x2C01 ar-jo Arabic (Jordan) +0x3001 ar-lb Arabic (Lebanon) +0x3401 ar-kw Arabic (Kuwait) +0x3801 ar-ae Arabic (U.A.E.) +0x3C01 ar-bh Arabic (Bahrain) +0x4001 ar-qa Arabic (Qatar) +0x042D eu Basque +0x0402 bg Bulgarian +0x0423 be Belarusian +0x0403 ca Catalan +0x0004 zh Chinese +0x0404 zh-tw Chinese (Taiwan) +0x0804 zh-cn Chinese (China) +0x0C04 zh-hk Chinese (Hong Kong SAR) +0x1004 zh-sg Chinese (Singapore) +0x041A hr Croatian +0x0405 cs Czech +0x0406 da Danish +0x0413 nl Dutch (Netherlands) +0x0813 nl-be Dutch (Belgium) +0x0009 en English +0x0409 en-us English (United States) +0x0809 en-gb English (United Kingdom) +0x0C09 en-au English (Australia) +0x1009 en-ca English (Canada) +0x1409 en-nz English (New Zealand) +0x1809 en-ie English (Ireland) +0x1C09 en-za English (South Africa) +0x2009 en-jm English (Jamaica) +0x2809 en-bz English (Belize) +0x2C09 en-tt English (Trinidad) +0x0425 et Estonian +0x0438 fo Faeroese +0x0429 fa Farsi +0x040B fi Finnish +0x040C fr French (France) +0x080C fr-be French (Belgium) +0x0C0C fr-ca French (Canada) +0x100C fr-ch French (Switzerland) +0x140C fr-lu French (Luxembourg) +0x043C gd Gaelic +0x0407 de German (Germany) +0x0807 de-ch German (Switzerland) +0x0C07 de-at German (Austria) +0x1007 de-lu German (Luxembourg) +0x1407 de-li German (Liechtenstein) +0x0408 el Greek +0x040D he Hebrew +0x0439 hi Hindi +0x040E hu Hungarian +0x040F is Icelandic +0x0421 in Indonesian +0x0410 it Italian (Italy) +0x0810 it-ch Italian (Switzerland) +0x0411 ja Japanese +0x0412 ko Korean +0x0426 lv Latvian +0x0427 lt Lithuanian +0x042F mk FYRO Macedonian +0x043E ms Malay (Malaysia) +0x043A mt Maltese +0x0414 no Norwegian (Bokmal) +0x0814 no Norwegian (Nynorsk) +0x0415 pl Polish +0x0416 pt-br Portuguese (Brazil) +0x0816 pt Portuguese (Portugal) +0x0417 rm Rhaeto-Romanic +0x0418 ro Romanian +0x0818 ro-mo Romanian (Moldova) +0x0419 ru Russian +0x0819 ru-mo Russian (Moldova) +0x0C1A sr Serbian (Cyrillic) +0x081A sr Serbian (Latin) +0x041B sk Slovak +0x0424 sl Slovenian +0x042E sb Sorbian +0x040A es Spanish (Traditional Sort) +0x080A es-mx Spanish (Mexico) +0x0C0A es Spanish (International Sort) +0x100A es-gt Spanish (Guatemala) +0x140A es-cr Spanish (Costa Rica) +0x180A es-pa Spanish (Panama) +0x1C0A es-do Spanish (Dominican Republic) +0x200A es-ve Spanish (Venezuela) +0x240A es-co Spanish (Colombia) +0x280A es-pe Spanish (Peru) +0x2C0A es-ar Spanish (Argentina) +0x300A es-ec Spanish (Ecuador) +0x340A es-cl Spanish (Chile) +0x380A es-uy Spanish (Uruguay) +0x3C0A es-py Spanish (Paraguay) +0x400A es-bo Spanish (Bolivia) +0x440A es-sv Spanish (El Salvador) +0x480A es-hn Spanish (Honduras) +0x4C0A es-ni Spanish (Nicaragua) +0x500A es-pr Spanish (Puerto Rico) +0x0430 sx Sutu +0x041D sv Swedish +0x081D sv-fi Swedish (Finland) +0x041E th Thai +0x0431 ts Tsonga +0x0432 tn Tswana +0x041F tr Turkish +0x0422 uk Ukrainian +0x0420 ur Urdu +0x042A vi Vietnamese +0x0434 xh Xhosa +0x043D ji Yiddish +0x0435 zu Zulu + diff --git a/reactos/base/applications/tsclient/rdesktop/doc/keymapping.txt b/reactos/base/applications/tsclient/rdesktop/doc/keymapping.txt new file mode 100644 index 00000000000..27b70640c5b --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/keymapping.txt @@ -0,0 +1,243 @@ +Keyboard mapping +================ +This release of rdesktop uses a new, portable keyboard mapping +implementation. It should hopefully work on all X11 systems. This new +implementation only looks at X11 keysyms: Not on (nonportable) +keycodes or modifier status. This means that rdesktop will obey your +local keyboard configuration. For example, if you have swapped +CapsLock and Control, rdesktop will use this mapping. + +XKB is currently not used. It seems like a good idea to me, but since +some X servers (like Xvnc) does not support XKB, we still need to use +the plain old interface as well, at least. + +There are still some small problems. + +* CapsLock: CapsLock changes are never sent to the RDP + server. rdesktop does not know which keys that are modified by + CapsLock and which are not. So, the CapsLock indicator in Wordpad + etc will always be off. + +Composing/Multi_key is supported. For more information, see: + + MIT: $SRC/xc/nls/X11/locale/Compose/iso8859-1 + XFree86: /usr/X11R6/lib/X11/locale/*/Compose + Solaris' Openwin: /usr/openwin/include/X11/Suncompose.h + /usr/openwin/lib/locale/*/Compose + Irix6: compose(5) + + +Keymap files +============ +The names of the keymaps follows RFC1766. + +(You can find a translation from Windows keyboard layout numbers to +keymap names by looking at +HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\RFC1766 in the +registry.) + + +Contents of keymap files +======================== +The keymaps are line based. There are four different types of lines: + +1) include lines +Syntax: +include + +Example: +include common + + +2) map lines +Syntax: +map + +Example: +map 0x41d + +Map-lines specifies how the remote RDP server should interpret the +sent scancodes. + + +3) Translation lines +Syntax: + [flags..] + +Example: +onehalf 0x29 shift + +The scancode can be found in scancodes.h. Note: The scancode value for +extended keys can be calculated by OR:ing with 0x80. Example: The +Delete key have the scancode sequence 0xe0, 0x52. You can get the +scancode value to put into the map file by running: + +python -c "print hex(0x80 | 0x52)" + +If flags are "altgr", "shift", the scancode sent for this keysym will +be prefixed with AltGr, or Shift. + +If flags includes "addupper", a translation for this keysyms uppercase +name will be added as well, in addition to the non-uppercase +name. Example: + +x 2d addupper + +...will add an translation for "X" automatically, just like if you +would specify: + +X 2d shift + +If flags include "localstate", the modifier to send will be determined +by the local modifier state. + +If flags is "inhibit", nothing will be sent to the server. + +If flags is "numlock", rdesktop will make sure that the remote NumLock +state is on before generating the key event. Otherwise, it will make +sure NumLock is off. + + +4) enable_compose + +If any line starts with the keyword "enable_compose", rdesktop will +enable local Compose/Multi_key handling. Enabling this will often make +it impossible to compose characters with dead keys (on the remote +side). This is because when local compose support is enabled, dead +keys will not be sent to the remote side. + + +5) sequence lines +Syntax: +sequence ... + +Examples: +sequence eacute dead_acute e +sequence F12 f o o at e x a m p l e period c o m + +Sequence lines allows you to specify that multiple scancodes should be +sent to the RDP server, in response to one X11 keyboard event. Note: +The sequence is sent at the X11 KeyPress event. Nothing is sent at +KeyRelease. + + +6) keyboard_type lines +Syntax: +keyboard_type + +keyboard_type lines specifies the keyboard type. Default value is 0x4 +(en-us 101/104 keys keyboard). + + +7) keyboard_subtype lines +Syntax: +keyboard_subtype + +keyboard_subtype lines specifies the keyboard subtype. Default value +is 0x0 (en-us 101/104 keys keyboard). + + +8) keyboard_functionkeys lines +Syntax: +keyboard_functionkeys + +keyboard_functionkeys specifies the number of keyboard function +keys. Default value is 0xc (12, for standard 101/104 keys keyboard). + + + + +Suggested X11 keysym mapping on PCs +=================================== +Unfortunately, there is no standard for which keysyms a given key +should generate. If you have a PC-keyboard with Windows keys, I suggest this mapping: + +Keyboard keys: +CtrlLeft WinLeft AltLeft Space AltGr WinRight Menu CtrlRight + +...should generate keysyms: +Control_L Super_L Alt_L space Mode_switch Super_R Menu Control_R + +Additionally: +Shift-Alt should produce Meta_L +Shift-AltGr should produce Multi_Key. + +Use a modifier-map like this: + +shift Shift_L (0x32), Shift_R (0x3e) +lock Caps_Lock (0x25) +control Control_L (0x42), Control_R (0x6d) +mod1 Alt_L (0x40) +mod2 Num_Lock (0x4d) +mod3 Mode_switch (0x71) +mod4 Super_L (0x73), Super_R (0x74) +mod5 Scroll_Lock (0x4e) + + +Updating / writing keymap files +=============================== +When writing new or updating keymap files, please use comments and +blanks, to increase readability. The "sv" keymap is a good template. + +When you need to add a translation to a keymap file, do: + + 1. Get the "key number" for this key, by looking at keynums.png. + + 2. Take a look at scancodes.h, and look for + SCANCODE_KEY_. The scancode value is at the end of + the line. If the line contains (SCANCODE_EXTENDED | 0xsomething), + then you should OR 0x80 to this value. For example, you can do: + + python -c "print hex(0x80 | 0xsomething)" + + 3. Put the scancode (from step 2) and keysym name (found in the + error message) into the keymap file. + + +Special keys +============ + +* The combination Ctrl-Alt-Enter toggles between fullscreen and + non-fullscreen mode. + +* Meta, Hyper and Super are treated as windows keys. RDP4 does not + support the windows keys though, so if you are running RDP4, these + keys will translate to Ctrl-Esc. + + +Links +===== +http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html + + +Test cases +========== +When changing the keyboard code, make sure all these tests in Notepad +works: + +1. Ctrl+f should bring up Find dialog, with CapsLock both on and off. + +2. Ctrl+Shift+arrows should mark text, with CapsLock both on and off. + +3. Test a sequence, like egrave. + +4. Test a char generated with AltGr, such as @ on a swedish keyboard. + +5. Test Ctrl-Alt-Delete. + +6. Ctrl-Alt-Enter should toggle fullscreen. + +7. Test NumLock synchronization using the -N option. Excel is able to + indicate the current NumLock state. Verify that the status is + updated correctly on reconnects. + +8. Test the Windows keys, standalone as well as in combination with, + say, E. + +9. Make sure the system menu (via Alt-space) cannot be accessed in + single app mode. + +10. Make sure keymaps can be loaded from ~/.rdesktop/keymaps, + KEYMAP_PATH, $CWD/keymaps, and from an absolute path. + + diff --git a/reactos/base/applications/tsclient/rdesktop/doc/keynums.png b/reactos/base/applications/tsclient/rdesktop/doc/keynums.png new file mode 100644 index 00000000000..401601b9e06 Binary files /dev/null and b/reactos/base/applications/tsclient/rdesktop/doc/keynums.png differ diff --git a/reactos/base/applications/tsclient/rdesktop/doc/licensing.txt b/reactos/base/applications/tsclient/rdesktop/doc/licensing.txt new file mode 100644 index 00000000000..10ad4ee1a1b --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/licensing.txt @@ -0,0 +1,56 @@ + +To be able to connect to Microsoft Windows 2000 Terminal Services (and +probably later versions), you'll need to deal with licensing. This is +complicated. This file is supposed to contain some information about +how rdesktop works with Microsofts license systems. + +There's a lot of information on the MS web site, for example, +http://support.microsoft.com/default.aspx?scid=kb;EN-US;287687. + +From the rdesktop mailing list: + +Peter Åstrand , 2003-02-06 + +> We are running rdesktop 1.2 on machine A and connects to a Windows 2000 +> Server (machine B). The W2K machine has 5 real licenses installed ("Windows +> 2000 Terminal Services Client Access License", "Open" type). This can be +> verifier by using "Terminal Services Licensing". The problem is that all +> issued licenses have an expire-date. The expire date for the license issued +> to A was reached today, and no more connections could be made until we +> changed the client name (by using -n). +> +> We also have another similiar systems, with Linux machine C and W2K server +> D. This server has 200 licenses installed of the type "Select". On this +> server, the issued licenses seems to be permanent: The expire date is set +> to "-", and we have no problem with this system. +> +> The question of course is why the first system issues license with +> expiration date, while the second system issues permanent licenses. + + +Darryn Capes-Davis, 2003-02-07 + +> I have been through the problems and can tell you what is going +> on. The main difference of Machine B (Server 1) and Machine D (Server +> 2) is that from what I see Machine B has Service Pack 3 installed and +> Machine D does not. You see in Service Pack 3 there was a change made +> to TS Licencing in that Microsoft introduced a licence recovery +> mechanism. To cut to the point (I don't know the details) rdesktop 1.2 +> with SAVE_LICENCE defined works fine. In the new lic method the +> terminal server expects a valid licence to be presented to renew +> it. Otherwise it just expires it - and a day later you will see it +> actually gone (it does housekeeping once a day)! So if SAVE_LICENCE +> code is not enabled then it just expires and you can't use the licence +> until it cleans it away - and this is where a little gotcha is - if +> you move from using an rdesktop without SAVE_LICENCE to one with +> SAVE_LICENCE then it still won't recover an 'expired' licence. You +> have to wait for the daily housekeeping to clean it up - this really +> had me going for half a day or so! This is exactly what happened to +> you. +> +> The Server pre Spk 3 has the old model where licences never expire. To +> recover a licence that you never wanted to use again you have to call +> the Microsoft Clearing House. That's why they introduced the new +> method. And if you upgrade a Pre Spk3 server to Spk3 then the licences +> granted still stay with the old method - only new licences granted +> will use the new expiry method. diff --git a/reactos/base/applications/tsclient/rdesktop/doc/lspci-channel.txt b/reactos/base/applications/tsclient/rdesktop/doc/lspci-channel.txt new file mode 100644 index 00000000000..96f99e171a5 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/lspci-channel.txt @@ -0,0 +1,39 @@ + +Protocol overview +================= + +The lspci virtual channel makes it possible for the remote RDP server +to enumerate the local PCI devices. The protocol on this channel is +text based and line oriented: One single line per request or +response. UNIX-style LF line breaks are used. The maximum line length +is 1023, newline included. + +rdesktop acts as a server, with only one request: + + LSPCI + +The response is several lines with this syntax: + +,,,,,, + +After the last line, a line with a single dot is sent. + +Example: + +0300,102b,0525,102b,0338,04,00 +0401,8086,24d5,1028,0174,02,8f +. + + +Usage +===== + +To enable to lspci virtual channel, run rdesktop with "-r lspci". + + +References +========== + +http://www.microsoft.com/msj/1099/terminal/terminal.aspx +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/termserv/terminal_services_virtual_channels.asp + diff --git a/reactos/base/applications/tsclient/rdesktop/doc/patches.txt b/reactos/base/applications/tsclient/rdesktop/doc/patches.txt new file mode 100644 index 00000000000..e0e7c55f81f --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/patches.txt @@ -0,0 +1,340 @@ +This file documents some of all patches for rdesktop, floating around +the net, and how they are related to the current (CVS) version of +rdesktop. Things left to do are marked with TBD (To Be Done). + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/Makefile.diff +Description: +Makefile changes which makes it possible to compile rdesktop on SunOS +and OSF1. +Status: +Applied (slightly modified) + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/assar_19-7-2.hostlen.patch +Description: +Fix for hostnames longer than 30 chars. +Status: +Applied (revision 1.11 of secure.c) + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/backingstore+privatecolormap-for-19-3-9.patch +Description: +This adds support for 1) Private color maps (useful for 8 bpp mode) +and 2) backingstore selection. +Status: +1) is not needed anymore; rdesktop automatically uses Private color +map in 8 bpp mode. 2) is, as far as I understand, also not +need. rdesktop automatically uses a software backing store if the +Xserver does not provide one. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/ben_xwin.c.diff +Description: +Fixes for CapsLock and NumLock. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/ctrl1nohang.diff +Description: +Fixes problem with ctrl1 hangs. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/downkeypatch.diff +Description: +Seems to keep track of the remote modifier status. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/fasttext2+nobackpixmap.patch +Description: +(From http://mail.rdesktop.org/archive/2001/msg00218.html): + +1) Added --no-backpixmap option to disable the ugly double drawing in +xwin.c (I have a very robust backing storage in my X, so I don't need +it ;) + +2) More optimizations to text draw (previous fast-text patch was +included in 192-3-6-2). In text drawing with solid background the +glyphs are drawn with stippled fill instead of XCopyPlane (runs faster +on my S3Trio64 with XFree 3.3.6, please test it on other +configurations to validate this). The WinTach not show any improvement +with this change, it seems to use all transparent background text +draws, but with a old PC Magazine Winbench (3.1) doing the scroll text +test the speed gain is significative. + +3) My Previous patch to disable backing storage in fullscreen + +Status: +1) is not relevant any more, since rdesktop only uses backing store if +the Xserver does not provide backing store. +Need to examine if 2) and 3) are still useful. TBD. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/francisco_fix_patblt.html +Description: +The colors in patterns drawn with "pattern blt" order was inverted (fg +& bg). (See the background of the yellow help banners) +Status: +Applied (in revision 1.29, 2002/07/14) + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/frank_1linerfix.html +Description: +ui_create_glyph was not called with ipattern. +Status: +Applied (in revision 1.29, 2002/07/14). + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/frank_fasttext.patch.txt +Description: +Some kind of performence improvements. +Status: +From what I can tell, this patch is no longer necessary. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/hostname-patch +Description: +(From http://mail.rdesktop.org/archive/2001/msg00163.html): + +rdesktop uses gethostname to figure out the hostname, but gethostname +under linux returns an error when the hostname is longer than the +buffer. This hack gives gethostname a 64 char buffer and then strips +the first 16 chars or upto the first '.' and puts the result in +hostname[16]. + +Status: +Applied in version 1.10 of rdesktop.c. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/hove-19-7-2endian.diff +Description: +Includes a program for testing endianness. +Status: +rdesktop determines endianness at runtime. This patch is not needed +anymore. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/mmihalik_19-7-3-keyfix-4.patch +Description: +Some kind of new alternative keyboard mapping imlementation. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/norbert_fullscreen.patch +Description: +Fullscreen mode. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/norbert_percent.txt +Description: +Makes is possible to specify RDP geometry based a percent value of the +current desktop size. +Status: +Not applied. I don't think many people will need this. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/norbert_rdp_tcp_port.diff +Description: +Command line tcp port argument. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/patch19-7-2.xyPos.emptyPassword.patch +Description: +This patch adds: +1) Support for empty passwords +2) Support for asking for password interactively +3) Support for ++ geometry. + +Status: +1) and 2) can be solved by the -P parameter; patch not needed. +Functionality for 3) is currently missing. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-1.0.0-19-7-1-mmihalik-3.diff +Description: +Defines DO_GLYPH() etc. +Status: +As far as I understand, this patch is applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-1.0.0-mmihalik-1.diff +Description: +Misc drawing changes. +Status: +As far as I understand, this patch is applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-1.0.0-pl19-7-2-mmihalik-1.diff +Description: +Some kind of new alternative keyboard mapping implementation. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-gmp.patch +Description: +Use GMP for RSA crypto. +Status: +Not needed since rdesktop now use OpenSSL for all of the crypto. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-new_kb.patch +Description: +Modifies one of the old keyboard mapping implementations in some way. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop-openssl.patch +Description: +Support for linking rdesktop with OpenSSL. +Status: +Not needed anymore, rdesktop can optionally use system +OpenSSL. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop.vncviewer_patch +Description: +Hack for making the old (broken) keyboard mapping implementation work +with the VNC Xserver. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdesktop_keymap.patch +Description: +Some kind of new alternative keyboard mapping implementation. +Status: +Not needed anymore, with the new keyboard mapping implementation. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/rdp-srvr-19-6-6.diff +Description: +Basic RDP server. +Status: +Not applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/scroll-to-death-patch.txt +Description: +Fixes scroll-to-death problem in Excel and other applications. +Status: +Not needed; fixed in another way in recent versions of rdesktop. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/spark-manpage-patch-19.4 +Description: +Adds a manual page. +Status: +Not needed; rdesktop contains a manual page now. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/spark-manpage-patch-19.4-1 +Description: +Adds a manual page. +Status: +Not needed; rdesktop contains a manual page now. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/spark_xinerama-patch2 +Description: +Adds XINERAMA support to rdesktop. +Status: +Not applied yet. TBD. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/svenni_dis_wmkeybnds.patch +Description: +Commandline flag to disable keyboard grabbing. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/svenni_disable_bs_in_x-tiny-patch +Description: +Disables backing store for TinyX. +Status: +As far as I understand, this patch is not need any longer. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_19-7-2.license.patch +Description: +TBD +Status: +Not yet examined. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_19-7-2.secure.patch +Description: +Fixes a problem during the connection to a French NT4 TSE (a French +NT4 TSE doesn't use encryptation). +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_19-7-3_excel.patch +Description: +Makes matrixes appear better, such as those found in Excel/toad etc. +Status: +Applied. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vincent_8bpp.patch +Description: +Support a 8bpp display (256 colours). +Status: +An enhanced version is included in rdesktop; this patch is not needed any more. + + +URL: +http://bibl4.oru.se/projects/rdesktop/patch19/patches/vpypatch.txt +Description: +Various changes for one of the old keyboard stuff. +Status: +Not needed anymore, with the new keyboard mapping implementation. diff --git a/reactos/base/applications/tsclient/rdesktop/doc/rdesktop.1 b/reactos/base/applications/tsclient/rdesktop/doc/rdesktop.1 new file mode 100644 index 00000000000..5a78c2f3ce3 --- /dev/null +++ b/reactos/base/applications/tsclient/rdesktop/doc/rdesktop.1 @@ -0,0 +1,217 @@ +.TH rdesktop 1 "November 2005" +.SH NAME +.I rdesktop +\- Remote Desktop Protocol client +.SH SYNOPSIS +.B rdesktop [options] server[:port] +.br +.SH DESCRIPTION +.I rdesktop +is a client for Remote Desktop Protocol (RDP), used in a number of Microsoft +products including Windows NT Terminal Server, Windows 2000 Server, Windows XP +and Windows 2003 Server. + +.SH OPTIONS +.TP +.BR "-u " +Username for authentication on the server. +.TP +.BR "-d " +Domain for authentication. +.TP +.BR "-s " +Startup shell for the user - starts a specific application instead of Explorer. +.TP +.BR "-c " +The initial working directory for the user. Often used in combination with -s +to set up a fixed login environment. +.TP +.BR "-p " +The password to authenticate with. Note that this may have no effect if +"Always prompt for password" is enabled on the server. WARNING: if you specify +a password on the command line it may be visible to other users when they use +tools like ps. Use -p - to make rdesktop request a password at startup (from +standard input). +.TP +.BR "-n " +Client hostname. Normally rdesktop automatically obtains the hostname of the +client. +.TP +.BR "-k " +Keyboard layout to emulate. This requires a corresponding keymap file to be +installed. The standard keymaps provided with rdesktop follow the RFC1766 +naming scheme: a language code followed by a country code if necessary - e.g. +en-us, en-gb, de, fr, sv, etc. + +The default keyboard map depends on the current locale (LC_* and LANG +environment variables). If the current locale is unknown, the default +keyboard map is en-us (a US English keyboard). + +The keyboard maps are file names, which means that they are case +sensitive. The standard keymaps are all in lowercase. + +The keyboard maps are searched relative to the directories +$HOME/.rdesktop/keymaps, KEYMAP_PATH (specified at build time), and +$CWD/keymaps, in this order. The keyboard-map argument can also be an +absolute filename. + +The special value `none' can be used instead of a keyboard map. +In this case, rdesktop will guess the scancodes from the X11 event key +codes using an internal mapping method. This method only supports the +basic alphanumeric keys and may not work properly on all platforms +so its use is discouraged. +.TP +.BR "-g " +Desktop geometry (WxH). If geometry is the special word "workarea", the geometry +will be fetched from the extended window manager hints property _NET_WORKAREA, from +the root window. The geometry can also be specified as a percentage of the whole +screen, e.g. "-g 80%". +.TP +.BR "-f" +Enable fullscreen mode. This overrides the window manager and causes the +rdesktop window to fully cover the current screen. Fullscreen mode can be +toggled at any time using Ctrl-Alt-Enter. +.TP +.BR "-b" +Force the server to send screen updates as bitmaps rather than using +higher-level drawing operations. +.TP +.BR "-A" +Enable SeamlessRDP. In this mode, rdesktop creates a X11 window for +each window on the server side. This mode requires the SeamlessRDP +server side component. When using this option, you should specify a +startup shell which launches the desired application through +SeamlessRDP. Example: rdesktop -A -s 'seamlessrdpshell notepad'. +.TP +.BR "-B" +Use the BackingStore of the Xserver instead of the integrated one in +rdesktop. +.TP +.BR "-e" +Disable encryption. This option is only needed (and will only work) if you +have a French version of NT TSE. +.TP +.BR "-E" +Disable encryption from client to server. This sends an encrypted login packet, +but everything after this is unencrypted (including interactive logins). +.TP +.BR "-m" +Do not send mouse motion events. This saves bandwidth, although some Windows +applications may rely on receiving mouse motion. +.TP +.BR "-C" +Use private colourmap. This will improve colour accuracy on an 8-bit display, +but rdesktop will appear in false colour when not focused. +.TP +.BR "-D" +Hide window manager decorations, by using MWM hints. +.TP +.BR "-K" +Do not override window manager key bindings. By default rdesktop attempts +to grab all keyboard input when it is in focus. +.TP +.BR "-S