Changeset 40
- Timestamp:
- Mar 30, 2018, 5:52:26 AM (7 years ago)
- Location:
- rxutilex/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
rxutilex/trunk/rxutilex.c
r39 r40 45 45 #define INCL_WINCLIPBOARD 46 46 #define INCL_WINERRORS 47 #define INCL_WINSYS 47 48 #define INCL_DOS 48 49 #define INCL_DOSDEVIOCTL … … 91 92 92 93 #define SZ_LIBRARY_NAME "RXUTILEX" // Name of this library 93 //#define SZ_ERROR_NAME "SYS2ERR" // REXX variable used to store error codes94 #define SZ_VERSION "0.1. 5" // Current version of this library94 //#define SZ_ERROR_NAME "SYS2ERR" // REXX variable used to store error codes - must be defined in Makefile 95 #define SZ_VERSION "0.1.6" // Current version of this library 95 96 96 97 // Maximum string lengths... … … 149 150 "Sys2SyncBuffer", 150 151 "Sys2Write", 152 "Sys2QuerySysValue", 151 153 "Sys2Version" 152 154 }; … … 174 176 175 177 RexxFunctionHandler Sys2QueryPhysicalMemory; 178 RexxFunctionHandler Sys2QuerySysValue; 176 179 177 180 RexxFunctionHandler Sys2LocateDLL; … … 2526 2529 2527 2530 2531 /* ------------------------------------------------------------------------- * 2532 * Sys2QuerySysValue * 2533 * * 2534 * Query the given system value. * 2535 * * 2536 * REXX ARGUMENTS: * 2537 * 1. The system value identifier (REQUIRED) * 2538 * * 2539 * REXX RETURN VALUE: The requested system value, or "" on error. * 2540 * ------------------------------------------------------------------------- */ 2541 ULONG APIENTRY Sys2QuerySysValue( PSZ pszName, ULONG argc, RXSTRING argv[], PSZ pszQueue, PRXSTRING prsResult ) 2542 { 2543 CHAR szResult[ US_INTEGER_MAXZ ]; 2544 LONG lID, 2545 lValue; 2546 2547 // Reset the error indicator 2548 WriteErrorCode( 0, NULL ); 2549 2550 // Make sure we have exactly one valid argument 2551 if ( argc != 1 || ( !RXVALIDSTRING(argv[0]) )) return ( 40 ); 2552 2553 // Parse the identifier 2554 lID = -1; 2555 strupr( argv[0].strptr ); 2556 if (( sscanf( argv[0].strptr, "%d", &lID )) != 1 ) { 2557 if ( ! stricmp( argv[0].strptr, "ALARM")) lID = SV_ALARM; 2558 else if ( ! stricmp( argv[0].strptr, "ALTMNEMONIC")) lID = SV_ALTMNEMONIC; 2559 else if ( ! stricmp( argv[0].strptr, "ANIMATIONSPEED")) lID = SV_ANIMATIONSPEED; 2560 else if ( ! stricmp( argv[0].strptr, "ANIMATION")) lID = SV_ANIMATION; 2561 else if ( ! stricmp( argv[0].strptr, "BEGINDRAG")) lID = SV_BEGINDRAG; 2562 else if ( ! stricmp( argv[0].strptr, "BEGINDRAGKB")) lID = SV_BEGINDRAGKB; 2563 else if ( ! stricmp( argv[0].strptr, "BEGINSELECT")) lID = SV_BEGINSELECT; 2564 else if ( ! stricmp( argv[0].strptr, "BEGINSELECTKB")) lID = SV_BEGINSELECTKB; 2565 else if ( ! stricmp( argv[0].strptr, "CHORDTIME")) lID = SV_CHORDTIME; 2566 else if ( ! stricmp( argv[0].strptr, "CICONTEXTLINES")) lID = SV_CICONTEXTLINES; 2567 else if ( ! stricmp( argv[0].strptr, "CMOUSEBUTTONS")) lID = SV_CMOUSEBUTTONS; 2568 else if ( ! stricmp( argv[0].strptr, "CONTEXTHELPKB")) lID = SV_CONTEXTHELPKB; 2569 else if ( ! stricmp( argv[0].strptr, "CONTEXTHELP")) lID = SV_CONTEXTHELP; 2570 else if ( ! stricmp( argv[0].strptr, "CONTEXTMENU")) lID = SV_CONTEXTMENU; 2571 else if ( ! stricmp( argv[0].strptr, "CONTEXTMENUKB")) lID = SV_CONTEXTMENUKB; 2572 else if ( ! stricmp( argv[0].strptr, "CPOINTERBUTTONS")) lID = SV_CPOINTERBUTTONS; 2573 else if ( ! stricmp( argv[0].strptr, "CTIMERS")) lID = SV_CTIMERS; 2574 else if ( ! stricmp( argv[0].strptr, "CURSORLEVEL")) lID = SV_CURSORLEVEL; 2575 else if ( ! stricmp( argv[0].strptr, "CURSORRATE")) lID = SV_CURSORRATE; 2576 else if ( ! stricmp( argv[0].strptr, "CXALIGN")) lID = SV_CXALIGN; 2577 else if ( ! stricmp( argv[0].strptr, "CXBORDER")) lID = SV_CXBORDER; 2578 else if ( ! stricmp( argv[0].strptr, "CXBYTEALIGN")) lID = SV_CXBYTEALIGN; 2579 else if ( ! stricmp( argv[0].strptr, "CXCHORD")) lID = SV_CXCHORD; 2580 else if ( ! stricmp( argv[0].strptr, "CXDBLCLK")) lID = SV_CXDBLCLK; 2581 else if ( ! stricmp( argv[0].strptr, "CXDLGFRAME")) lID = SV_CXDLGFRAME; 2582 else if ( ! stricmp( argv[0].strptr, "CXFULLSCREEN")) lID = SV_CXFULLSCREEN; 2583 else if ( ! stricmp( argv[0].strptr, "CXHSCROLLARROW")) lID = SV_CXHSCROLLARROW; 2584 else if ( ! stricmp( argv[0].strptr, "CXHSLIDER")) lID = SV_CXHSLIDER; 2585 else if ( ! stricmp( argv[0].strptr, "CXICONTEXTWIDTH")) lID = SV_CXICONTEXTWIDTH; 2586 else if ( ! stricmp( argv[0].strptr, "CXICON")) lID = SV_CXICON; 2587 else if ( ! stricmp( argv[0].strptr, "CXMINMAXBUTTON")) lID = SV_CXMINMAXBUTTON; 2588 else if ( ! stricmp( argv[0].strptr, "CXMOTIONSTART")) lID = SV_CXMOTIONSTART; 2589 else if ( ! stricmp( argv[0].strptr, "CXPOINTER")) lID = SV_CXPOINTER; 2590 else if ( ! stricmp( argv[0].strptr, "CXSCREEN")) lID = SV_CXSCREEN; 2591 else if ( ! stricmp( argv[0].strptr, "CXSIZEBORDER")) lID = SV_CXSIZEBORDER; 2592 else if ( ! stricmp( argv[0].strptr, "CXVSCROLL")) lID = SV_CXVSCROLL; 2593 else if ( ! stricmp( argv[0].strptr, "CYALIGN")) lID = SV_CYALIGN; 2594 else if ( ! stricmp( argv[0].strptr, "CYBORDER")) lID = SV_CYBORDER; 2595 else if ( ! stricmp( argv[0].strptr, "CYBYTEALIGN")) lID = SV_CYBYTEALIGN; 2596 else if ( ! stricmp( argv[0].strptr, "CYCHORD")) lID = SV_CYCHORD; 2597 else if ( ! stricmp( argv[0].strptr, "CYDBLCLK")) lID = SV_CYDBLCLK; 2598 else if ( ! stricmp( argv[0].strptr, "CYDLGFRAME")) lID = SV_CYDLGFRAME; 2599 else if ( ! stricmp( argv[0].strptr, "CYFULLSCREEN")) lID = SV_CYFULLSCREEN; 2600 else if ( ! stricmp( argv[0].strptr, "CYHSCROLL")) lID = SV_CYHSCROLL; 2601 else if ( ! stricmp( argv[0].strptr, "CYICON")) lID = SV_CYICON; 2602 else if ( ! stricmp( argv[0].strptr, "CYMENU")) lID = SV_CYMENU; 2603 else if ( ! stricmp( argv[0].strptr, "CYMINMAXBUTTON")) lID = SV_CYMINMAXBUTTON; 2604 else if ( ! stricmp( argv[0].strptr, "CYMOTIONSTART")) lID = SV_CYMOTIONSTART; 2605 else if ( ! stricmp( argv[0].strptr, "CYPOINTER")) lID = SV_CYPOINTER; 2606 else if ( ! stricmp( argv[0].strptr, "CYSCREEN")) lID = SV_CYSCREEN; 2607 else if ( ! stricmp( argv[0].strptr, "CYSIZEBORDER")) lID = SV_CYSIZEBORDER; 2608 else if ( ! stricmp( argv[0].strptr, "CYTITLEBAR")) lID = SV_CYTITLEBAR; 2609 else if ( ! stricmp( argv[0].strptr, "CYVSCROLLARROW")) lID = SV_CYVSCROLLARROW; 2610 else if ( ! stricmp( argv[0].strptr, "CYVSLIDER")) lID = SV_CYVSLIDER; 2611 else if ( ! stricmp( argv[0].strptr, "DBLCLKTIME")) lID = SV_DBLCLKTIME; 2612 else if ( ! stricmp( argv[0].strptr, "DEBUG")) lID = SV_DEBUG; 2613 else if ( ! stricmp( argv[0].strptr, "ENDDRAG")) lID = SV_ENDDRAG; 2614 else if ( ! stricmp( argv[0].strptr, "ENDDRAGKB")) lID = SV_ENDDRAGKB; 2615 else if ( ! stricmp( argv[0].strptr, "ENDSELECTKB")) lID = SV_ENDSELECTKB; 2616 else if ( ! stricmp( argv[0].strptr, "ENDSELECT")) lID = SV_ENDSELECT; 2617 else if ( ! stricmp( argv[0].strptr, "ERRORDURATION")) lID = SV_ERRORDURATION; 2618 else if ( ! stricmp( argv[0].strptr, "ERRORFREQ")) lID = SV_ERRORFREQ; 2619 else if ( ! stricmp( argv[0].strptr, "FIRSTSCROLLRATE")) lID = SV_FIRSTSCROLLRATE; 2620 else if ( ! stricmp( argv[0].strptr, "INSERTMODE")) lID = SV_INSERTMODE; 2621 else if ( ! stricmp( argv[0].strptr, "KBDALTERED")) lID = SV_KBDALTERED; 2622 else if ( ! stricmp( argv[0].strptr, "LOCKSTARTINPUT")) lID = SV_LOCKSTARTINPUT; 2623 else if ( ! stricmp( argv[0].strptr, "MENUROLLDOWNDELAY")) lID = SV_MENUROLLDOWNDELAY; 2624 else if ( ! stricmp( argv[0].strptr, "MENUROLLUPDELAY")) lID = SV_MENUROLLUPDELAY; 2625 else if ( ! stricmp( argv[0].strptr, "MONOICONS")) lID = SV_MONOICONS; 2626 else if ( ! stricmp( argv[0].strptr, "MOUSEPRESENT")) lID = SV_MOUSEPRESENT; 2627 else if ( ! stricmp( argv[0].strptr, "NOTEDURATION")) lID = SV_NOTEDURATION; 2628 else if ( ! stricmp( argv[0].strptr, "NOTEFREQ")) lID = SV_NOTEFREQ; 2629 else if ( ! stricmp( argv[0].strptr, "NUMBEREDLISTS")) lID = SV_NUMBEREDLISTS; 2630 else if ( ! stricmp( argv[0].strptr, "OPEN")) lID = SV_OPEN; 2631 else if ( ! stricmp( argv[0].strptr, "OPENKB")) lID = SV_OPENKB; 2632 else if ( ! stricmp( argv[0].strptr, "POINTERLEVEL")) lID = SV_POINTERLEVEL; 2633 else if ( ! stricmp( argv[0].strptr, "PRINTSCREEN")) lID = SV_PRINTSCREEN; 2634 else if ( ! stricmp( argv[0].strptr, "SCROLLRATE")) lID = SV_SCROLLRATE; 2635 else if ( ! stricmp( argv[0].strptr, "SELECTKB")) lID = SV_SELECTKB; 2636 else if ( ! stricmp( argv[0].strptr, "SETLIGHTS")) lID = SV_SETLIGHTS; 2637 else if ( ! stricmp( argv[0].strptr, "SINGLESELECT")) lID = SV_SINGLESELECT; 2638 else if ( ! stricmp( argv[0].strptr, "SWAPBUTTON")) lID = SV_SWAPBUTTON; 2639 else if ( ! stricmp( argv[0].strptr, "TASKLISTMOUSEACCESS")) lID = SV_TASKLISTMOUSEACCESS; 2640 else if ( ! stricmp( argv[0].strptr, "TEXTEDIT")) lID = SV_TEXTEDIT; 2641 else if ( ! stricmp( argv[0].strptr, "TEXTEDITKB")) lID = SV_TEXTEDITKB; 2642 else if ( ! stricmp( argv[0].strptr, "TRACKRECTLEVEL")) lID = SV_TRACKRECTLEVEL; 2643 else if ( ! stricmp( argv[0].strptr, "WARNINGDURATION")) lID = SV_WARNINGDURATION; 2644 else if ( ! stricmp( argv[0].strptr, "WARNINGFREQ")) lID = SV_WARNINGFREQ; 2645 } 2646 if ( lID < 0 ) return ( 40 ); 2647 2648 lValue = WinQuerySysValue( HWND_DESKTOP, lID ); 2649 if ( lValue == 0 ) { 2650 /* Not elegant but probably true if the function failed. Anyway, 2651 * we don't have a HAB so we can't really use WinGetLastError()... 2652 */ 2653 WriteErrorCode( PMERR_PARAMETER_OUT_OF_RANGE, "WinQuerySysValue"); 2654 SaveResultString( prsResult, PSZ_ZERO, 1 ); 2655 return ( 0 ); 2656 } 2657 2658 // Return the value as the REXX return string 2659 sprintf( szResult, "%d", lValue ); 2660 SaveResultString( prsResult, szResult, strlen(szResult) ); 2661 2662 return ( 0 ); 2663 } 2664 2665 2666 2528 2667 // ------------------------------------------------------------------------- 2529 2668 // INTERNAL FUNCTIONS -
rxutilex/trunk/rxutilex.def
r39 r40 1 1 LIBRARY RXUTILEX INITINSTANCE TERMINSTANCE 2 2 DATA MULTIPLE NONSHARED 3 DESCRIPTION '@#Alex Taylor:0.1. 5#@##1## 9 Mar 2017 13:10:35REINFORCE::::::@@Extended REXX Utility Functions'3 DESCRIPTION '@#Alex Taylor:0.1.6#@##1## 29 Mar 2018 23:50:30 REINFORCE::::::@@Extended REXX Utility Functions' 4 4 5 5 EXPORTS Sys2LoadFuncs … … 31 31 Sys2ReadLine 32 32 Sys2BytesRemaining 33 Sys2QuerySysValue 34 -
rxutilex/trunk/testlib.cmd
r36 r40 47 47 say info 48 48 end 49 say 50 51 say 'Current screen resolution:' Sys2QuerySysValue('CXSCREEN') Sys2QuerySysValue('CYSCREEN') 49 52 50 53 call Sys2DropFuncs
Note:
See TracChangeset
for help on using the changeset viewer.