Как поместить на панель задач
Как сделать так чтобы форму прогаммы не было видно,а она будет только на панели задач?
В смысле бросить в трей - у борланда есть наглядный пример как это делаеться. Поищи в екзамплах - он находиться Apps\TrayIcon
А так проблема вот в чем: программа моя без формы,запускает на выполнение другую программу DrWeb386.exe, которая консольная и видимая, а мне надо чтобы ее не видел пользователь, чтобы он не мог прервать ее выпольнение. Вот я и думаю как DrWeb386.exe спрятать от пользователя.
А ты как запускаешь EXE - можно же флагами указать - что процесс должен быть скрытым ну или нослать сообщение окну чтобы оно стало скрытным
Запускаю с этими ключами /AR /FM /HA /ML /PR /SD /TB /TM /UP /RPResDrWeb.log, не встречала ключа который отвечает за видимость.
Запускаешь этот ЕХЕ ты чем
AnsiString StartDrWeb(char *aPath)
{
int result;
clrscr();
result = system(aPath);
if (result == -1)
{
return "Error job check program log file.\nIt does not start antivirus.\n";
}
else
{
return "";
}
}
попробуй через spawn или CreateProcess
Через spawn уже пробовала - не подходит, а CreateProcess попробую.
А че через spawn не получаеться
Не запускает Drweb386.exe не видит ключи, все пути правильно передаю.
[COLOR=darkblue]
String e = "c:\\arc\\Drweb386.exe";
String h = "/AR /FM /HA /ML /PR /SD /TB /TM /UP /RPResDrWeb.log";
spawnlp(P_DETACH,e.c_str(), e.c_str(), h.c_str(), NULL);
[/COLOR]
/ ЗАПУСК DrWeb
AnsiString spawnl_example(AnsiString aPath)
{
int result;
AnsiString pp = "C:\\Program Files\\DrWeb\\drweb386.exe";
AnsiString kk = "/AR /FM /HA /ML /PR /SD /TB /TM /UP /RPResDrWeb.log";
clrscr();
result = spawnlp(P_DETACH, pp.c_str(), pp.c_str(), kk.c_str(), NULL);
if (result == -1)
{
return "Ошибка работы программы проверки log файла.\nНе удалось запустить антивирус.\n";
}
else
{
return "";
}
}
Цитата:
Originally posted by mona
Все компилируется, но exe все-равно не запускается. Вот код (глянь может я что не так описала)
/ ЗАПУСК DrWeb
AnsiString spawnl_example(AnsiString aPath)
{
int result;
AnsiString pp = "C:\\Program Files\\DrWeb\\drweb386.exe"+'\0';
AnsiString kk = "/AR /FM /HA /ML /PR /SD /TB /TM /UP /RPResDrWeb.log"+'\0';
clrscr();
result = spawnlp(P_DETACH, pp.c_str(), pp.c_str(), kk.c_str(), NULL);
if (result == -1)
{
return "Ошибка работы программы проверки log файла.\nНе удалось запустить антивирус.\n";
}
else
{
return "";
}
}
Все компилируется, но exe все-равно не запускается. Вот код (глянь может я что не так описала)
/ ЗАПУСК DrWeb
AnsiString spawnl_example(AnsiString aPath)
{
int result;
AnsiString pp = "C:\\Program Files\\DrWeb\\drweb386.exe"+'\0';
AnsiString kk = "/AR /FM /HA /ML /PR /SD /TB /TM /UP /RPResDrWeb.log"+'\0';
clrscr();
result = spawnlp(P_DETACH, pp.c_str(), pp.c_str(), kk.c_str(), NULL);
if (result == -1)
{
return "Ошибка работы программы проверки log файла.\nНе удалось запустить антивирус.\n";
}
else
{
return "";
}
}
Да и еще с этим ключем не возвращается ID процесса - так что посмотри в деспечере задач - может быть все запустилось
Конечно можно запустить с P_NOWAIT и получить ID процесса, а затем получить handle окна запущенной программы и приказать ей скрыться
ну или как вариант поэксперементируй с CreateProcess - вот он точно сделает все как ты хоче
У меня получилось я использовала функцию WinExec параметр uCmdShow установила в значение SW_HIDE - окно делается невидимым, плюс в свойствах DrWeb386.exe режим экрана сделала оконным. Так что разобралась пошагаво!