Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2017, 16:22   #1
alex0097
Форумчанин
 
Аватар для alex0097
 
Регистрация: 06.07.2010
Сообщений: 123
По умолчанию перезапуск процесса при его закрытии

Господа программисты, нужен ваш совет. Не работает с компонентом KOL. Ни чего не происходит. Без него работает как и должен, а с ним даже не реагирует. Может кто сталкивался?

Код:
{ KOL MCK } // Do not remove this line!
program 1C;

uses
KOL,
  Windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

//{$R *.res}


procedure RunNew();
var
  StartInfo    : TStartupInfo;
  ProcInfo     : TProcessInformation;
begin
  ZeroMemory(@StartInfo,SizeOf(StartInfo));
  StartInfo.cb := SizeOf(StartInfo);

  if Createprocess( nil, PChar(Application.ExeName), nil, nil, False,
                     CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS,
                     nil, nil, StartInfo, ProcInfo)
  then
  begin
    CloseHandle(ProcInfo.hThread);
    CloseHandle(ProcInfo.hProcess);
  end

  else
    // процесс не запустился

end;

begin // PROGRAM START HERE -- Please do not remove this comment


{$IF Defined(KOL_MCK)} {$I 1c_0.inc} {$ELSE}

  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

  RunNew();

{$IFEND}


end.
Подозреваю что ошибка в этой строчке

if Createprocess( nil, PChar(Application.ExeName), nil, nil, False,
alex0097 вне форума Ответить с цитированием
Старый 10.07.2017, 16:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от alex0097 Посмотреть сообщение
Подозреваю что ошибка в этой строчке

if Createprocess( nil, PChar(Application.ExeName), nil, nil, False,
ну, так заменить Application.ExeName проще простого.
на самом деле это ParamStr(0)

попробуйте:
Код:
if Createprocess( nil, PChar(ParamStr(0)), nil, nil, False,
...
p.s. а что, KOL реально так необходим? Размер приложения крайне критичен?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2017, 16:43   #3
alex0097
Форумчанин
 
Аватар для alex0097
 
Регистрация: 06.07.2010
Сообщений: 123
По умолчанию

Serge_Bliznykov Да желательно меньший вес. И так Студия пакует его килограммом ненужного шлака.

Нет не помогло. к сожалению. Код компилируется хорошо. но не работает с KOL компонентом. Искал решения в гугле. не Помогло. Может кто сталкивался

Последний раз редактировалось alex0097; 10.07.2017 в 16:48.
alex0097 вне форума Ответить с цитированием
Старый 10.07.2017, 17:06   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от alex0097 Посмотреть сообщение
но не работает с KOL компонентом. Искал решения в гугле. не Помогло. Может кто сталкивался
Насколько я понимаю и судя по оф.сайту проект больше не поддерживается?

Вы, надеюсь, используете версию Delphi не старше 2012 года?
Цитата:
Поддерживаются Delphi2, Delph3, Delphi4, Delphi5, Delphi6, Delphi7, BDS 2005-2012, Kylix а так же Free Pascal Compiler 1.0.5 и выше.
Ещё на официальный форум сходите, там больше вероятности получить квалифицированный ответ.


Цитата:
Сообщение от alex0097 Посмотреть сообщение
Да желательно меньший вес. И так Студия пакует его килограммом ненужного шлака.
"Желательно" - это не синоним "крайне необходимо".
Если выбирать из двух - маленького EXEшника, который не работает, и
ОГРОМНОГО (на много мегабайт) EXEшника, который корректно работает, я, пожалуй, выберу большой, но работающий.

Хотя тоже не люблю тонны лишнего шлака, который попадает в исполняемый код после компиляции. Но что же делать - гигабайты сейчас дешёвые, а ручной квалифицированный труд - нет.

а по сути проблемы.
А в чём заключается -
Цитата:
Сообщение от alex0097 Посмотреть сообщение
Код компилируется хорошо. но не работает с KOL компонентом.
программа не запускается? Выдаёт при запуске ошибки? Или в чём проблема?


Цитата:
Сообщение от alex0097 Посмотреть сообщение
Код:
{$IF Defined(KOL_MCK)} {$I 1c_0.inc} {$ELSE}

  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

  RunNew();

{$IFEND}
у вас задана условная компиляция.
переменная KOL_MCK определена?
1С_0.inc что содержит?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2017, 17:12   #5
alex0097
Форумчанин
 
Аватар для alex0097
 
Регистрация: 06.07.2010
Сообщений: 123
По умолчанию

RAD Studio 2010 у меня.

Вот что он содержит:

Код:
{ KOL MCK } // Do not remove this line!
{ 1c_0.inc
  Do not edit this file manually - it is generated automatically.
  You can only modify 1c_1.inc and 1c_3.inc
  files. }

{$IFDEF Pcode}
 InstallCollapse;
{$ENDIF Pcode}
  NewForm1( Form1, nil );
{$I 1c_1.inc}

{$I 1c_2.inc}

{$I 1c_3.inc}

  Run( Form1.Form );

{$I 1c_4.inc}
alex0097 вне форума Ответить с цитированием
Старый 10.07.2017, 17:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от alex0097 Посмотреть сообщение
Вот что он содержит:
ну вот, RunNew(); в компилируемом коде нет.

попробуйте вынести RunNew(); за пределы блока условной компиляции:
Код:
{$IF Defined(KOL_MCK)} {$I 1c_0.inc} {$ELSE}

  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

{$IFEND}

RunNew();
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2017, 17:32   #7
alex0097
Форумчанин
 
Аватар для alex0097
 
Регистрация: 06.07.2010
Сообщений: 123
По умолчанию

Serge_Bliznykov пробовал, перед тем как писать на форум. и так же пробовал перед.
alex0097 вне форума Ответить с цитированием
Старый 10.07.2017, 17:57   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от alex0097 Посмотреть сообщение
Serge_Bliznykov пробовал
и что происходит?


Цитата:
Сообщение от alex0097 Посмотреть сообщение
и так же пробовал перед.
это что означает?
Вы попробовали запускать ваше приложение через CreateProcess перед тем, как оно откроется?! А зачем?


но это неважно. по сути вопроса мне добавить нечего, извините.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2017, 19:50   #9
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Попробуйте примерно так

Код:
{$IFNDEF KOL_MCK}{$I 1c_0.inc}
RunNew();
{$ELSE}
  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  Application.CreateForm(TForm1, Form1);
  Application.Run;
 {$ENDIF}
Возможно это поможет http://delphikol.narod.ru/docs/kolvcl.htm

Последний раз редактировалось Aliens_wolfs; 10.07.2017 в 19:54.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохрание книги Excel и его перезапуск кодом VBA WizarD.89 Microsoft Office Excel 8 13.05.2011 15:53
Скрытие панелей инструментов при открытии и отображение при закрытии документа Василий. Microsoft Office Word 0 23.10.2010 00:41
запуск процесса при закрытии формы RUSlan48 Общие вопросы Delphi 3 29.03.2010 21:49
как получить путь процесса по его ID Аlex Общие вопросы C/C++ 7 14.12.2009 02:12
Получение имени процесса по его ID Johnson Общие вопросы Delphi 6 07.11.2009 21:55