Форум » [x]Harbour » Как запуcкать приложения без использования __Run » Ответить

Как запуcкать приложения без использования __Run

SkyNET: Здравствуйте ! Подскажите пожалуйста, как можно запустить приложение не используя командную строку ?

Ответов - 72, стр: 1 2 3 4 All

Dima: PSP пишет: Может вместо CREATE_NEW_CONSOLE использовать CREATE_NO_WINDOW? Счас попробуем.... Да и так работает правда я ставил SW_HIDE

Pasha: nick_mi пишет: Терминал GTWVT Можно в этой функции добавить 3-й логический параметр: создавать новое окно или нет. Примерно так: if( CreateProcess( NULL, HB_STRUNSHARE( &hProg, lpProg, nLen ), /* Command line (Unicode version needs an non-const buffer) */ NULL, NULL, FALSE, ( HB_ISLOG( 3 ) ? CREATE_NEW_CONSOLE : 0 ) | NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &proc ) )

AlexMyr: Может зря раздел С/С++ удалили?


santy: В принципе С/С++ раздел нужен, но только применительно к (x)Harbour.

Dima: santy пишет: В принципе С/С++ раздел нужен, но только применительно к (x)Harbour. Ни кто и не против

Петр: Pasha пишет: Можно в этой функции добавить 3-й логический параметр: Это ведь не универсальная функция-обертка WinAPI, а отдельно взятый частный случай. Конечно можно добавить третий параметр, так, как вы написали, или чуть по другому, но завтра кому-то понадобится более гибкое управление процессом, добавится четвертый параметр и т.д. Лучше напильник в руки и подгонять под себя, вернее под свои нужды. А, возможно, кого-то и устроят стандартные Harbour функции hb_processOpen, hb_processClose, hb_processRun, hb_processValue Не вседа нужно изобретать велосипед.

Петр: AlexMyr пишет: Может зря раздел С/С++ удалили? ИМХО, это обсуждение не имеет никакого отношения к С/С++, К WinApi - да.

Dima: Петр пишет: hb_processRun Таки да решает задачу EXECANDWAIT

AM: Тут выше упоминалась функция ShellExecute() - как я понял, если передавать ей родительский hWnd, то вызываемое приложение должно само закрываться при закрытии родительского окна, для этого ведь передаётся? А у меня не закрывается, даже при закрытии всей программы, что надо делать? Просто открывается папка для просмотра, и она остаётся висеть, надо закрывать вручную, как быть?

Andrey: Вопрос возник по ShellExecute() Есть такой код (сам исходник в ANSI кодировке): [pre2] hb_memowrit('_run_.cmd', '@Start Excel "' + cFile + '"' + CRLF) ShellExecute( 0, "Open", '_run_.cmd',,, SW_HIDE ) InkeyGui(1000) fErase('_run_.cmd')[/pre2] Если нет русских букв, то всё нормально. Если есть, то файл не находиться, вместо русских букв (после запуска Экселя) в пути кракозябы. Почему так ?

alkresin: Проверьте, в какой кодировке записан _run_.cmd, и в какой должен быть.

Andrey: alkresin пишет: Проверьте, в какой кодировке записан _run_.cmd, и в какой должен быть. В Фаре при просмотре стоит кодировка 1251. И при запуске из под Фара Эксель ругаеться, что нет такого файла, в пути вместо русских букв кракозябы. Программа на МиниГуи, перевод на русский язык есть: [pre2] SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN[/pre2] Т.е. кодировка 1251 Если делаю cFile := HB_ANSItoOEM(cFile) То тогда нормально Эксель стартует, с файлом. Может надо в _run_.cmd указать явно кодовую страницу ? А как это сделать ? Нашел как делать, вот так: [pre2]hb_memowrit('_run_.cmd', 'chcp 1251' + CRLF + '@Start Excel "' + cFile + '"' + CRLF)[/pre2] Правильно поставленный вопрос почти всегда приводит к ответу ! Спасибо за подсказку !



полная версия страницы