Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 5
1

Ошибки в коде

12.05.2013, 16:37. Показов 710. Ответов 11
Метки нет (Все метки)

Вот ко программы:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <Windows.h>
#include <iostream>
#include <tchar.h>
#include <locale>
 
using namespace std;
 
void _tmain()
{
    STARTUPINFO si[5];
    PROCESS_INFORMATION pi[5];
 
    setlocale(LC_CTYPE, "");
 
    ZeroMemory( &si, sizeof(si) );
    si[0].cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    int i=0;
        if (CreateProcess(
                L"c:\\windows\\system32\\calc.exe", // имя запускаемой программы(полный путь до нёё)
                NULL, // командная строка
                NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                FALSE,// Флаг наследования текущего процесса
                NULL, // Флаги способов создания процесса
                NULL, // Указатель на блок среды
                NULL, // Текущий диск или каталог
                &si[i], // Указатель нас структуру STARTUPINFO
                &pi[i]) // Указатель нас структуру PROCESS_INFORMATION 
        )
        {
            cout << "Указатель процесса " << pi[i].dwProcessId << endl 
                << "Указатель потока " << pi[i].dwThreadId << endl
                << "Hendl процесса " << pi[i].hProcess << endl 
                << "Hendl потока " <<  pi[i].hThread << endl
                << endl;
        }
        i++;
        if (CreateProcess(
                L"C:\\Windows\\notepad.exe", // имя запускаемой программы(полный путь до нёё)
                NULL, // командная строка
                NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                FALSE,// Флаг наследования текущего процесса
                NULL, // Флаги способов создания процесса
                NULL, // Указатель на блок среды
                NULL, // Текущий диск или каталог
                &si[i], // Указатель нас структуру STARTUPINFO
                &pi[i]) // Указатель нас структуру PROCESS_INFORMATION 
        )
        
 
 
 
{
            cout << "Указатель процесса " << pi[i].dwProcessId << endl 
                << "Указатель потока " << pi[i].dwThreadId << endl
                << "Hendl процесса " << pi[i].hProcess << endl 
                << "Hendl потока " <<  pi[i].hThread << endl
                << endl;
        }
i++;    
    if (CreateProcess(
                L"C:\\Program Files\\Windows NT\\Accessories\\WordPad.exe", // имя запускаемой программы(полный путь до нёё)
                NULL, // командная строка
                NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                FALSE,// Флаг наследования текущего процесса
                NULL, // Флаги способов создания процесса
                NULL, // Указатель на блок среды
                NULL, // Текущий диск или каталог
                &si[i], // Указатель нас структуру STARTUPINFO
                &pi[i]) // Указатель нас структуру PROCESS_INFORMATION 
        )
        {
            cout << "Указатель процесса " << pi[i].dwProcessId << endl 
                << "Указатель потока " << pi[i].dwThreadId << endl
                << "Hendl процесса " << pi[i].hProcess << endl 
                << "Hendl потока " <<  pi[i].hThread << endl
                << endl;
        }
        i++;
    system("pause");
 
    for(int p = 4; p >= 0; p--)
        TerminateProcess(pi[p].hProcess, NO_ERROR); //"убиваем" без возможности нормального завершения...
}
Добавлено через 27 секунд
Помогите, надо срочно!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2013, 16:37
Ответы с готовыми решениями:

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h...

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt;...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private:...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить...

11
617 / 22 / 0
Регистрация: 30.09.2007
Сообщений: 357
14.05.2013, 15:55 2
C++
1
2
3
4
5
            cout << L"Указатель процесса " << pi[i].dwProcessId << endl 
                << L"Указатель потока " << pi[i].dwThreadId << endl
                << L"Hendl процесса " << pi[i].hProcess << endl 
                << L"Hendl потока " <<  pi[i].hThread << endl
                << endl;
0
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
14.05.2013, 19:35 3
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
int _tmain(int argc, _TCHAR* argv[])
{
    STARTUPINFOA si[5] = {0};
    PROCESS_INFORMATION pi[5] = {0};
 
    setlocale(LC_CTYPE, "");
 
    char *strPath[2] = {"C:\\Windows\\system32\\calc.exe",
                                "C:\\Windows\\System32\\cmd.exe" };
 
 
    for(int i = 0; i < 10; i++)
    {
        ZeroMemory( &si[i % 5], sizeof(STARTUPINFOA));
        ZeroMemory( &pi[i % 5], sizeof(PROCESS_INFORMATION));
        si[i].cb = sizeof(STARTUPINFOA);
        BOOL result = CreateProcessA(strPath[i % 2],
                                    NULL, // командная строка
                                    NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                        NULL, // Указатель на структуру SECURITY_ATTRIBUTES
                        FALSE,// Флаг наследования текущего процесса
                        NULL, // Флаги способов создания процесса
                        NULL, // Указатель на блок среды
                        NULL, // Текущий диск или каталог
                        &si[i % 5], // Указатель нас структуру STARTUPINFO
                        &pi[i % 5]); // Указатель нас структуру PROCESS_INFORMATION );
 
        if(!result)
        {
            std::cout << "Error number - " << GetLastError() <<  std::endl;
        }
        else
        {
            std::cout << "Указатель процесса " << pi[i % 5].dwProcessId << std::endl 
                << "Указатель потока " << pi[i % 5].dwThreadId << std::endl
                << "Hendl процесса " << pi[i % 5].hProcess << std::endl 
                << "Hendl потока " <<  pi[i % 5].hThread << std::endl
                << std::endl;
        }
        Sleep(200);
    }
 
    system("pause");
    return 0;
}
так малость короче , создается 5 cmd.exe и 5 calc.exe.
0
617 / 22 / 0
Регистрация: 30.09.2007
Сообщений: 357
14.05.2013, 20:02 4
Я заметил в этом форуме люди на чужой код отвечают своим кодом, мол плевать на ваш разбирайтесь с моим)
ssXXss, Твой у него тоже работать не будет так как у него есть в начале кода использования L перед текстом а в подальше м нет, изо чего код вылетает, вот у тебя смотрю вовсе его нет) Смею предположить человек использует боле современную студию (а не VS6.0)
0
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
14.05.2013, 20:19 5
mikityak писал и собирал в msvc 2012 с использованием юникода (в настройках проекта) но отметь такое дело -
STARTUPINFOA si[5] = {0}; в названии структуры стоит символ А явно указывающий копмил. какой вариант использовать, тоже касается и CreateProcessA() по этому для путей использовал char* strPath[2] ={...},
если бы я использовал при этих настройках CreateProcessW() или просто CreateProcess() что одно и тоже то тогда надо было бы использовать wchar_t* ...[2] = {L"...", L"..."};
0
2822 / 1631 / 252
Регистрация: 03.12.2007
Сообщений: 4,222
14.05.2013, 20:51 6
Цитата Сообщение от mikityak Посмотреть сообщение
C++
1
2
3
4
5
            cout << L"Указатель процесса " << pi[i].dwProcessId << endl 
                << L"Указатель потока " << pi[i].dwThreadId << endl
                << L"Hendl процесса " << pi[i].hProcess << endl 
                << L"Hendl потока " <<  pi[i].hThread << endl
                << endl;
cout - он всегда basic_ostream<char>, так что L тут не в тему.
0
617 / 22 / 0
Регистрация: 30.09.2007
Сообщений: 357
14.05.2013, 20:55 7
ssXXss, Я рад что ты для себя всё сделал правильно) но у человека явно ничего работать не будет) зачем этот спор..
0
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
14.05.2013, 20:58 8
надо дождаться что получиться у ТС )
0
617 / 22 / 0
Регистрация: 30.09.2007
Сообщений: 357
14.05.2013, 21:01 9
Somebody, Ой та хватит грузить, консолька вылетает без буковки) я лишь взял подправить код человека. И у меня он действительно е работал) лучше объясните где это ваше с использованием юникода (в настройках проекта) включать?)
0
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
14.05.2013, 21:12 10
alt + F7 появится окно свойств проекта вкладка - свойства конфигурации->общие->набор символов вар.1 - не заданно(видимо для явного указания в коде) вар.2 Использовать набор символов Юникода(wchar_t) вар.3 Использовать многобайтовую кодировку(char).
0
617 / 22 / 0
Регистрация: 30.09.2007
Сообщений: 357
14.05.2013, 21:21 11
ssXXss, Стоит тот Юникод во всех проектах по умолчанию..
0
Миниатюры
Ошибки в коде  
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
14.05.2013, 21:30 12
это при использовании набора инструментов Visual Studio 2012 (v110) а у меня в Qt-шном проекте с компилятором Intel C++ Compiler XE 13.0 вообще пусто было.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2013, 21:30

Помощь в написании контрольных, курсовых и дипломных работ здесь.

ошибки в готовом коде(ошибки указаны)
Ввести с клавиатуры строку (кол-во символов не больше 10). И определить ее длину c использованием...

Ошибки в коде
Подскажите пожалуйста, что неверно в коде. Выбивает ошибка: 'cout' was not declared in this scope...

Ошибки в коде
Нужно написать программу, которая спрашивает у пользователя его имя и возраст; затем печатает:...

Ошибки в коде
Вот собственно код первой программы using System; using System.Collections.Generic; using...


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

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

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