home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 November / PCWorld_2004-11_cd.bin / software / temacd / poweroff / pwroff30.exe / src / poweroff.h < prev    next >
C/C++ Source or Header  |  2003-08-10  |  7KB  |  206 lines

  1. #define _WIN32_WINNT 0x0500
  2. #define ISOLATION_AWARE_ENABLED
  3. #define SIDEBYSIDE_COMMONCONTROLS 1 
  4.  
  5.  
  6.  
  7. #include <windows.h>
  8. #include <commctrl.h>
  9. #include <shlobj.h>
  10. #include <stdio.h>
  11. #include <time.h>
  12. #include <stdarg.h>
  13. #include "resource.h"
  14.  
  15. #define POWEROFF_VERSION "3.0.1.3"
  16.  
  17. #define NMESSAGE 1234
  18. #define SHUTDOWN_TIMER 0
  19. #define TIME_TIMER 1
  20.  
  21. #define ID_SCHEDULE_TIMER 0
  22. #define ID_PROCESS_TIMER  1
  23. #define ID_TRAY_TIMER     2
  24. #define ID_STOP_TIMER     3
  25. #define ID_TIME_TIMER     4
  26. #define ID_HIDE_TIMER     4
  27.  
  28. #define LISTEN_PORT      3210
  29. #define LISTEN_CLIENTS      1
  30. #define UWM_ACCEPT       1000
  31. #define UWM_READ         1001
  32.  
  33. #define COMMAND_ERROR    501
  34. #define COMMAND_INFO     201
  35. #define COMMAND_OK       250
  36.  
  37. #define ADD_DAY(d) { if (str[0]) { strcat(str,","); strcat(str,d);} else strcpy(str,d); }
  38.  
  39.  
  40. typedef BOOL (CALLBACK *PROCENUMPROC)( DWORD, WORD, LPSTR, LPARAM ) ;
  41. typedef BOOLEAN (WINAPI *SETSUSPENDSTATEPROC)(BOOL,BOOL,BOOL);
  42.  
  43. typedef enum { LOCAL_COMPUTER, REMOTE_COMPUTER } Computer;
  44. typedef enum { IMMEDIATE, SCHEDULED, PROCESS } When;
  45. typedef enum { FIXED_DAY, DAILY, DAY_OF_MONTH, AFTER_X_SECONDS } Schedule;
  46. typedef enum { LOGOFF, REBOOT, SHUTDOWN, POWEROFF, STANDBY, HIBERNATE, LOCK, WAKE_ON_LAN, MONITOR_OFF, MONITOR_ON, NO_ACTION } Action;
  47. typedef enum { NOTHING, SAVE_SETTINGS, REMOVE_SETTINGS, SAVE_SERVICE_SETTINGS, REMOVE_SERVICE_SETTINGS, CREATE_SERVICE, REMOVE_SERVICE } CommandLineAction;
  48.  
  49. typedef struct {
  50.   Action   action;
  51.   Computer who;
  52.   When     when;
  53.   short    interactive;
  54.   UINT     active_timer;
  55.   short    simulate;
  56.   short    start_minimized;
  57.   short    run_as_service;
  58.   char     executable[MAX_PATH];
  59.   SOCKET   serversocket;
  60.   SOCKET   clientsocket;
  61.   short    authenticated;
  62.   short    quiet;
  63.   unsigned remaining_seconds;
  64.   struct {
  65.     char  computer_name[100];
  66.     char  mac_address[14];
  67.     char  ip_address[20];
  68.     char  subnet_mask[20];
  69.     short use_nt;
  70.     int   port;
  71.     short save_password;
  72.     char  password[40];
  73.     short schedule_remote;
  74.     short current_credentials;
  75.     char  username[40];
  76.   } remote;
  77.   struct {
  78.     int   port;
  79.     char  password[40];
  80.   } remote_control;
  81.   struct {
  82.     unsigned seconds;
  83.     char     message[200];
  84.     short    play_sound;
  85.     char     sound_file[MAX_PATH];
  86.   } warning;
  87.   struct {
  88.     char program[MAX_PATH];
  89.     char directory[MAX_PATH];
  90.   } program;
  91.   struct {
  92.     Schedule   schedule;
  93.     SYSTEMTIME time;
  94.     SYSTEMTIME date;
  95.     short      monday;
  96.     short      tuesday;
  97.     short      wednesday;
  98.     short      thursday;
  99.     short      friday;
  100.     short      saturday;
  101.     short      sunday;
  102.     short      week1;
  103.     short      week2;
  104.     short      week3;
  105.     short      week4;
  106.     short      week5;
  107.     unsigned   day;
  108.     unsigned   seconds;
  109.     int        wait;
  110.   } schedule;
  111.   struct {
  112.     char process[200];
  113.   } process;
  114.   OSVERSIONINFO windowsversion;
  115.   struct {
  116.     short warning;
  117.     short run_program;
  118.     short force;
  119.     short in_tray;
  120.     short allow_cancel;
  121.     short allow_remote_control;
  122.   } options;
  123. } PowerSettings;
  124.  
  125.  
  126.  
  127. extern HINSTANCE hInst;
  128. extern UINT g_tid,g_time_tid;
  129. HWND g_hWnd;
  130. extern short debug;
  131.  
  132. void Log(char *fmt,...);
  133. void Error(PowerSettings *ps,HWND hWnd,char *str);
  134. void DisplayLastError(PowerSettings *ps,HWND hWnd);
  135. void DisplayInformation(PowerSettings *ps,HWND hWnd,char *str);
  136. void WriteEvent(PowerSettings *ps,WORD event_type,char *fmt,...);
  137. char *GetModeStr(PowerSettings *ps);
  138. void MinimizePoweroff(HWND hWnd,PowerSettings *ps);
  139. void RemoveFromTray(HWND hWnd);
  140.  
  141. void InitializeSettings(PowerSettings *ps);
  142. void ReadDefaultSettings(PowerSettings *ps);
  143. int SaveSettings(HKEY hive,char *base,PowerSettings *ps);
  144. int ReadSettings(HKEY hive,char *base,PowerSettings *ps);
  145. void DisplaySettings(HWND hWnd,PowerSettings *ps);
  146. void DebugSettings(PowerSettings *ps);
  147. int SanityCheck(HWND hWnd,PowerSettings *ps,char *str);
  148.  
  149. int ParseCommandLine(char *commandline,PowerSettings * ps);
  150. int PowerOff(HWND hWnd,PowerSettings *ps);
  151. int DoIt(HWND hWnd,PowerSettings *ps);
  152. int WakeOnLan(PowerSettings *ps,char *ip_address,char *mask,char *mac_address);
  153. void DoQuickAction(PowerSettings *ps,Action action);
  154. void Cleanup(PowerSettings *ps);
  155.  
  156. int ShowWarningMessage(HWND hWnd,PowerSettings *ps);
  157. void ShowRemoteDialog(HWND hWnd,PowerSettings *ps);
  158. void ShowMessageDialog(HWND hWnd,PowerSettings *ps);
  159. void ShowProcessDialog(HWND hWnd,PowerSettings *ps);
  160. void ShowProgramDialog(HWND hWnd,PowerSettings *ps);
  161. void ShowScheduleDialog(HWND hWnd,PowerSettings *ps);
  162. void ShowRemoteControlDialog(HWND hWnd,PowerSettings *ps);
  163. void CheckScheduleTimer(HWND hWnd,PowerSettings *ps);
  164. void CheckProcessTimer(HWND hWnd,PowerSettings *ps);
  165. int IsValidMACAddress(char *str);
  166. int IsValidIPAddress(char *str);
  167.  
  168.  
  169. BOOL WINAPI EnumProcs( PROCENUMPROC lpProc, LPARAM lParam );
  170.  
  171. BOOLEAN WriteRegistryString(HKEY hive,char *key,char *subkey,char *value);
  172. BOOLEAN WriteRegistryInteger(HKEY hive,char *key,char *subkey,DWORD value);
  173. BOOLEAN WriteRegistryBytes(HKEY hive,char *key,char *subkey,void *value,int sz);
  174. BOOLEAN ReadRegistryString(HKEY hive,char *key,char *subkey,char *value,int sz);
  175. BOOLEAN ReadRegistryInteger(HKEY hive,char *key,char *subkey,DWORD *value);
  176. BOOLEAN ReadRegistryShort(HKEY hive,char *key,char *subkey,short *value);
  177. BOOLEAN DeleteRegistryValue(HKEY hive,char *key,char *subkey);
  178. BOOLEAN DeleteRegistryKey(HKEY hive,char *key);
  179.  
  180. void CreatePoweroffService(HWND hWnd,PowerSettings *ps);
  181. void RemovePoweroffService(HWND hWnd,PowerSettings *ps);
  182. DWORD WINAPI CheckService(PowerSettings *ps);
  183. int IsPoweroffServiceRunning(HWND hWnd,PowerSettings *ps);
  184. void StartPoweroffService(HWND hWnd,PowerSettings *ps);
  185. void StopPoweroffService(HWND hWnd,PowerSettings *ps);
  186.  
  187. int InitializeSockets(void);
  188. void DestroySockets(HWND hWnd,PowerSettings *ps);
  189. int CreateServerSocket(HWND hWnd,PowerSettings *ps);
  190. int AcceptClientSocket(HWND hWnd,PowerSettings *ps);
  191. int ReadFromClientSocket(HWND hWnd,PowerSettings *ps);
  192. int CloseClientSocket(HWND hWnd,PowerSettings *ps);
  193. int CloseServerSocket(HWND hWnd,PowerSettings *ps);
  194. void ShowSocketError(PowerSettings *ps,char *function);
  195. void ReturnClientError(HWND hWnd,PowerSettings *ps, char *error);
  196. void ReturnClientInfo(HWND hWnd,PowerSettings *ps, char *info, ...);
  197. void ReturnClientOK(HWND hWnd,PowerSettings *ps);
  198. void ProcessClientCommand(HWND hWnd,PowerSettings *ps,char *command);
  199. int OpenServerConnection(HWND hWnd,PowerSettings *ps,char *server,char *errormsg);
  200. int SendRemoteCommand(HWND hWnd,PowerSettings *ps,char *errorstr);
  201. char *EncodePassword(char *password);
  202.  
  203. char *Trim(char *str);
  204. int ReplaceString(char *str,char *srch,char *repl);
  205.  
  206. extern SETSUSPENDSTATEPROC MySetSuspendState;