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

Функции типа void - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
CoVeReTeSS
3 / 3 / 0
Регистрация: 24.03.2011
Сообщений: 99
17.10.2011, 18:39     Функции типа void #1
Добрый вечер, у меня есть проблема, которую я не могу решить.
Есть функция типа void. Суть этой функции в том, чтобы печетать некие значения. Но мне нужно еще, записать эти значения в массив, как это сделать, потому что потом мне очень понадобится этот массив.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
17.10.2011, 18:41     Функции типа void #2
Цитата Сообщение от CoVeReTeSS Посмотреть сообщение
Добрый вечер, у меня есть проблема, которую я не могу решить.
Есть функция типа void. Суть этой функции в том, чтобы печетать некие значения. Но мне нужно еще, записать эти значения в массив, как это сделать, потому что потом мне очень понадобится этот массив.
Передать массив в виде параметра функции.
CoVeReTeSS
3 / 3 / 0
Регистрация: 24.03.2011
Сообщений: 99
17.10.2011, 18:45  [ТС]     Функции типа void #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
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
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <psapi.h>
#include <iostream>
#pragma comment(lib, "Psapi.lib")
// To ensure correct resolution of symbols, add Psapi.lib to TARGETLIBS
// and compile with -DPSAPI_VERSION=1
 
void PrintProcessNameAndID( DWORD processID )
{   
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
 
    // Get a handle to the process.
 
    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, processID );
 
    // Get the process name.
 
    if (NULL != hProcess )
    {
        HMODULE hMod;
        DWORD cbNeeded;
 
        if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), 
             &cbNeeded) )
        {
            GetModuleBaseName( hProcess, hMod, szProcessName, 
                               sizeof(szProcessName)/sizeof(TCHAR) );
        }
    }
 
    // Print the process name and identifier.
 
    _tprintf( TEXT("%s  (PID: %u)\n"), szProcessName, processID );
 
    // Release the handle to the process.
 
    CloseHandle( hProcess );
}
 
int main( void )
{
    // Get the list of process identifiers.
 
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;
 
    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
    {
        return 1;
    }
 
 
    // Calculate how many process identifiers were returned.
 
    cProcesses = cbNeeded / sizeof(DWORD);
 
    // Print the name and process identifier for each process.
 
    for ( i = 0; i < cProcesses; i++ )
    {
        if( aProcesses[i] != 0 )
        {
            PrintProcessNameAndID( aProcesses[i] );
        }
    }
    std::cout<<cProcesses<<" Processes"<<std::endl;
    system("pause");
    return 0;
}
Мне нужно узнать id процессов из ф-ции PrintProcessNameAndID и записать их в массив
Сыроежка
Заблокирован
17.10.2011, 18:56     Функции типа void #4
Цитата Сообщение от CoVeReTeSS Посмотреть сообщение
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
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <psapi.h>
#include <iostream>
#pragma comment(lib, "Psapi.lib")
// To ensure correct resolution of symbols, add Psapi.lib to TARGETLIBS
// and compile with -DPSAPI_VERSION=1
 
void PrintProcessNameAndID( DWORD processID )
{   
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
 
    // Get a handle to the process.
 
    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, processID );
 
    // Get the process name.
 
    if (NULL != hProcess )
    {
        HMODULE hMod;
        DWORD cbNeeded;
 
        if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), 
             &cbNeeded) )
        {
            GetModuleBaseName( hProcess, hMod, szProcessName, 
                               sizeof(szProcessName)/sizeof(TCHAR) );
        }
    }
 
    // Print the process name and identifier.
 
    _tprintf( TEXT("%s  (PID: %u)\n"), szProcessName, processID );
 
    // Release the handle to the process.
 
    CloseHandle( hProcess );
}
 
int main( void )
{
    // Get the list of process identifiers.
 
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;
 
    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
    {
        return 1;
    }
 
 
    // Calculate how many process identifiers were returned.
 
    cProcesses = cbNeeded / sizeof(DWORD);
 
    // Print the name and process identifier for each process.
 
    for ( i = 0; i < cProcesses; i++ )
    {
        if( aProcesses[i] != 0 )
        {
            PrintProcessNameAndID( aProcesses[i] );
        }
    }
    std::cout<<cProcesses<<" Processes"<<std::endl;
    system("pause");
    return 0;
}
Мне нужно узнать id процессов из ф-ции PrintProcessNameAndID и записать их в массив
Если я правильно понял ваш код, то, не вдаваясь в подробности, вам нужно объявить вашу функцию как

C++
1
void PrintProcessNameAndID( DWORD processID,  DWORD aProcesses[] );
Yandex
Объявления
17.10.2011, 18:56     Функции типа void
Ответ Создать тему
Опции темы

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