Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите функцию... / 9 сообщений из 9, страница 1 из 1
22.11.2005, 10:43
    #33391658
UlanOf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
С помощью которой можно узнать все запущенные приложения в ОС ...
И вторая то же только процессы ОС ...
ОС Win98-xp
...
Рейтинг: 0 / 0
22.11.2005, 11:02
    #33391730
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
поиск процесса, Дельфи - в Си аналогично :). А вот как на владельца выйти...
Код: plaintext
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.
 function  FindMyProcess (my_process :  string ):bool;
   var 
    hSnapshot: THandle;
    pe32: TProcessEntry32;
   begin 
    Result := false;
     try 
      hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,  0 );
       if  (hSnapshot <> - 1 )  then 
         begin 
          pe32.dwSize := SizeOf(TProcessEntry32);
           if  Process32First(hSnapshot, pe32) = true  then 
           repeat 
             if  Pos(LowerCase(my_process),LowerCase(pe32.szExeFile))<> 0   then 
               begin 
                CloseHandle(hSnapshot);
                Result := true;
                break;
               end ;
           until   not  Process32Next(hSnapshot, pe32);
           if  Result = false  then  CloseHandle (hSnapshot);
         end ;
     except 
      ;
     end ;
 end ;
...
Рейтинг: 0 / 0
22.11.2005, 14:15
    #33392475
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
UlanOfС помощью которой можно узнать все запущенные приложения в ОС ...

предлогаю обратиться к толковой книге по потрохам Win32...

Д.Рихтер "Программирование для профессионалов под Win32"

если ничаво не попутал...
Там найдёте ответы на Ваш вопрос и кучу полезностей так же...

удачи Вам
(круглый)
...
Рейтинг: 0 / 0
22.11.2005, 14:17
    #33392485
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
kolobok0Д.Рихтер "Программирование для профессионалов под Win32"+1
хорошая книга
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
22.11.2005, 17:33
    #33393187
UlanOf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
Карабас Барабас kolobok0Д.Рихтер "Программирование для профессионалов под Win32"+1
хорошая книга
Posted via ActualForum NNTP Server 1.3

Сенк..
Прыдетса пакупать... а.. и еще искать....
...
Рейтинг: 0 / 0
22.11.2005, 17:33
    #33393189
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
Код: plaintext
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.
#include <set>
#include <string>
#include <locale>
#include <windows.h>
#include <winnt.h>

#pragma warning(disable:  4127 ) // conditional expression is constant


using namespace std;

//---------------------------------------------------------------------------------------------------------------------
static bool GetServiceList( set<string> &lstResult ) 
{
    SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE); 
    if( hSCM == NULL )
    {
		return false;
    }

    DWORD dwResumeHandle =  0 ;
	DWORD cbNeeded =  2048 ;
	DWORD cServices;
	DWORD dwError;
	LPENUM_SERVICE_STATUS pStatus;
    BYTE *bBuffer = NULL;

    try
    {
	    for(int i =  0 ; i <  3 ; i++) // do not do more then 3 trys
	    {
            // Review: If a single service is too big to fit into the bBuffer it seems like
            //         this will become an infinite loop. A check for returned cServices being
            //         bigger than zero would be usefull. <DM>
            // Owner:  issue is addressed

		    pStatus = (LPENUM_SERVICE_STATUS)bBuffer;

    	    bBuffer = new BYTE[cbNeeded];
            memset(bBuffer,  0 , cbNeeded);


            DWORD new_need =  0 ;
		    // retrieve a portion of service status information
		    if(!EnumServicesStatus(hSCM, SERVICE_WIN32, SERVICE_STATE_ALL,
								    pStatus, cbNeeded, &new_need,
								    &cServices, &dwResumeHandle))
		    {
			    dwError = GetLastError();
			    if (dwError != ERROR_MORE_DATA)
			    {
                    delete [] bBuffer;
				    break;
			    }
                if( new_need > cbNeeded )       // function requires more memory
                {
                    delete [] bBuffer;
                    cbNeeded = new_need;
                    continue;                   //  try to get info again
                }
		    }
		    for (DWORD i =  0 ; i < cServices; i++, pStatus++) 
		    {
                if( pStatus->lpServiceName == NULL )
                {
                    continue;
                }
                string name_srv = pStatus->lpServiceName;
                if( !name_srv.empty() )
                {
                    lstResult.insert( name_srv );
                }
		    }
            break;

	    }
        return true;
    }catch(...){}
    return false;
}
...
Рейтинг: 0 / 0
22.11.2005, 17:34
    #33393192
UlanOf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
UlanOf Карабас Барабас kolobok0Д.Рихтер "Программирование для профессионалов под Win32"+1
хорошая книга
Posted via ActualForum NNTP Server 1.3
.

Всем откликнувшимся спасибо....

Для Windows 9x используйте CreateToolhelp32Snapsot/ Process32First(Process32Next)/ Thread32First(Thread32Next).

Для WinNT NTQuerySystemInformation. А можно так: получаете список окон в системе (каким угодно способом, если нужны только процессы - можно ограничиться top-level), далее - GetWindowTreadProcessID - получаете ID процесса (и нити). OpenProcess - дает handle процесса.
...
Рейтинг: 0 / 0
04.12.2005, 12:25
    #33415771
UlanOf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
UlanOf UlanOf Карабас Барабас[quot kolobok0]Д.Рихтер "Программирование для профессионалов под Win32"+1
хорошая книга

.
НАсчет книги...МОжет кто нибудь поделиться в эл. виде ...в магазинах не нашел...


CreateToolhelp32Snapsot/ Process32First(Process32Next) - вот это помогло найти все процессы... Палучилось и все используемые модули тд...
Но вот проблема получить загруженность процессора и выделенной оперативой памяти этим процессам...

Вроде бы есть такая функция....Toolhelp32ReadProcessMemory

но как ее правильно использовать и можно ли вообще с помощью нее получить для не обходимого мне процесса все перечисленное выше..
...
Рейтинг: 0 / 0
04.12.2005, 13:02
    #33415785
UlanOf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите функцию...
авторНАсчет книги...МОжет кто нибудь поделиться в эл. виде ...в магазинах не нашел...

отбой....нашел .... даже перевод хелпа на руский есть ..)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите функцию... / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]