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

процессы - C++

Восстановить пароль Регистрация
 
Жека_
Заблокирован
23.05.2011, 00:52     процессы #1
всем привет
подскажите как создать процесс по имени например explorer.exe если можно то через

system(...);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.05.2011, 01:20     процессы #2
НЕ очень правда понятно почему эта херь не работает
C++
1
CreateProcess ("explorer.exe", 0, 0, 0, 0, 0, 0, 0, &si, &pi))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <windows.h>
 
int main() {
 STARTUPINFO si;
 PROCESS_INFORMATION pi;
 ZeroMemory(&si,sizeof(STARTUPINFO) );
 
 if (CreateProcess ("C:\\WINDOWS\\explorer.exe", 0, 0, 0, 0, 0, 0, 0, &si, &pi)) { 
 
 //Почему необходимо закрывать описатель потока- смотри у Джефри Рихтера в главе четвёртой, где-то в конце
 //Вернуться, бля, Восковиков  закрывает и описатель процесса! Разобраться!
  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );
 }
 
 
 else {
  printf ("protsessne sozdan");
  system ("pause");
 }
 system ("pause");
 
 system ("explorer.exe");
 
 return 0;
}
Жека_
Заблокирован
23.05.2011, 01:25  [ТС]     процессы #3
а как сделать чтобы нельзя было убить процесс
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.05.2011, 01:28     процессы #4
Не поможет, но держи
Делать неубиваемый процесс очень просто.
Перед тем, как убить винда сначала попытается завершить
его по-хорошему. Тут он и должен запустить свою копию
и передать ей все нужные данные перед благополучным
завершением.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
LRESULT WINAPI WndProc(HWND hWnd, UINT msg,
     WPARAM wParam, LPARAM lParam)
{
  switch(msg)
  {
     //HANDLE_MSG(hWnd, WM_CREATE, WndProc_OnCreate);
     HANDLE_MSG(hWnd, WM_DESTROY, WndProc_OnDestroy);
     //HANDLE_MSG(hWnd, WM_SIZE, WndProc_OnSize);
     //HANDLE_MSG(hWnd, WM_COMMAND, WndProc_OnCommand);
     default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
  }
}
 
void WndProc_OnDestroy(HWND hWnd)
{
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
 
  // Создадим другой процесс, а этот благополучно завершим.
  memset(&si, 0, sizeof(STARTUPINFO));
  si.cb = sizeof(STARTUPINFO);
  CreateProcess(NULL, "program.exe", NULL, NULL,
      FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
  CloseHandle(pi.hThread);
  CloseHandle(pi.hProcess);
  PostQuitMessage(0);
  //return FORWARD_WM_DESTROY(hWnd, DefWindowProc);
}
Жека_
Заблокирован
23.05.2011, 01:31  [ТС]     процессы #5
еще вопрос как запретить копирование программы
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.05.2011, 01:42     процессы #6
А подробнее?
Жека_
Заблокирован
23.05.2011, 01:57  [ТС]     процессы #7
ну чтобы программу нельзя было скопировать. работал только один экземпляр программы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 02:31     процессы
Еще ссылки по теме:

C++ Циклические процессы
MPI процессы C++
Процессы в c++ C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
23.05.2011, 02:31     процессы #8
Тогда так, программа proga.exe должна запускаться и первым делом искать список процессов. Если в списке процессов имеется proga.exe (то есть уже имеется запущеный экземпляр), то прога прекращает работу, а тот экземпляр (первый) работает как ни в чём не бывало.
Как найти список процессов в системе смотри гугл.
Yandex
Объявления
23.05.2011, 02:31     процессы
Ответ Создать тему
Опции темы

Текущее время: 03:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru