MIB Bits/MoreProcesses.h

/*
    File:       MoreProcesses.h
 
    Contains:   
 
    Written by: Pete Gontier
 
    Copyright:  Copyright (c) 1998 Apple Computer, Inc., All Rights Reserved.
 
                You may incorporate this Apple sample source code into your program(s) without
                restriction. This Apple sample source code has been provided "AS IS" and the
                responsibility for its operation is yours. You are not permitted to redistribute
                this Apple sample source code as "Apple sample source code" after having made
                changes. If you're going to re-distribute the source, we require that you make
                it clear in the source that the code was descended from Apple sample source
                code, but that you've made changes.
 
    Change History (most recent first):
 
         <6>     20/3/00    Quinn   Added MoreProcIsProcessAtFront.  Tidied up some copy and paste
                                    errors in the comments.
         <5>      3/9/00    gaw     API changes for MoreAppleEvents
         <4>      6/3/00    Quinn   Added MoreGetProcessAppFile.
         <3>     1/22/99    PCG     TARGET_CARBON
         <2>    11/11/98    PCG     fix headers
         <1>    11/10/98    PCG     first big re-org at behest of Quinn
 
    Old Change History (most recent first):
 
         <6>    10/11/98    Quinn   Convert "MorePrefix.h" to "MoreSetup.h".
         <5>     11/9/98    PCG     fix comment 4
         <4>     11/9/98    PCG     add copyright blurb
         <3>      9/9/98    PCG     re-work import and export pragmas
         <2>     7/24/98    PCG     coddle linker (C++, CFM-68K)
         <1>     6/16/98    PCG     initial checkin
*/
 
#pragma once
 
#include "MoreSetup.h"
 
#include <Processes.h>
 
enum { kSignatureFinder = 'MACS' };
 
#ifdef __cplusplus
    extern "C" {
#endif
 
#pragma import on // for clients
#pragma export on // for building a library
/******************************************************************************
    Return a ProcessSerialNumber for a process whose signature (creator)
    matches the input values.  This routine will find the first process that
    matches the creator.
    
    The ProcessSerialNumber will be kNoProcess is the requested process cannot
    be found. 
 
    pCreator            input:  The creator of the process to be found.
    pPSN                input:  Pointer to a ProcessSerialNumber.
                        output: A valid PSN or kNoProcess in no match is found.
 
    RESULT CODES
    ____________
    noErr              0    No error
    procNotFound    Ð600    No process matched specified creator
    ____________
*/
 
extern pascal OSStatus MoreProcFindProcessByCreator(const OSType pCreator,ProcessSerialNumber *pPSN);
/******************************************************************************
    Return a ProcessSerialNumber for a process whose signature (type and creator)
    matches the input values.  This routine will find the first process that
    matches the type and creator.
    
    The ProcessSerialNumber will be kNoProcess is the requested process cannot
    be found. 
 
    pCreator            input:  The creator type of the process to be found.
    pType               input:  The file type of the process to be found.
    pPSN                input:  Pointer to a ProcessSerialNumber.
                        output: A valid PSN or kNoProcess in no match is found.
 
    RESULT CODES
    ____________
    noErr              0    No error
    procNotFound    Ð600    No process matched specified type and creator
    ____________
*/
 
extern pascal OSStatus MoreProcFindProcessBySignature(const OSType pCreator,const OSType pType,ProcessSerialNumber *pPSN);
/******************************************************************************
    Returns the name of the process specified by ProcessSerialNumberPtr.
    
    The string pointed to by pProcessName will be untouched if the process
    can't be found. 
 
    pPSN            input:  The process whose name you want (nil for current)
    pProcessName    input:  Pointer to a Str31 for the process name.
                    output: The process name.
    
    RESULT CODES
    ____________
    noErr              0    No error
    paramErr         Ð50    Process serial number is invalid
    ____________
*/
extern pascal   OSStatus MoreProcGetProcessName(
                                const ProcessSerialNumberPtr pPSN,
                                StringPtr pProcessName);
/******************************************************************************
    Returns information about the process specified by ProcessSerialNumberPtr.
    
    pProcessType and pCreator will be untouched if the process
    can't be found. 
 
    pPSN                input:  The process whose info you want (nil for current).
    pProcessType        output: The process's type.
    pCreator            output: The process's signature.
    
    RESULT CODES
    ____________
    noErr              0    No error
    paramErr         Ð50    Process serial number is invalid
    ____________
*/
extern pascal   OSStatus    MoreProcGetProcessTypeSignature(
                        const ProcessSerialNumberPtr pPSN,
                        OSType *pProcessType,
                        OSType *pCreator);
/******************************************************************************
    Returns the FSSpec for the current process
    
    pFSSpec             output: The process's FSSpec.
    
    RESULT CODES
    ____________
    noErr              0    No error
    paramErr         Ð50    pFSSpec is nil
    ____________
*/
extern pascal OSStatus MoreProcGetCurrentProcessFSSpec(FSSpec *pFSSpec);
/******************************************************************************
    Returns the FSSpec for the process specified by ProcessSerialNumberPtr.
    
    pPSN                input:  The process's whose file you want (nil for current).
    pAppFile            output: The process's appFile.
    
    RESULT CODES
    ____________
    noErr              0    No error
    paramErr         Ð50    Process serial number is invalid (or pPSN or pAppFile is nil)
    ____________
*/
extern pascal OSStatus MoreProcGetProcessAppFile(const ProcessSerialNumber *pPSN,FSSpec *pAppFile);
/******************************************************************************
    Returns the Process Information for the process specified by pPSN.
    
    pPSN                input:  The process's Serial Number
    pPIR                output: The process's Information.
    
    RESULT CODES
    ____________
    noErr              0    No error
    paramErr         Ð50    Process serial number is invalid (or pPSN or pPIR is nil)
    ____________
*/
extern pascal OSStatus MoreProcGetProcessInformation(const ProcessSerialNumber *pPSN,ProcessInfoRec *pPIR);
/******************************************************************************
    Returns true if the process specified by pPSN is a background only application.
    
    pPSN                input:  The process's Serial Number
    pIsBOA              output: The process's Information.
    
    RESULT CODES
    ____________
    noErr              0    No error
    paramErr         Ð50    Process serial number is invalid (or pPSN or pIsBOA is nil)
    ____________
*/
extern pascal OSStatus MoreProcIsProcessBackgroundOnly(const ProcessSerialNumber *pPSN,Boolean *pIsBOA);
 
//*****************************************************************************
// Returns true if the process specified by pPSN is the front process.
// Pass nil to pPSN to test the current process.
 
extern pascal Boolean MoreProcIsProcessAtFront(const ProcessSerialNumber *pPSN);
 
#pragma import reset // for clients
#pragma export reset // for building a library
 
#ifdef __cplusplus
    }
#endif