Changeset 123 for trunk/src/helpers/apps.c
- Timestamp:
- Dec 14, 2001, 11:41:33 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/helpers/apps.c
r122 r123 513 513 * -- PROG_WINDOWABLEVIO 514 514 * 515 * -- PROG_DEFAULT 516 * 515 517 *@@added V0.9.9 (2001-03-07) [umoeller] 516 518 *@@changed V0.9.12 (2001-05-27) [umoeller]: moved from winh.c to apps.c 517 519 *@@changed V0.9.14 (2001-08-07) [pr]: use FAPPTYP_* constants 520 *@@changed V0.9.16 (2001-12-08) [umoeller]: added checks for batch files, other optimizations 518 521 */ 519 522 520 523 APIRET appQueryAppType(const char *pcszExecutable, 521 522 524 PULONG pulDosAppType, 525 PULONG pulWinAppType) 523 526 { 524 APIRET arc = DosQueryAppType((PSZ)pcszExecutable, pulDosAppType); 525 if (arc == NO_ERROR) 526 { 527 ULONG _ulDosAppType = *pulDosAppType; 528 529 if (_ulDosAppType == 0) 530 *pulWinAppType = PROG_FULLSCREEN; 531 else if (_ulDosAppType & FAPPTYP_PHYSDRV) // 0x40 532 *pulWinAppType = PROG_PDD; 533 else if (_ulDosAppType & FAPPTYP_VIRTDRV) // 0x80) 534 *pulWinAppType = PROG_VDD; 535 else if ((_ulDosAppType & 0xF0) == FAPPTYP_DLL) // 0x10) 527 APIRET arc; 528 529 /* 530 #define FAPPTYP_NOTSPEC 0x0000 531 #define FAPPTYP_NOTWINDOWCOMPAT 0x0001 532 #define FAPPTYP_WINDOWCOMPAT 0x0002 533 #define FAPPTYP_WINDOWAPI 0x0003 534 #define FAPPTYP_BOUND 0x0008 535 #define FAPPTYP_DLL 0x0010 536 #define FAPPTYP_DOS 0x0020 537 #define FAPPTYP_PHYSDRV 0x0040 // physical device driver 538 #define FAPPTYP_VIRTDRV 0x0080 // virtual device driver 539 #define FAPPTYP_PROTDLL 0x0100 // 'protected memory' dll 540 #define FAPPTYP_WINDOWSREAL 0x0200 // Windows real mode app 541 #define FAPPTYP_WINDOWSPROT 0x0400 // Windows protect mode app 542 #define FAPPTYP_WINDOWSPROT31 0x1000 // Windows 3.1 protect mode app 543 #define FAPPTYP_32BIT 0x4000 544 */ 545 546 ULONG ulWinAppType = PROG_DEFAULT; 547 548 if (!(arc = DosQueryAppType((PSZ)pcszExecutable, pulDosAppType))) 549 { 550 // clear the 32-bit flag 551 // V0.9.16 (2001-12-08) [umoeller] 552 ULONG ulDosAppType = (*pulDosAppType) & ~FAPPTYP_32BIT, 553 ulLoAppType = ulDosAppType & 0xFFFF; 554 555 if (ulDosAppType & FAPPTYP_PHYSDRV) // 0x40 556 ulWinAppType = PROG_PDD; 557 else if (ulDosAppType & FAPPTYP_VIRTDRV) // 0x80 558 ulWinAppType = PROG_VDD; 559 else if ((ulDosAppType & 0xF0) == FAPPTYP_DLL) // 0x10 536 560 // DLL bit set 537 *pulWinAppType = PROG_DLL;538 else if ( _ulDosAppType & FAPPTYP_DOS) // 0x20)561 ulWinAppType = PROG_DLL; 562 else if (ulDosAppType & FAPPTYP_DOS) // 0x20 539 563 // DOS bit set? 540 *pulWinAppType = PROG_WINDOWEDVDM; 541 else if ((_ulDosAppType & FAPPTYP_WINDOWAPI) == FAPPTYP_WINDOWAPI) // 0x0003) // "Window-API" == PM 542 *pulWinAppType = PROG_PM; 543 else if ( ((_ulDosAppType & 0xFFFF) == FAPPTYP_WINDOWSPROT31) // 0x1000) // windows program (?!?) 544 || ((_ulDosAppType & 0xFFFF) == FAPPTYP_WINDOWSPROT) // ) // windows program (?!?) 564 ulWinAppType = PROG_WINDOWEDVDM; 565 else if ((ulDosAppType & FAPPTYP_WINDOWAPI) == FAPPTYP_WINDOWAPI) // 0x0003) 566 // "Window-API" == PM 567 ulWinAppType = PROG_PM; 568 else if (ulLoAppType == FAPPTYP_WINDOWSREAL) 569 ulWinAppType = PROG_31_ENHSEAMLESSCOMMON; // @@todo really? 570 else if ( (ulLoAppType == FAPPTYP_WINDOWSPROT31) // 0x1000) // windows program (?!?) 571 || (ulLoAppType == FAPPTYP_WINDOWSPROT) // ) // windows program (?!?) 545 572 ) 546 *pulWinAppType = PROG_31_ENHSEAMLESSCOMMON; // PROG_31_ENH; 547 // *pulWinAppType = PROG_31_ENHSEAMLESSVDM; 548 else if ((_ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_WINDOWCOMPAT) // 0x02) 549 *pulWinAppType = PROG_WINDOWABLEVIO; 550 else if ((_ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_NOTWINDOWCOMPAT) // 0x01) 551 *pulWinAppType = PROG_FULLSCREEN; 552 } 573 ulWinAppType = PROG_31_ENHSEAMLESSCOMMON; // PROG_31_ENH; 574 else if ((ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_WINDOWCOMPAT) // 0x02) 575 ulWinAppType = PROG_WINDOWABLEVIO; 576 else if ((ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_NOTWINDOWCOMPAT) // 0x01) 577 ulWinAppType = PROG_FULLSCREEN; 578 } 579 580 if (ulWinAppType == PROG_DEFAULT) 581 { 582 // added checks for batch files V0.9.16 (2001-12-08) [umoeller] 583 PCSZ pcszExt; 584 if (pcszExt = doshGetExtension(pcszExecutable)) 585 { 586 if (!stricmp(pcszExt, "BAT")) 587 { 588 ulWinAppType = PROG_WINDOWEDVDM; 589 arc = NO_ERROR; 590 } 591 else if (!stricmp(pcszExt, "CMD")) 592 { 593 ulWinAppType = PROG_WINDOWABLEVIO; 594 arc = NO_ERROR; 595 } 596 } 597 } 598 599 *pulWinAppType = ulWinAppType; 553 600 554 601 return (arc); … … 608 655 case PROG_WIN_GAME: return "PROG_WIN_GAME"; 609 656 case PROG_DOS_MODE: return "PROG_DOS_MODE"; 657 658 // added this V0.9.16 (2001-12-08) [umoeller] 659 case PROG_WIN32: return "PROG_WIN32"; 610 660 } 611 661
Note:
See TracChangeset
for help on using the changeset viewer.