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

Создание процесса с индивидуальными настройками - C++

Восстановить пароль Регистрация
 
ItDenis
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 6
20.05.2009, 03:12     Создание процесса с индивидуальными настройками #1
Всем привет! Есть такая задача:
Заставьте консольный процесс запустить несколько своих копий (и далее рекурсивно). Убедитесь, что порождение процессов не будет бесконечным (остановитесь на 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <windows.h>
#include <stdio.h>
 
int main(int argc, char **argv)
{
  PROCESS_INFORMATION  pi;
  STARTUPINFO  si;
  int i;
  char cmdline[256];
 
  si.cb             = sizeof(si);
  si.lpReserved     = NULL; 
  si.lpDesktop      = NULL; 
  si.lpTitle        = "my process"; 
  si.dwX            = rand()%500; 
  si.dwY            = 10; 
  si.dwXSize        = 800; 
  si.dwYSize        = 300; 
  si.dwXCountChars  = 80; 
  si.dwYCountChars  = 100; 
  si.dwFillAttribute= 350; 
  si.dwFlags        = STARTF_USEFILLATTRIBUTE|STARTF_USEPOSITION|STARTF_USESIZE; 
  si.wShowWindow    = SW_SHOW; 
  si.cbReserved2    = 0; 
  si.lpReserved2    = NULL; 
  si.hStdInput      = NULL; 
  si.hStdOutput     = NULL; 
  si.hStdError      = NULL; 
 
  if (argc < 2) {
    printf("I am parent\n");
    for(i=1; i<5; i++) {
      sprintf(cmdline, "%s %d", argv[0], i);
      CreateProcess(argv[0], cmdline, NULL, NULL, TRUE,CREATE_NEW_CONSOLE|NORMAL_PRIORITY_CLASS, NULL, NULL,si1, &pi);
      CloseHandle(pi.hProcess);
      CloseHandle(pi.hThread);
    }
  } else {
    printf("I am slave number %s\n", argv[1]);
    getchar();
  }
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2009, 03:12     Создание процесса с индивидуальными настройками
Посмотрите здесь:

C++ Проверка процесса
Распаралеливание процесса. C++
Как работать с настройками win7 ? C++
C++ Отладка порожденного процесса
Запуск процесса C++
C++ WinXp Создание процесса
C++ Узнать id родителя процесса
C++ Запуск процесса из С++
Защита процесса от завершения C++
Библиотеки процесса, защита от изменения процесса C++
Выгрузка dll из процесса C++
C++ Бинарный файл с настройками

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
20.05.2009, 03:21     Создание процесса с индивидуальными настройками #2
Если я ничего не путаю, переменная argv отвечает за настройки, передавайте в них цвет.
ItDenis
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 6
20.05.2009, 10:20  [ТС]     Создание процесса с индивидуальными настройками #3
Цитата Сообщение от DEM90 Посмотреть сообщение
Если я ничего не путаю, переменная argv отвечает за настройки, передавайте в них цвет.
Все настройки занесены в структуру STARTUPINFO, не понял ход твоей мысли(
BullDogoff
 Аватар для BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
20.05.2009, 11:48     Создание процесса с индивидуальными настройками #4
В строке 35 ругается на undeclared identifier si1. Там параметр типа struct _STARTUPINFOA *, адрес передал - заработало..

Например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
  if (argc < 2) {
    printf("I am parent\n");
    for(i=1; i<5; i++) {
      sprintf(cmdline, "%s %d", argv[0], i);
 
      si.dwXSize+=10;    //Меняем ширину окна на произвольную
 
      CreateProcess(argv[0], cmdline, NULL, NULL, TRUE, CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
      CloseHandle(pi.hProcess);
      CloseHandle(pi.hThread);
    }
З.Ы.: Начинать цикл с единицы как-то.. Некрасиво, по глазам бьёт.. ИМХО, конечно

Добавлено через 58 минут 25 секунд
Либо объявлять массив и задавать изначально настройки для каждого окна в отдельности.. Да в принципе хоть ввод с клавиатуры, простенький, типа ширина - высота.. ВотЪ.
uto
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
20.05.2009, 18:59     Создание процесса с индивидуальными настройками #5
Выбирай любую настройку цвета, что нравится

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// 03 colored text.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
//------------------------------------------------------------------------
printf("standart output\n");
//------------------------------------------------------------------------
SetConsoleTextAttribute(hConsole, 0x1E);
//first 4 bits - for background: 1 - irgB (0001) => dark blue
//second 4 bits - for foreground: E - IRGb (1110) => light yellow
printf("output with 0x1E parameter\n");
//------------------------------------------------------------------------
SetConsoleTextAttribute(hConsole, FOREGROUND_RED|
FOREGROUND_GREEN|FOREGROUND_BLUE);
//and this macroses available for coloring too.
//usage of them makes same results.
/*
FOREGROUND_RED,FOREGROUND_GREEN,FOREGROUND_BLUE,FOREGROUND_INTENSITY
BACKGROUND_RED,BACKGROUND_GREEN,BACKGROUND_BLUE,BACKGROUND_INTENSITY
*/
printf("restored standart output\n");
//------------------------------------------------------------------------
SetConsoleTextAttribute(hConsole, FOREGROUND_RED|FOREGROUND_GREEN|
FOREGROUND_BLUE|FOREGROUND_INTENSITY);
//intense effect demonstration
COORD a;
a.X=10;
a.Y=10;
SetConsoleCursorPosition(hConsole,a);
//cursor positionating demonstration
printf ("output with intense in a new place\n");
//------------------------------------------------------------------------
SetConsoleTextAttribute(hConsole, FOREGROUND_RED|BACKGROUND_RED|
BACKGROUND_GREEN|BACKGROUND_INTENSITY);
//background coloring demonstration
printf ("output with light yellow background and red text\n");
//------------------------------------------------------------------------
SetConsoleTextAttribute(hConsole,0x0A);
a.X=17; a.Y=20; SetConsoleCursorPosition(hConsole,a);
printf("goodby and feel free to use this sample :)\n");
getch();
return 0;
}
Yandex
Объявления
20.05.2009, 18:59     Создание процесса с индивидуальными настройками
Ответ Создать тему
Опции темы

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