Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VASSUV
MiThEoN
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 418
Записей в блоге: 2
Завершенные тесты: 1
#1

завершение старого процесса - C++

28.03.2011, 21:02. Просмотров 412. Ответов 3
Метки нет (Все метки)

Как можно выполнить завершение одного процесса, при открытии другого?
Допустим завершения програамы при
C++
1
2
_spawnl(_P_WAIT,".\\discovery.exe","discovery.exe", ".\\date.ini", NULL);   
exit(0);
ведь программа не закроется пока не закроется просесс "discovery.exe"
Как можно это обойти?

Добавлено через 8 часов 33 минуты
может эту тему в другой раздел перенести или все-таки кто знает?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2011, 21:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос завершение старого процесса (C++):

Завершение процесса функцией ExitProcess - C++
Добрый день! Требуется завершить процесс функцией ExitProcess. #include <windows.h> #include <iostream> using namespace std; ...

Завершение родительского процесса из дочернего - C++
Всем доброго времени суток. Мне нужно из дочернего процесса закрыть родительский, но ничего не выходит. Вот исходник дочернего ...

Завершение процесса после его ввода - C++
Здравствуйте! Требуется, чтобы было завершение программы после ввода процесса. Мой код такой: cout << "Введите имя процесса: "; cin >>...

Библиотеки процесса, защита от изменения процесса - C++
Здраствуйте. 1) Как можно получить список библиотек (dll, asi), которые уже загружены в процесс какой-то программы? Мне нужно чекать...

Создание нового массива из индексов старого - C++
Дан целочисленный массив A. Сформировать массив B, поместив в него значения индексов тех элементов массива A, которые являются простыми...

Перенос старого проекта с VS2003 на VS2013 - C++
Добрый день. Пытаюсь перенести проект со студии 2003 на боле актуальную версию (в данном случае 2013), так как в старой IDE работать дико...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
bobrovskii
59 / 59 / 3
Регистрация: 22.01.2011
Сообщений: 187
28.03.2011, 21:35 #2
VASSUV,
_P_OVERLAY
Overlays calling process with new process, destroying the calling process (same effect as _exec calls).
_P_WAIT
Suspends calling thread until execution of new process is complete (synchronous _spawn).
_P_NOWAIT or _P_NOWAITO
Continues to execute calling process concurrently with new process (asynchronous _spawn).
_P_DETACH
Continues to execute the calling process; new process is run in the background with no access to the console or keyboard. Calls to _cwait against the new process will fail (asynchronous _spawn).
это читал? если правельно понял то тебе надо _P_OVERLAY или _P_NOWAIT
0
Роман-1
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 2
09.11.2013, 01:08 #3
Доброго времени суток.
После закрытия окна процесс видно в диспетчере. Почему не удаляется, что делаю не так?

#include <WinSock2.h>
#include <Windows.h>
#include <iostream>
#pragma comment(lib, "Ws2_32.lib")
#define WSA_VER 514

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

//---переменные---//
HINSTANCE hInstance;
HWND hWnd;
SOCKET soket;
SOCKET soket_new;
//------End------//

int May_Coket_Thead()
{
//-------------------------сокет-------------------------//

//--структуры--//
WSAData wsadata;
sockaddr_in addr;
//-----End-----//

if(WSAStartup(WSA_VER, &wsadata) != 0)
{
WSACleanup();
MessageBox(NULL, L"WSAStartup error", L"!", MB_OK);
return 0;
}

SOCKET soket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if(soket == INVALID_SOCKET)
{
WSACleanup();
MessageBox(NULL, L"SOCKET error", L"!", MB_OK);
return 0;
}

addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(7777);

if(bind(soket, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN)) != 0)
{
WSACleanup();
MessageBox(NULL,L"bind error",L"",MB_OK);
return 0;
}
while(listen(soket, 5) == 0)
{
soket_new = accept(soket, NULL, NULL);
if(soket_new != INVALID_SOCKET)
{
MessageBox(NULL,L"1",L"!!!",MB_OK);
}
}
//-------------------------End-------------------------//
return 0;
}

int CALLBACK WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
//--структуры--//
MSG msg;
WNDCLASSEX st;
//-----End-----//

st.cbSize = sizeof(WNDCLASSEX);
st.style = CS_HREDRAW | CS_VREDRAW;
st.lpfnWndProc = WndProc;
st.cbClsExtra = NULL;
st.cbWndExtra = NULL;
st.hInstance = hInstance;
st.hIcon = NULL;
st.hCursor = LoadCursor(NULL, IDC_ARROW);
st.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
st.lpszMenuName = NULL;
st.lpszClassName = L"Windows";
st.hIconSm = NULL;

if(RegisterClassEx(&st) == 0)
{
MessageBox(NULL, L"RegisterClassEx error", L"!", MB_OK);
return 0;
}

HWND hWnd = CreateWindow(L"Windows",
L"Server", WS_OVERLAPPEDWINDOW,
0, 0, 200, 200,
NULL, NULL,
hInstance,
NULL);
//--------------------------------Поток---------------------------------//
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)May_Coket_Thead, 0, 0, 0);
//----------------------------------End-----------------------------------//

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

while(GetMessage(&msg, hWnd, NULL, NULL) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
WSACleanup();
closesocket(soket);
PostQuitMessage(WM_QUIT);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}

return 0L;
}
0
Роман-1
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 2
10.11.2013, 12:16 #4
Разобрался. Дело было в параметре GetMessage(); вместо hWnd нужно NULL.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 12:16
Привет! Вот еще темы с ответами:

Как преобразовать массив создав новый из старого с изменениями?! - C++
Дан массив размера N. Преобразовать его, вставив после каждого положительного числа нулевой элемент.#include &lt;stdio.h&gt; #include...

Сформировать новый массив из старого, добавляя дополнительные элементы - C++
Доброго времени суток! Такая вот задача: Программа формирует новый массив из старого добавляя (2 нуля) если в исходном массиве...

завершение программы - C++
помогите сообразить #include &lt;StdAfx.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; void...

Завершение программы - C++
Как завершить программу из другой функции(не Main)? Пробовал использовать system(&quot;exit&quot;);, но не помогло. Чтобы вы меня правильно поняли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.11.2013, 12:16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru