Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
ItDenis
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 6
1

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

20.05.2009, 03:12. Просмотров 624. Ответов 4
Метки нет (Все метки)

Всем привет! Есть такая задача:
Заставьте консольный процесс запустить несколько своих копий (и далее рекурсивно). Убедитесь, что порождение процессов не будет бесконечным (остановитесь на 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2009, 03:12
Ответы с готовыми решениями:

WinXp Создание процесса
Всем привет! Подскажите написана программа использующая опенгл, глу32, и...

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

Бинарный файл с настройками
Здравствуйте, сделайте пожалуйста функции для записи и чтения информации из/в...

Управление настройками видеокарты
Доброго времени суток. Не подскажите, возможно ли как то узнать функции...

Как работать с настройками win7 ?
Как получить доступ к настройкам win7 таким как &quot;показывать/не показывать...

4
DEM90
17 / 17 / 7
Регистрация: 06.05.2009
Сообщений: 115
20.05.2009, 03:21 2
Если я ничего не путаю, переменная argv отвечает за настройки, передавайте в них цвет.
0
ItDenis
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 6
20.05.2009, 10:20  [ТС] 3
Цитата Сообщение от DEM90 Посмотреть сообщение
Если я ничего не путаю, переменная argv отвечает за настройки, передавайте в них цвет.
Все настройки занесены в структуру STARTUPINFO, не понял ход твоей мысли(
0
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 секунд
Либо объявлять массив и задавать изначально настройки для каждого окна в отдельности.. Да в принципе хоть ввод с клавиатуры, простенький, типа ширина - высота.. ВотЪ.
0
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;
}
0
20.05.2009, 18:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2009, 18:59

Создание файла с настройками программы
Нужна помощь, не смог найти нужные материалы сам. Есть программа с кучей...

Создание загрузочного Iso-образа установленной операционной системы (со своими настройками и приложениями)
Подскажите пожалуйста, с помощью какой программы возможно создать загрузочный...

Группы пользователей с индивидуальными правами
Здравствуйте, уважаемые пользователи форума. Помогите, пожалуйста...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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