Pastey redy_error wrap demo for a few extra win things
- Posted by ne1uno
Oct 07, 2016
--make a redy_error wrap demo for a few extra win things
-- debug print, getlasterror/formaterror, playsound,
--should add a define or switch in the call to outputdebugstring
--so you can watch them in a log or console if have no debug viewer
--Note: some of the lesser used routines define subroutines inline
--this has the advantage of not increasing the in use memory
--at the cost of a little extra CPU at run time for each routine call
--probably negligible like for playsound or formaterror
--it may seem clumsy and you may want to rewrite them in the standard way
--so everything is defined at the start
--where would you rather add a few milliseconds is the question
--startup time is already burdened with all it has to do
--you might delay loading of the lesser used dll as well
-- I didn't do that in this demo for simplicity
--playsound could be added to std/win32/sounds
--some generic method might be applicable to linux/unix/mac
--a simplified playsound is in one of the std/win32 demos
-- not sure but probably can only handle wav, no mp3, ogg etc
--might have some options but can't really depend on it working everywhere
--calling default browser or even default open may work
--especially if you can have the user select the right program
--leaving it up to them to associate the type every time if they haven't already
include std/machine.e
include std/dll.e -- newer dll.e defines NO_CHANDLE
-- older ones which have C_HANDLE do not define it
-- may have to go through the stdlib if any are using windefs
ifdef NO_CHANDLE then
include std\win32\w32dllconst.ew
end ifdef
include std/error.e
include std/io.e
include std/console.e
include std/math.e --or_all?
include std/win32/msgbox.e --some extra defines
include std/win32/sounds.e --some extra defines
public constant
Winmm=open_dll("Winmm.dll")
,user32=open_dll("user32.dll")
,kernel32 = dll:open_dll("kernel32.dll")
constant
xOutputDebugString = dll:define_c_proc(kernel32
,"OutputDebugStringA",{dll:C_POINTER})
,xSetLastError = dll:define_c_proc(kernel32
, "SetLastError", {dll:C_DWORD}),
FORMAT_MESSAGE_ALLOCATE_BUFFER = #00000100,
FORMAT_MESSAGE_IGNORE_INSERTS = #00000200,
FORMAT_MESSAGE_FROM_STRING = #00000400,
FORMAT_MESSAGE_FROM_HMODULE = #00000800,
FORMAT_MESSAGE_FROM_SYSTEM = #00001000,
FORMAT_MESSAGE_ARGUMENT_ARRAY = #00002000,
FORMAT_MESSAGE_MAX_WIDTH_MASK = #000000FF
,xSetErrMode = dll:define_c_proc(kernel32
, "SetErrMode", {dll:C_DWORD})
,SEM_FAILCRITICALERRORS = #0001
,SEM_NOGPFAULTERRORBOX = #0002
,SEM_NOALIGNMENTFAULTEXCEPT = #0004
,SEM_NOOPENFILEERRORBOX = #8000
,iMessageBeep = define_c_proc(user32,"MessageBeep",{C_UINT})
,BEEP = #FFFFFFFF
if kernel32 = dll:NULL then
error:crash("kernel32 or dll not found")
end if
public constant
--! #if(WINVER >= 0x0400)
WM_POWERBROADCAST = #0218
,S_OK = #00000000 --((HRESULT))
,S_FALSE = #00000001 --((HRESULT))
-- Errors.h WIN32 error codes Numerical order
,NO_ERROR = 0
,ERROR_SUCCESS = 0,
ERROR_INVALID_FUNCTION = 1,
ERROR_FILE_NOT_FOUND = 2,
ERROR_PATH_NOT_FOUND = 3,
ERROR_TOO_MANY_OPEN_FILES = 4,
ERROR_ACCESS_DENIED = 5,
ERROR_INVALID_HANDLE = 6,
ERROR_ARENA_TRASHED = 7,
ERROR_NOT_ENOUGH_MEMORY = 8,
ERROR_INVALID_BLOCK = 9,
ERROR_BAD_ENVIRONMENT = 10,
ERROR_BAD_FORMAT = 11,
ERROR_INVALID_ACCESS = 12,
ERROR_INVALID_DATA = 13,
ERROR_OUTOFMEMORY = 14,
ERROR_INVALID_DRIVE = 15,
ERROR_CURRENT_DIRECTORY = 16,
ERROR_NOT_SAME_DEVICE = 17,
ERROR_NO_MORE_FILES = 18,
ERROR_WRITE_PROTECT = 19,
ERROR_BAD_UNIT = 20,
ERROR_NOT_READY = 21,
ERROR_BAD_COMMAND = 22,
ERROR_CRC = 23,
ERROR_BAD_LENGTH = 24,
ERROR_SEEK = 25,
ERROR_NOT_DOS_DISK = 26,
ERROR_SECTOR_NOT_FOUND = 27,
ERROR_OUT_OF_PAPER = 28,
ERROR_WRITE_FAULT = 29,
ERROR_READ_FAULT = 30,
ERROR_GEN_FAILURE = 31,
ERROR_SHARING_VIOLATION = 32,
ERROR_LOCK_VIOLATION = 33,
ERROR_WRONG_DISK = 34,
ERROR_SHARING_BUFFER_EXCEEDED = 36,
ERROR_HANDLE_EOF = 38,
ERROR_HANDLE_DISK_FULL = 39,
ERROR_NOT_SUPPORTED = 50,
ERROR_REM_NOT_LIST = 51,
ERROR_DUP_NAME = 52,
ERROR_BAD_NETPATH = 53,
ERROR_NETWORK_BUSY = 54,
ERROR_DEV_NOT_EXIST = 55,
ERROR_TOO_MANY_CMDS = 56,
ERROR_ADAP_HDW_ERR = 57,
ERROR_BAD_NET_RESP = 58,
ERROR_UNEXP_NET_ERR = 59,
ERROR_BAD_REM_ADAP = 60,
ERROR_PRINTQ_FULL = 61,
ERROR_NO_SPOOL_SPACE = 62,
ERROR_PRINT_CANCELLED = 63,
ERROR_NETNAME_DELETED = 64,
ERROR_NETWORK_ACCESS_DENIED = 65,
ERROR_BAD_DEV_TYPE = 66,
ERROR_BAD_NET_NAME = 67,
ERROR_TOO_MANY_NAMES = 68,
ERROR_TOO_MANY_SESS = 69,
ERROR_SHARING_PAUSED = 70,
ERROR_REQ_NOT_ACCEP = 71,
ERROR_REDIR_PAUSED = 72,
ERROR_FILE_EXISTS = 80,
ERROR_CANNOT_MAKE = 82,
ERROR_FAIL_I24 = 83,
ERROR_OUT_OF_STRUCTURES = 84,
ERROR_ALREADY_ASSIGNED = 85,
ERROR_INVALID_PASSWORD = 86,
ERROR_INVALID_PARAMETER = 87,
ERROR_NET_WRITE_FAULT = 88,
ERROR_NO_PROC_SLOTS = 89,
ERROR_TOO_MANY_SEMAPHORES = 100,
ERROR_EXCL_SEM_ALREADY_OWNED = 101,
ERROR_SEM_IS_SET = 102,
ERROR_TOO_MANY_SEM_REQUESTS = 103,
ERROR_INVALID_AT_INTERRUPT_TIME = 104,
ERROR_SEM_OWNER_DIED = 105,
ERROR_SEM_USER_LIMIT = 106,
ERROR_DISK_CHANGE = 107,
ERROR_DRIVE_LOCKED = 108,
ERROR_BROKEN_PIPE = 109,
ERROR_OPEN_FAILED = 110,
ERROR_BUFFER_OVERFLOW = 111,
ERROR_DISK_FULL = 112,
ERROR_NO_MORE_SEARCH_HANDLES = 113,
ERROR_INVALID_TARGET_HANDLE = 114,
ERROR_INVALID_CATEGORY = 117,
ERROR_INVALID_VERIFY_SWITCH = 118,
ERROR_BAD_DRIVER_LEVEL = 119,
ERROR_CALL_NOT_IMPLEMENTED = 120,
ERROR_SEM_TIMEOUT = 121,
ERROR_INSUFFICIENT_BUFFER = 122,
ERROR_INVALID_NAME = 123,
ERROR_INVALID_LEVEL = 124,
ERROR_NO_VOLUME_LABEL = 125,
ERROR_MOD_NOT_FOUND = 126,
ERROR_PROC_NOT_FOUND = 127,
ERROR_WAIT_NO_CHILDREN = 128,
ERROR_CHILD_NOT_COMPLETE = 129,
ERROR_DIRECT_ACCESS_HANDLE = 130,
ERROR_NEGATIVE_SEEK = 131,
ERROR_SEEK_ON_DEVICE = 132,
ERROR_IS_JOIN_TARGET = 133,
ERROR_IS_JOINED = 134,
ERROR_IS_SUBSTED = 135,
ERROR_NOT_JOINED = 136,
ERROR_NOT_SUBSTED = 137,
ERROR_JOIN_TO_JOIN = 138,
ERROR_SUBST_TO_SUBST = 139,
ERROR_JOIN_TO_SUBST = 140,
ERROR_SUBST_TO_JOIN = 141,
ERROR_BUSY_DRIVE = 142,
ERROR_SAME_DRIVE = 143,
ERROR_DIR_NOT_ROOT = 144,
ERROR_DIR_NOT_EMPTY = 145,
ERROR_IS_SUBST_PATH = 146,
ERROR_IS_JOIN_PATH = 147,
ERROR_PATH_BUSY = 148,
ERROR_IS_SUBST_TARGET = 149,
ERROR_SYSTEM_TRACE = 150,
ERROR_INVALID_EVENT_COUNT = 151,
ERROR_TOO_MANY_MUXWAITERS = 152,
ERROR_INVALID_LIST_FORMAT = 153,
ERROR_LABEL_TOO_LONG = 154,
ERROR_TOO_MANY_TCBS = 155,
ERROR_SIGNAL_REFUSED = 156,
ERROR_DISCARDED = 157,
ERROR_NOT_LOCKED = 158,
ERROR_BAD_THREADID_ADDR = 159,
ERROR_BAD_ARGUMENTS = 160,
ERROR_BAD_PATHNAME = 161,
ERROR_SIGNAL_PENDING = 162,
ERROR_MAX_THRDS_REACHED = 164,
ERROR_LOCK_FAILED = 167,
ERROR_BUSY = 170,
ERROR_CANCEL_VIOLATION = 173,
ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174,
ERROR_INVALID_SEGMENT_NUMBER = 180,
ERROR_INVALID_ORDINAL = 182,
ERROR_ALREADY_EXISTS = 183,
ERROR_INVALID_FLAG_NUMBER = 186,
ERROR_SEM_NOT_FOUND = 187,
ERROR_INVALID_STARTING_CODESEG = 188,
ERROR_INVALID_STACKSEG = 189,
ERROR_INVALID_MODULETYPE = 190,
ERROR_INVALID_EXE_SIGNATURE = 191,
ERROR_EXE_MARKED_INVALID = 192,
ERROR_BAD_EXE_FORMAT = 193,
ERROR_ITERATED_DATA_EXCEEDS_64k = 194,
ERROR_INVALID_MINALLOCSIZE = 195,
ERROR_DYNLINK_FROM_INVALID_RING = 196,
ERROR_IOPL_NOT_ENABLED = 197,
ERROR_INVALID_SEGDPL = 198,
ERROR_AUTODATASEG_EXCEEDS_64k = 199,
ERROR_RING2SEG_MUST_BE_MOVABLE = 200,
ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201,
ERROR_INFLOOP_IN_RELOC_CHAIN = 202,
ERROR_ENVVAR_NOT_FOUND = 203,
ERROR_NO_SIGNAL_SENT = 205,
ERROR_FILENAME_EXCED_RANGE = 206,
ERROR_RING2_STACK_IN_USE = 207,
ERROR_META_EXPANSION_TOO_LONG = 208,
ERROR_INVALID_SIGNAL_NUMBER = 209,
ERROR_THREAD_1_INACTIVE = 210,
ERROR_LOCKED = 212,
ERROR_TOO_MANY_MODULES = 214,
ERROR_NESTING_NOT_ALLOWED = 215,
ERROR_BAD_PIPE = 230,
ERROR_PIPE_BUSY = 231,
ERROR_NO_DATA = 232,
ERROR_PIPE_NOT_CONNECTED = 233,
ERROR_MORE_DATA = 234,
ERROR_VC_DISCONNECTED = 240,
ERROR_INVALID_EA_NAME = 254,
ERROR_EA_LIST_INCONSISTENT = 255,
ERROR_NO_MORE_ITEMS = 259,
ERROR_CANNOT_COPY = 266,
ERROR_DIRECTORY = 267,
ERROR_EAS_DIDNT_FIT = 275,
ERROR_EA_FILE_CORRUPT = 276,
ERROR_EA_TABLE_FULL = 277,
ERROR_INVALID_EA_HANDLE = 278,
ERROR_EAS_NOT_SUPPORTED = 282,
ERROR_NOT_OWNER = 288,
ERROR_TOO_MANY_POSTS = 298,
ERROR_PARTIAL_COPY = 299,
ERROR_MR_MID_NOT_FOUND = 317,
ERROR_INVALID_ADDRESS = 487,
ERROR_ARITHMETIC_OVERFLOW = 534,
ERROR_PIPE_CONNECTED = 535,
ERROR_PIPE_LISTENING = 536,
ERROR_EA_ACCESS_DENIED = 994,
ERROR_OPERATION_ABORTED = 995,
ERROR_IO_INCOMPLETE = 996,
ERROR_IO_PENDING = 997,
ERROR_NOACCESS = 998,
ERROR_SWAPERROR = 999,
ERROR_STACK_OVERFLOW = 1001,
ERROR_INVALID_MESSAGE = 1002,
ERROR_CAN_NOT_COMPLETE = 1003,
ERROR_INVALID_FLAGS = 1004,
ERROR_UNRECOGNIZED_VOLUME = 1005,
ERROR_FILE_INVALID = 1006,
ERROR_FULLSCREEN_MODE = 1007,
ERROR_NO_TOKEN = 1008,
ERROR_BADDB = 1009,
ERROR_BADKEY = 1010,
ERROR_CANTOPEN = 1011,
ERROR_CANTREAD = 1012,
ERROR_CANTWRITE = 1013,
ERROR_REGISTRY_RECOVERED = 1014,
ERROR_REGISTRY_CORRUPT = 1015,
ERROR_REGISTRY_IO_FAILED = 1016,
ERROR_NOT_REGISTRY_FILE = 1017,
ERROR_KEY_DELETED = 1018,
ERROR_NO_LOG_SPACE = 1019,
ERROR_KEY_HAS_CHILDREN = 1020,
ERROR_CHILD_MUST_BE_VOLATILE = 1021,
ERROR_NOTIFY_ENUM_DIR = 1022,
ERROR_DEPENDENT_SERVICES_RUNNING = 1051,
ERROR_INVALID_SERVICE_CONTROL = 1052,
ERROR_SERVICE_REQUEST_TIMEOUT = 1053,
ERROR_SERVICE_NO_THREAD = 1054,
ERROR_SERVICE_DATABASE_LOCKED = 1055,
ERROR_SERVICE_ALREADY_RUNNING = 1056,
ERROR_INVALID_SERVICE_ACCOUNT = 1057,
ERROR_SERVICE_DISABLED = 1058,
ERROR_CIRCULAR_DEPENDENCY = 1059,
ERROR_SERVICE_DOES_NOT_EXIST = 1060,
ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061,
ERROR_SERVICE_NOT_ACTIVE = 1062,
ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063,
ERROR_EXCEPTION_IN_SERVICE = 1064,
ERROR_DATABASE_DOES_NOT_EXIST = 1065,
ERROR_SERVICE_SPECIFIC_ERROR = 1066,
ERROR_PROCESS_ABORTED = 1067,
ERROR_SERVICE_DEPENDENCY_FAIL = 1068,
ERROR_SERVICE_LOGON_FAILED = 1069,
ERROR_SERVICE_START_HANG = 1070,
ERROR_INVALID_SERVICE_LOCK = 1071,
ERROR_SERVICE_MARKED_FOR_DELETE = 1072,
ERROR_SERVICE_EXISTS = 1073,
ERROR_ALREADY_RUNNING_LKG = 1074,
ERROR_SERVICE_DEPENDENCY_DELETED = 1075,
ERROR_BOOT_ALREADY_ACCEPTED = 1076,
ERROR_SERVICE_NEVER_STARTED = 1077,
ERROR_DUPLICATE_SERVICE_NAME = 1078,
ERROR_END_OF_MEDIA = 1100,
ERROR_FILEMARK_DETECTED = 1101,
ERROR_BEGINNING_OF_MEDIA = 1102,
ERROR_SETMARK_DETECTED = 1103,
ERROR_NO_DATA_DETECTED = 1104,
ERROR_PARTITION_FAILURE = 1105,
ERROR_INVALID_BLOCK_LENGTH = 1106,
ERROR_DEVICE_NOT_PARTITIONED = 1107,
ERROR_UNABLE_TO_LOCK_MEDIA = 1108,
ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109,
ERROR_MEDIA_CHANGED = 1110,
ERROR_BUS_RESET = 1111,
ERROR_NO_MEDIA_IN_DRIVE = 1112,
ERROR_NO_UNICODE_TRANSLATION = 1113,
ERROR_DLL_INIT_FAILED = 1114,
ERROR_SHUTDOWN_IN_PROGRESS = 1115,
ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116,
ERROR_IO_DEVICE = 1117,
ERROR_SERIAL_NO_DEVICE = 1118,
ERROR_IRQ_BUSY = 1119,
ERROR_MORE_WRITES = 1120,
ERROR_COUNTER_TIMEOUT = 1121,
ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122,
ERROR_FLOPPY_WRONG_CYLINDER = 1123,
ERROR_FLOPPY_UNKNOWN_ERROR = 1124,
ERROR_FLOPPY_BAD_REGISTERS = 1125,
ERROR_DISK_RECALIBRATE_FAILED = 1126,
ERROR_DISK_OPERATION_FAILED = 1127,
ERROR_DISK_RESET_FAILED = 1128,
ERROR_EOM_OVERFLOW = 1129,
ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130,
ERROR_POSSIBLE_DEADLOCK = 1131,
ERROR_MAPPED_ALIGNMENT = 1132,
ERROR_SET_POWER_STATE_VETOED = 1140,
ERROR_SET_POWER_STATE_FAILED = 1141,
ERROR_OLD_WIN_VERSION = 1150,
ERROR_APP_WRONG_OS = 1151,
ERROR_SINGLE_INSTANCE_APP = 1152,
ERROR_RMODE_APP = 1153,
ERROR_INVALID_DLL = 1154,
ERROR_NO_ASSOCIATION = 1155,
ERROR_DDE_FAIL = 1156,
ERROR_DLL_NOT_FOUND = 1157,
ERROR_BAD_USERNAME = 2202,
ERROR_NOT_CONNECTED = 2250,
ERROR_OPEN_FILES = 2401,
ERROR_ACTIVE_CONNECTIONS = 2402,
ERROR_DEVICE_IN_USE = 2404,
ERROR_BAD_DEVICE = 1200,
ERROR_CONNECTION_UNAVAIL = 1201,
ERROR_DEVICE_ALREADY_REMEMBERED = 1202,
ERROR_NO_NET_OR_BAD_PATH = 1203,
ERROR_BAD_PROVIDER = 1204,
ERROR_CANNOT_OPEN_PROFILE = 1205,
ERROR_BAD_PROFILE = 1206,
ERROR_NOT_CONTAINER = 1207,
ERROR_EXTENDED_ERROR = 1208,
ERROR_INVALID_GROUPNAME = 1209,
ERROR_INVALID_COMPUTERNAME = 1210,
ERROR_INVALID_EVENTNAME = 1211,
ERROR_INVALID_DOMAINNAME = 1212,
ERROR_INVALID_SERVICENAME = 1213,
ERROR_INVALID_NETNAME = 1214,
ERROR_INVALID_SHARENAME = 1215,
ERROR_INVALID_PASSWORDNAME = 1216,
ERROR_INVALID_MESSAGENAME = 1217,
ERROR_INVALID_MESSAGEDEST = 1218,
ERROR_SESSION_CREDENTIAL_CONFLICT = 1219,
ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220,
ERROR_DUP_DOMAINNAME = 1221,
ERROR_NO_NETWORK = 1222,
ERROR_CANCELLED = 1223,
ERROR_USER_MAPPED_FILE = 1224,
ERROR_CONNECTION_REFUSED = 1225,
ERROR_GRACEFUL_DISCONNECT = 1226,
ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227,
ERROR_ADDRESS_NOT_ASSOCIATED = 1228,
ERROR_CONNECTION_INVALID = 1229,
ERROR_CONNECTION_ACTIVE = 1230,
ERROR_NETWORK_UNREACHABLE = 1231,
ERROR_HOST_UNREACHABLE = 1232,
ERROR_PROTOCOL_UNREACHABLE = 1233,
ERROR_PORT_UNREACHABLE = 1234,
ERROR_REQUEST_ABORTED = 1235,
ERROR_CONNECTION_ABORTED = 1236,
ERROR_RETRY = 1237,
ERROR_CONNECTION_COUNT_LIMIT = 1238,
ERROR_LOGIN_TIME_RESTRICTION = 1239,
ERROR_LOGIN_WKSTA_RESTRICTION = 1240,
ERROR_INCORRECT_ADDRESS = 1241,
ERROR_ALREADY_REGISTERED = 1242,
ERROR_SERVICE_NOT_FOUND = 1243,
ERROR_NOT_AUTHENTICATED = 1244,
ERROR_NOT_LOGGED_ON = 1245,
ERROR_CONTINUE = 1246,
ERROR_ALREADY_INITIALIZED = 1247,
ERROR_NO_MORE_DEVICES = 1248,
ERROR_NOT_ALL_ASSIGNED = 1300,
ERROR_SOME_NOT_MAPPED = 1301,
ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302,
ERROR_LOCAL_USER_SESSION_KEY = 1303,
ERROR_NULL_LM_PASSWORD = 1304,
ERROR_UNKNOWN_REVISION = 1305,
ERROR_REVISION_MISMATCH = 1306,
ERROR_INVALID_OWNER = 1307,
ERROR_INVALID_PRIMARY_GROUP = 1308,
ERROR_NO_IMPERSONATION_TOKEN = 1309,
ERROR_CANT_DISABLE_MANDATORY = 1310,
ERROR_NO_LOGON_SERVERS = 1311,
ERROR_NO_SUCH_LOGON_SESSION = 1312,
ERROR_NO_SUCH_PRIVILEGE = 1313,
ERROR_PRIVILEGE_NOT_HELD = 1314,
ERROR_INVALID_ACCOUNT_NAME = 1315,
ERROR_USER_EXISTS = 1316,
ERROR_NO_SUCH_USER = 1317,
ERROR_GROUP_EXISTS = 1318,
ERROR_NO_SUCH_GROUP = 1319,
ERROR_MEMBER_IN_GROUP = 1320,
ERROR_MEMBER_NOT_IN_GROUP = 1321,
ERROR_LAST_ADMIN = 1322,
ERROR_WRONG_PASSWORD = 1323,
ERROR_ILL_FORMED_PASSWORD = 1324,
ERROR_PASSWORD_RESTRICTION = 1325,
ERROR_LOGON_FAILURE = 1326,
ERROR_ACCOUNT_RESTRICTION = 1327,
ERROR_INVALID_LOGON_HOURS = 1328,
ERROR_INVALID_WORKSTATION = 1329,
ERROR_PASSWORD_EXPIRED = 1330,
ERROR_ACCOUNT_DISABLED = 1331,
ERROR_NONE_MAPPED = 1332,
ERROR_TOO_MANY_LUIDS_REQUESTED = 1333,
ERROR_LUIDS_EXHAUSTED = 1334,
ERROR_INVALID_SUB_AUTHORITY = 1335,
ERROR_INVALID_ACL = 1336,
ERROR_INVALID_SID = 1337,
ERROR_INVALID_SECURITY_DESCR = 1338,
ERROR_BAD_INHERITANCE_ACL = 1340,
ERROR_SERVER_DISABLED = 1341,
ERROR_SERVER_NOT_DISABLED = 1342,
ERROR_INVALID_ID_AUTHORITY = 1343,
ERROR_ALLOTTED_SPACE_EXCEEDED = 1344,
ERROR_INVALID_GROUP_ATTRIBUTES = 1345,
ERROR_BAD_IMPERSONATION_LEVEL = 1346,
ERROR_CANT_OPEN_ANONYMOUS = 1347,
ERROR_BAD_VALIDATION_CLASS = 1348,
ERROR_BAD_TOKEN_TYPE = 1349,
ERROR_NO_SECURITY_ON_OBJECT = 1350,
ERROR_CANT_ACCESS_DOMAIN_INFO = 1351,
ERROR_INVALID_SERVER_STATE = 1352,
ERROR_INVALID_DOMAIN_STATE = 1353,
ERROR_INVALID_DOMAIN_ROLE = 1354,
ERROR_NO_SUCH_DOMAIN = 1355,
ERROR_DOMAIN_EXISTS = 1356,
ERROR_DOMAIN_LIMIT_EXCEEDED = 1357,
ERROR_INTERNAL_DB_CORRUPTION = 1358,
ERROR_INTERNAL_ERROR = 1359,
ERROR_GENERIC_NOT_MAPPED = 1360,
ERROR_BAD_DESCRIPTOR_FORMAT = 1361,
ERROR_NOT_LOGON_PROCESS = 1362,
ERROR_LOGON_SESSION_EXISTS = 1363,
ERROR_NO_SUCH_PACKAGE = 1364,
ERROR_BAD_LOGON_SESSION_STATE = 1365,
ERROR_LOGON_SESSION_COLLISION = 1366,
ERROR_INVALID_LOGON_TYPE = 1367,
ERROR_CANNOT_IMPERSONATE = 1368,
ERROR_RXACT_INVALID_STATE = 1369,
ERROR_RXACT_COMMIT_FAILURE = 1370,
ERROR_SPECIAL_ACCOUNT = 1371,
ERROR_SPECIAL_GROUP = 1372,
ERROR_SPECIAL_USER = 1373,
ERROR_MEMBERS_PRIMARY_GROUP = 1374,
ERROR_TOKEN_ALREADY_IN_USE = 1375,
ERROR_NO_SUCH_ALIAS = 1376,
ERROR_MEMBER_NOT_IN_ALIAS = 1377,
ERROR_MEMBER_IN_ALIAS = 1378,
ERROR_ALIAS_EXISTS = 1379,
ERROR_LOGON_NOT_GRANTED = 1380,
ERROR_TOO_MANY_SECRETS = 1381,
ERROR_SECRET_TOO_LONG = 1382,
ERROR_INTERNAL_DB_ERROR = 1383,
ERROR_TOO_MANY_CONTEXT_IDS = 1384,
ERROR_LOGON_TYPE_NOT_GRANTED = 1385,
ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386,
ERROR_NO_SUCH_MEMBER = 1387,
ERROR_INVALID_MEMBER = 1388,
ERROR_TOO_MANY_SIDS = 1389,
ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390,
ERROR_NO_INHERITANCE = 1391,
ERROR_FILE_CORRUPT = 1392,
ERROR_DISK_CORRUPT = 1393,
ERROR_NO_USER_SESSION_KEY = 1394,
ERROR_LICENSE_QUOTA_EXCEEDED = 1395,
ERROR_INVALID_WINDOW_HANDLE = 1400,
ERROR_INVALID_MENU_HANDLE = 1401,
ERROR_INVALID_CURSOR_HANDLE = 1402,
ERROR_INVALID_ACCEL_HANDLE = 1403,
ERROR_INVALID_HOOK_HANDLE = 1404,
ERROR_INVALID_DWP_HANDLE = 1405,
ERROR_TLW_WITH_WSCHILD = 1406,
ERROR_CANNOT_FIND_WND_CLASS = 1407,
ERROR_WINDOW_OF_OTHER_THREAD = 1408,
ERROR_HOTKEY_ALREADY_REGISTERED = 1409,
ERROR_CLASS_ALREADY_EXISTS = 1410,
ERROR_CLASS_DOES_NOT_EXIST = 1411,
ERROR_CLASS_HAS_WINDOWS = 1412,
ERROR_INVALID_INDEX = 1413,
ERROR_INVALID_ICON_HANDLE = 1414,
ERROR_PRIVATE_DIALOG_INDEX = 1415,
ERROR_LISTBOX_ID_NOT_FOUND = 1416,
ERROR_NO_WILDCARD_CHARACTERS = 1417,
ERROR_CLIPBOARD_NOT_OPEN = 1418,
ERROR_HOTKEY_NOT_REGISTERED = 1419,
ERROR_WINDOW_NOT_DIALOG = 1420,
ERROR_CONTROL_ID_NOT_FOUND = 1421,
ERROR_INVALID_COMBOBOX_MESSAGE = 1422,
ERROR_WINDOW_NOT_COMBOBOX = 1423,
ERROR_INVALID_EDIT_HEIGHT = 1424,
ERROR_DC_NOT_FOUND = 1425,
ERROR_INVALID_HOOK_FILTER = 1426,
ERROR_INVALID_FILTER_PROC = 1427,
ERROR_HOOK_NEEDS_HMOD = 1428,
ERROR_GLOBAL_ONLY_HOOK = 1429,
ERROR_JOURNAL_HOOK_SET = 1430,
ERROR_HOOK_NOT_INSTALLED = 1431,
ERROR_INVALID_LB_MESSAGE = 1432,
ERROR_SETCOUNT_ON_BAD_LB = 1433,
ERROR_LB_WITHOUT_TABSTOPS = 1434,
ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435,
ERROR_CHILD_WINDOW_MENU = 1436,
ERROR_NO_SYSTEM_MENU = 1437,
ERROR_INVALID_MSGBOX_STYLE = 1438,
ERROR_INVALID_SPI_VALUE = 1439,
ERROR_SCREEN_ALREADY_LOCKED = 1440,
ERROR_HWNDS_HAVE_DIFF_PARENT = 1441,
ERROR_NOT_CHILD_WINDOW = 1442,
ERROR_INVALID_GW_COMMAND = 1443,
ERROR_INVALID_THREAD_ID = 1444,
ERROR_NON_MDICHILD_WINDOW = 1445,
ERROR_POPUP_ALREADY_ACTIVE = 1446,
ERROR_NO_SCROLLBARS = 1447,
ERROR_INVALID_SCROLLBAR_RANGE = 1448,
ERROR_INVALID_SHOWWIN_COMMAND = 1449,
ERROR_NO_SYSTEM_RESOURCES = 1450,
ERROR_NONPAGED_SYSTEM_RESOURCES = 1451,
ERROR_PAGED_SYSTEM_RESOURCES = 1452,
ERROR_WORKING_SET_QUOTA = 1453,
ERROR_PAGEFILE_QUOTA = 1454,
ERROR_COMMITMENT_LIMIT = 1455,
ERROR_MENU_ITEM_NOT_FOUND = 1456,
ERROR_EVENTLOG_FILE_CORRUPT = 1500,
ERROR_EVENTLOG_CANT_START = 1501,
ERROR_LOG_FILE_FULL = 1502,
ERROR_EVENTLOG_FILE_CHANGED = 1503,
RPC_S_INVALID_STRING_BINDING = 1700,
RPC_S_WRONG_KIND_OF_BINDING = 1701,
RPC_S_INVALID_BINDING = 1702,
RPC_S_PROTSEQ_NOT_SUPPORTED = 1703,
RPC_S_INVALID_RPC_PROTSEQ = 1704,
RPC_S_INVALID_STRING_UUID = 1705,
RPC_S_INVALID_ENDPOINT_FORMAT = 1706,
RPC_S_INVALID_NET_ADDR = 1707,
RPC_S_NO_ENDPOINT_FOUND = 1708,
RPC_S_INVALID_TIMEOUT = 1709,
RPC_S_OBJECT_NOT_FOUND = 1710,
RPC_S_ALREADY_REGISTERED = 1711,
RPC_S_TYPE_ALREADY_REGISTERED = 1712,
RPC_S_ALREADY_LISTENING = 1713,
RPC_S_NO_PROTSEQS_REGISTERED = 1714,
RPC_S_NOT_LISTENING = 1715,
RPC_S_UNKNOWN_MGR_TYPE = 1716,
RPC_S_UNKNOWN_IF = 1717,
RPC_S_NO_BINDINGS = 1718,
RPC_S_NO_PROTSEQS = 1719,
RPC_S_CANT_CREATE_ENDPOINT = 1720,
RPC_S_OUT_OF_RESOURCES = 1721,
RPC_S_SERVER_UNAVAILABLE = 1722,
RPC_S_SERVER_TOO_BUSY = 1723,
RPC_S_INVALID_NETWORK_OPTIONS = 1724,
RPC_S_NO_CALL_ACTIVE = 1725,
RPC_S_CALL_FAILED = 1726,
RPC_S_CALL_FAILED_DNE = 1727,
RPC_S_PROTOCOL_ERROR = 1728,
RPC_S_UNSUPPORTED_TRANS_SYN = 1730,
RPC_S_UNSUPPORTED_TYPE = 1732,
RPC_S_INVALID_TAG = 1733,
RPC_S_INVALID_BOUND = 1734,
RPC_S_NO_ENTRY_NAME = 1735,
RPC_S_INVALID_NAME_SYNTAX = 1736,
RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737,
RPC_S_UUID_NO_ADDRESS = 1739,
RPC_S_DUPLICATE_ENDPOINT = 1740,
RPC_S_UNKNOWN_AUTHN_TYPE = 1741,
RPC_S_MAX_CALLS_TOO_SMALL = 1742,
RPC_S_STRING_TOO_LONG = 1743,
RPC_S_PROTSEQ_NOT_FOUND = 1744,
RPC_S_PROCNUM_OUT_OF_RANGE = 1745,
RPC_S_BINDING_HAS_NO_AUTH = 1746,
RPC_S_UNKNOWN_AUTHN_SERVICE = 1747,
RPC_S_UNKNOWN_AUTHN_LEVEL = 1748,
RPC_S_INVALID_AUTH_IDENTITY = 1749,
RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750,
EPT_S_INVALID_ENTRY = 1751,
EPT_S_CANT_PERFORM_OP = 1752,
EPT_S_NOT_REGISTERED = 1753,
RPC_S_NOTHING_TO_EXPORT = 1754,
RPC_S_INCOMPLETE_NAME = 1755,
RPC_S_INVALID_VERS_OPTION = 1756,
RPC_S_NO_MORE_MEMBERS = 1757,
RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758,
RPC_S_INTERFACE_NOT_FOUND = 1759,
RPC_S_ENTRY_ALREADY_EXISTS = 1760,
RPC_S_ENTRY_NOT_FOUND = 1761,
RPC_S_NAME_SERVICE_UNAVAILABLE = 1762,
RPC_S_INVALID_NAF_ID = 1763,
RPC_S_CANNOT_SUPPORT = 1764,
RPC_S_NO_CONTEXT_AVAILABLE = 1765,
RPC_S_INTERNAL_ERROR = 1766,
RPC_S_ZERO_DIVIDE = 1767,
RPC_S_ADDRESS_ERROR = 1768,
RPC_S_FP_DIV_ZERO = 1769,
RPC_S_FP_UNDERFLOW = 1770,
RPC_S_FP_OVERFLOW = 1771,
RPC_X_NO_MORE_ENTRIES = 1772,
RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773,
RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774,
RPC_X_SS_IN_NULL_CONTEXT = 1775,
RPC_X_SS_CONTEXT_DAMAGED = 1777,
RPC_X_SS_HANDLES_MISMATCH = 1778,
RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779,
RPC_X_NULL_REF_POINTER = 1780,
RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781,
RPC_X_BYTE_COUNT_TOO_SMALL = 1782,
RPC_X_BAD_STUB_DATA = 1783,
ERROR_INVALID_USER_BUFFER = 1784,
ERROR_UNRECOGNIZED_MEDIA = 1785,
ERROR_NO_TRUST_LSA_SECRET = 1786,
ERROR_NO_TRUST_SAM_ACCOUNT = 1787,
ERROR_TRUSTED_DOMAIN_FAILURE = 1788,
ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789,
ERROR_TRUST_FAILURE = 1790,
RPC_S_CALL_IN_PROGRESS = 1791,
ERROR_NETLOGON_NOT_STARTED = 1792,
ERROR_ACCOUNT_EXPIRED = 1793,
ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794,
ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = 1795,
ERROR_UNKNOWN_PORT = 1796,
ERROR_UNKNOWN_PRINTER_DRIVER = 1797,
ERROR_UNKNOWN_PRINTPROCESSOR = 1798,
ERROR_INVALID_SEPARATOR_FILE = 1799,
ERROR_INVALID_PRIORITY = 1800,
ERROR_INVALID_PRINTER_NAME = 1801,
ERROR_PRINTER_ALREADY_EXISTS = 1802,
ERROR_INVALID_PRINTER_COMMAND = 1803,
ERROR_INVALID_DATATYPE = 1804,
ERROR_INVALID_ENVIRONMENT = 1805,
RPC_S_NO_MORE_BINDINGS = 1806,
ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807,
ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808,
ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809,
ERROR_DOMAIN_TRUST_INCONSISTENT = 1810,
ERROR_SERVER_HAS_OPEN_HANDLES = 1811,
ERROR_RESOURCE_DATA_NOT_FOUND = 1812,
ERROR_RESOURCE_TYPE_NOT_FOUND = 1813,
ERROR_RESOURCE_NAME_NOT_FOUND = 1814,
ERROR_RESOURCE_LANG_NOT_FOUND = 1815,
ERROR_NOT_ENOUGH_QUOTA = 1816,
RPC_S_NO_INTERFACES = 1817,
RPC_S_CALL_CANCELLED = 1818,
RPC_S_BINDING_INCOMPLETE = 1819,
RPC_S_COMM_FAILURE = 1820,
RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821,
RPC_S_NO_PRINC_NAME = 1822,
RPC_S_NOT_RPC_ERROR = 1823,
RPC_S_UUID_LOCAL_ONLY = 1824,
RPC_S_SEC_PKG_ERROR = 1825,
RPC_S_NOT_CANCELLED = 1826,
RPC_X_INVALID_ES_ACTION = 1827,
RPC_X_WRONG_ES_VERSION = 1828,
RPC_X_WRONG_STUB_VERSION = 1829,
RPC_S_GROUP_MEMBER_NOT_FOUND = 1898,
EPT_S_CANT_CREATE = 1899,
RPC_S_INVALID_OBJECT = 1900,
ERROR_INVALID_TIME = 1901,
ERROR_INVALID_FORM_NAME = 1902,
ERROR_INVALID_FORM_SIZE = 1903,
ERROR_ALREADY_WAITING = 1904,
ERROR_PRINTER_DELETED = 1905,
ERROR_INVALID_PRINTER_STATE = 1906,
ERROR_PASSWORD_MUST_CHANGE = 1907,
ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908,
ERROR_ACCOUNT_LOCKED_OUT = 1909,
ERROR_NO_BROWSER_SERVERS_FOUND = 6118,
ERROR_INVALID_PIXEL_FORMAT = 2000,
ERROR_BAD_DRIVER = 2001,
ERROR_INVALID_WINDOW_STYLE = 2002,
ERROR_METAFILE_NOT_SUPPORTED = 2003,
ERROR_TRANSFORM_NOT_SUPPORTED = 2004,
ERROR_CLIPPING_NOT_SUPPORTED = 2005,
ERROR_UNKNOWN_PRINT_MONITOR = 3000,
ERROR_PRINTER_DRIVER_IN_USE = 3001,
ERROR_SPOOL_FILE_NOT_FOUND = 3002,
ERROR_SPL_NO_STARTDOC = 3003,
ERROR_SPL_NO_ADDJOB = 3004,
ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = 3005,
ERROR_PRINT_MONITOR_ALREADY_INSTALLED = 3006,
ERROR_WINS_INTERNAL = 4000,
ERROR_CAN_NOT_DEL_LOCAL_WINS = 4001,
ERROR_STATIC_INIT = 4002,
ERROR_INC_BACKUP = 4003,
ERROR_FULL_BACKUP = 4004,
ERROR_REC_NON_EXISTENT = 4005,
ERROR_RPL_NOT_ALLOWED = 4006
--****
-- === play sound
-- mmsystem.h--WinMMDLL
public constant
SND_SYNC =0
,SND_ASYNC =1
,SND_NODEFAULT =2
,SND_MEMORY =4
,SND_LOOP =8
,SND_NOSTOP =16
,SND_NOWAIT =#2000
,SND_ALIAS =#10000
,SND_ALIAS_ID =#110000
,SND_FILENAME =#20000
,SND_RESOURCE =#40004
,SND_PURGE =#40
,SND_APPLICATION =#80
,SND_ALIAS_START =0
--~ #define sndAlias(c0,c1) (SND_ALIAS_START+(DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8))
--~ ,SND_ALIAS_SYSTEMASTERISK sndAlias('S','*')
--~ ,SND_ALIAS_SYSTEMQUESTION sndAlias('S','?')
--~ ,SND_ALIAS_SYSTEMHAND sndAlias('S','H')
--~ ,SND_ALIAS_SYSTEMEXIT sndAlias('S','E')
--~ ,SND_ALIAS_SYSTEMSTART sndAlias('S','S')
--~ ,SND_ALIAS_SYSTEMWELCOME sndAlias('S','W')
--~ ,SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S','!')
--~ ,SND_ALIAS_SYSTEMDEFAULT sndAlias('S','D')
-- default BEEP = #FFFFFFFF not sure where this from
-- from sounds.e
-- SND_DEFAULT = 0x00,
-- SND_STOP = 0x10,
-- SND_QUESTION = 0x20,
-- SND_EXCLAMATION = 0x30,
-- SND_ASTERISK = 0x40,
--
-- Note: this may flash the taskbar, which can be focus grabbing.
-- use any other way of producing sound instead, very annoying
-- may depend on which sound BEEP is and which OS and window manager
-- see std/win32/sounds.e haven't tried them all yet
--
public procedure MessageBeep(integer beep=BEEP)
ifdef WINDOWS then
c_proc(iMessageBeep,{beep})
elsedef
printf(2,"\\a%c",{7}) -- euphoria doesn't do \a yet
end ifdef
end procedure
-- BOOL PlaySound(
-- LPCSTR pszSound, A string that specifies the sound to play.
-- If thisparameter is NULL, any currently playing waveform sound is stopped.
--~ HMODULE hmod, must be NULL unless SND_RESOURCE is specified in fdwSound
--~ DWORD fdwSound
--~ );To stop a non-waveform sound, specify SND_PURGE in the fdwSound parameter.
-- Three flags in fdwSound (SND_ALIAS, SND_FILENAME, and SND_RESOURCE)
-- determine whether the name is interpreted as an alias for a system
-- event, a filename, or a resource identifier. If none of these flags are
-- specified, PlaySound searches the registry or the WIN.INI file for an
-- association with the specified sound name. If an association is found,
-- the sound event is played. If no association is found in the registry,
-- the name is interpreted as a filename.
--may have to fix if 2nd param not always NULL
public function PlaySound(object lpszSound, atom fdwSound)
integer dplaysound = define_c_func(Winmm,
"PlaySound" ,{C_POINTER, C_HANDLE, C_DWORD}, C_INT)
--C_LPSTR --return BOOL
atom tmp_sound, lval
if sequence(lpszSound) then
tmp_sound = allocate_string(lpszSound, 1)
else
tmp_sound = lpszSound
end if
lval = c_func(dplaysound,{ tmp_sound ,NULL, fdwSound})
return lval
end function
-- sends text to debug viewer. get from sysinternals,
-- there's one in RDS archive. is builtin to some msvs IDE
-- probably should ifdef calls so you don't forget to disable for production
-- when you build for distribution, -D DISTRO or something
-- advantage is a debugviewer vrs tail on a logfile or console output
-- you may have abllity to filter messages simplifying coding while debugging
-- you often have too much or too little output while debugging
-- this is just one more option for extra details, leaving logs and console free
--
procedure OutputDebugString(sequence text)
ifdef WINDOWS then
atom lptext = machine:allocate_string(text,1)
c_proc(xOutputDebugString,{lptext})
elsedef --
printf(2,"Db, %s ",{text})
end ifdef
end procedure
--**
-- call OutputDebugString and return the string
--useful where you also need a return value
--
public function OutputDebugStringf(sequence text)
OutputDebugString(text)
return sprintf("%s",{text})
end function
--**
--
public function GetLastError()
integer cGetLastError =
define_c_func(