Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Путь к исполняемому файлу


Страницы:   1 2

lookin ©   (2007-01-03 22:07:00) 

Какие существуют WinAPI-способы получить путь к исполняемому файлу (exe или dll) в пределах той части кода, которая соответствует инициализации приложения, кроме GetModuleFileName? Спасибо.


tesseract   (2007-01-03 22:56:00) [21]

А память под переменные выделить?


lookin   (2007-01-03 22:49:00) [22]

>>tesseract

Опишу точнее проблему. Есть некая программа, которая, используя некое системное ядро, запускает приложение (сишное). Вот функция этого ядра:

function hkStartApplication(HyperKernelExe: PChar; DbgHWnd: HWND): LongInt; stdcall;
HyperKernelExe - командная строка для запуска приложения
DbgHWnd - контрол для получения сообщений, выдаваемых ядром

А вот main сишной программы:

int main(int argc, char* argv[])
{
}

Если записать

s:=ExecutableFile;
if hkStartApplication(PChar(s),lst.handle) then ...

то запуск успешно выполняется. Но если записать что-то в духе

s:=ExecutableFile+' '+SomeParameter;
if hkStartApplication(PChar(s),lst.handle) then ...

то запуск виснет.

Но это, впрочем, не так важно. Важно то, что если в теле main сишной программы я пишу следующее:

HINSTANCE h;
char exefilename[MAX_PATH];
char inifilename[MAX_PATH];
int n,fileid;
char *inifilestring=" ";

h = GetModuleHandle(NULL);
GetModuleFileName(h,exefilename,MAX_PATH);
n = strlen(exefilename);
strncpy(inifilename,exefilename,n-3);
inifilename[n-3] = '\0';
strcat(inifilename,"ini");
n = strlen(inifilename);
inifilename[n] = '\0';

fileid=hkOpen(inifilename,READWRITE_FILE);
if(fileid==0)
 hkDebug("Can't open INI-file");
else
{
 hkDebug("INI-file has been successfully opened");
 hkReadString(inifilestring,8,fileid);
 hkReadString(inifilestring,8,fileid);
 PORT = atoi(inifilestring);
 hkClose(fileid);
}

то запуск тем более виснет. Вот поэтому ищу другие способы получения пути исполняемого файла...

PS Полагаю, из кода ясно, что хочется в сишную программу из запускающей программы передать некий параметр.


tesseract   (2007-01-03 22:19:00) [23]

WinApi смотри argv[0].


tesseract   (2007-01-03 22:15:00) [24]

к exe можно, например ExePath:=Application.exename


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо