Функция GetExePath   

Функция GetExePath  возвращает путь, откуда был запущен exe-файл программы. Она бывает полезна если нужно найти файлы программы, которые находятся в основном каталоге программы или в ее подкаталогах (например файлы базы данных).
Использует функцию Windows API32 GetModuleFileName, прототип которой:

GetModuleFileName(HINSTANCE,*LPSTR,DWORD),DWORD,PASCAL,RAW,NAME('GetModuleFileNameA')

Прототип функции: GetExePath Function(),String
GetExePath FUNCTION 
!===========================================
loc:Instance    ULONG
loc:FNSize      ULONG
loc:AppFileName CSTRING(255)
loc:ExeFile     STRING(120)
loc:ProgPath    STRING(120)

CODE 
  loc:Instance = System{PROP:AppInstance}
  loc:AppFileName = ''
  loc:FNSize = Size(loc:AppFileName)
  r# = GetModuleFileName( loc:Instance, loc:AppFileName, loc:FNSize )
  if r# <> 0
    p# = RCharPos( '\', loc:AppFileName )
    if p#=0
      p# = RCharPos( ':', loc:AppFileName )
    .
    loc:ExeFile = sub( loc:AppFileName, p#+1, len(clip(loc:AppFileName)) )
    ! Вычесть длину строки loc:ExeFile
    loc:ProgPath = sub( loc:AppFileName, 1, len(clip(loc:AppFileName))-len(clip(loc:ExeFile)) ) 
  else
    loc:ProgPath = Path()
    if sub( loc:ProgPath,1,len(clip(loc:ProgPath)) ) <> '\'
      loc:ProgPath = clip(loc:ProgPath) & '\'
    .
  .
  return( loc:ProgPath )

Функция GetExeName

Функция GetExeName  возвращает имя запущенного exe-файла программы. Она бывает полезна, например, для фрмирования имени ini-файла программы

Использует функцию Windows API32 GetModuleFileName, прототип которой:

GetModuleFileName(HINSTANCE,*LPSTR,DWORD),DWORD,PASCAL,RAW,NAME('GetModuleFileNameA')

Прототип функции: GetExeNamr Function(),String
GetExeName FUNCTION 
!===========================================
loc:Instance    ULONG
loc:FNSize      ULONG
loc:AppFileName CSTRING(255)
loc:ExeFile     STRING(120)
loc:ProgPath    STRING(120)

CODE 
  loc:Instance = System{PROP:AppInstance}
  loc:AppFileName = ''
  loc:FNSize   = Size(loc:AppFileName)
  r# = GetModuleFileName( loc:Instance, loc:AppFileName, loc:FNSize )
  if r# <> 0
    p# = RCharPos( '\', loc:AppFileName )
    if p#=0
      p# = RCharPos( ':', loc:AppFileName )
    .
    loc:ExeFile  = sub( loc:AppFileName, p#+1, len(clip(loc:AppFileName)) )
  .
  return( loc:ExeFile )
Hosted by uCoz