ARSETUP.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #include "setupdlg.h"
  2. #define MAXREGPATHLEN 1024      // Max length of registry path
  3. #define MAXTPLEN 128             // Max length of TP name
  4. #define MAXBINPATHLEN   256             // Max length of file path
  5. #define MAXPARAMLEN   128         // Max length of command-line parameters
  6. #define MAXUSERNAMELEN  32 // Max length of username
  7. #define MAXPASSWORDLEN  32 // Max length of password
  8. #define MAXLULEN 8 // Max length of LU name
  9. #define VALIDATE_INT  1
  10. #define VALIDATE_APPC  2
  11. #define INFINITE_TIMEOUT  "-1"      // Value used for infinite timeout
  12. #define INIT_TIMEOUT    5      // Initial value displayed in timeout box
  13. #define MAXTIMEOUTLEN 5      // Max digits in timeout
  14. #ifdef WIN32
  15. typedef struct _KeyEntry {
  16.   LPSTR lpParent;                       // Parent key
  17.   LPSTR lpName;                         // Data field name
  18.   int   iDataType;                      // Type of data
  19.   LPSTR lpData; // Data itself
  20.   int   iDataSize; // Length of data, including nulls
  21. } KEYENTRY;
  22. // The following variable defines the subkeys that are placed in the registry.
  23. // The first field gives the key under which to create the new subkey.  The
  24. // second field is the subkey name.  The third field is the data type.
  25. // The fourth field gives the data itself.  This should always be a string,
  26. // HOWEVER, if the third field isn't REG_SZ, some interpretation will go on,
  27. // as follows:
  28. //   If the third field is REG_MULTI_SZ, you should add an extra null character
  29. //   to the end of the string to simulate an array of strings.
  30. //   If the third field is REG_DWORD, you should enter the numeric value as
  31. //   a string in the fourth field, as in "345" if you want the data to be the
  32. //   number 345.
  33. // The fifth field is the length of the fourth field in bytes, INCLUDING nulls.
  34. // This field is set automatically for REG_DWORD data.
  35. KEYENTRY keyinfo[] = {
  36.   { "Linkage",    "OtherDependencies",    REG_MULTI_SZ, "SnaBase", 9 },
  37.   { "Parameters", "SNAServiceType",       REG_DWORD,    "5",         4 },
  38.   { "Parameters", "ConversationSecurity", REG_SZ,       "yes",       4 },
  39.   { "Parameters", "AlreadyVerified",      REG_SZ,       "yes",       4 },
  40.   { "Parameters", "Timeout",              REG_DWORD,    "",      4 },
  41.   { "Parameters", "Parameters",           REG_SZ,       "",       4 },
  42.   { "Parameters", "LocalLU",              REG_SZ,       "",      4 },
  43.   { "Parameters", "",                     REG_SZ,       "",          4 },
  44.   { "Parameters", "PathName",             REG_SZ,       "",          4 },
  45. };
  46. // These numbers must correspond to the indices in keyinfo above!
  47. #define SNASRVTYPE 1
  48. #define CONVSEC    2
  49. #define ALREADYVER 3
  50. #define TIMEOUT    4
  51. #define PARAMETERS 5
  52. #define LUNAME     6
  53. #define USER       7   // Blank field for writing out users & passwords
  54. #define EXENAME    8
  55. #define NUMKEYS    6      // Last three keys only written out if needed
  56. int  InstallServiceNT(HWND, LPSTR, LPSTR);
  57. int  CreateKeys(LPSTR, BOOL, LPSTR, int, int, int, LPSTR, LPSTR, LPSTR);
  58. INT  WriteKeyNT(LPSTR, KEYENTRY, BOOL);
  59. #else
  60. #define USHORT unsigned short
  61. #define INT    int
  62. #define SHORT  short
  63. typedef struct _KeyEntry {
  64.   char *name;                        // Data field name
  65.   char *data;      // Data itself
  66. } KEYENTRY;
  67. // If you change the fields below, change the #defines too; they are used
  68. // as indices into the keyinfo structure to set the data fields, which are
  69. // initially all NULL.
  70. KEYENTRY keyinfo[] = {
  71.   { "PathName",      NULL },
  72.   { "Parameters",      NULL },
  73.   { "Queued",      NULL },
  74.   { "Timeout",      NULL },
  75.   { "ConversationSecurity", NULL },
  76.   { "AlreadyVerified",      NULL },
  77.   { "LocalLU",     NULL },
  78.   { "",                     NULL },
  79. };
  80. #define PATHNAME    0
  81. #define PARAMETERS  1
  82. #define QUEUED      2
  83. #define TIMEOUT     3
  84. #define CONVSEC     4
  85. #define ALREADYVER  5
  86. #define LUNAME      6
  87. #define USER        7
  88. #define NUMKEYS     6 // Last keys only written out if necessary
  89. int  InstallWindows(HWND, char *, char *, char *, char *, int, int, int, char *);
  90. INT  WriteKeyWindows(char *, char *, char *);
  91. #endif //ifdef WIN32
  92. extern BOOL CALLBACK MainDlgProc (HWND, UINT, WPARAM, LPARAM);
  93. extern BOOL CALLBACK UserDlgProc (HWND, UINT, WPARAM, LPARAM);
  94. BOOL ValidateField(HWND, USHORT);
  95. void InstallCallback(HWND, UINT, WNDPROC *, FARPROC);
  96. extern LRESULT CALLBACK ValidateFieldInt(HWND, WORD, WPARAM, LPARAM);
  97. extern LRESULT CALLBACK ValidateFieldAppc(HWND, WORD, WPARAM, LPARAM);
  98. extern LRESULT CALLBACK InfiniteWndProc(HWND, WORD, WPARAM, LPARAM);
  99. extern LRESULT CALLBACK FiniteWndProc(HWND, WORD, WPARAM, LPARAM);
  100. extern LRESULT CALLBACK ConvSecWndProc(HWND, WORD, WPARAM, LPARAM);
  101. extern LRESULT CALLBACK ServiceWndProc(HWND, WORD, WPARAM, LPARAM);
  102. void ParseCreateError(HWND, UINT);
  103. void DeleteListItem(INT);
  104. INT  ReadString(HWND, INT, char **, INT);
  105. void DisplayError(HWND, UINT);
  106. void DisplayInfo(HWND, UINT);
  107. void MakeValidLUName(LPTSTR name);