Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция EnumWindows() / 25 сообщений из 48, страница 1 из 2
22.03.2014, 14:33
    #38593572
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Здравствуйте .
У меня возникла такая проблема: нужна разработать две программы , одна с которых получает перечень всех заголовков окон в системе и передаёт его второй программе.
Не могу разобраться , как это сделать . Это как лучше реализовывать - через консоль и формы ? Прочитал о функции EnumWindows(), которая перечисляет все окна верхнего уровня на экране, передавая дескриптор каждого окна, в свою очередь, в определяемую программой функцию повторного вызова.

Не могу понять , как получить список заголовок окон .

На просторах интернета нашёл такой пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#include "stdafx.h"
#include <windows.h>

BOOL CALLBACK fnEnumWindowProc(HWND hwnd,LPARAM lParam){
  fprintf(stdout,"%8.8x\n", (long)hwnd);
  return TRUE;
}
int main(){
  EnumWindows(fnEnumWindowProc, 0);
  return 0;
}



Вроде понял , как он работает , но почему выводятся числа , а не названия окон ? как это исправить ?
и что делать дальше , после того , как я узнал эти названия ? какую функцию использовать для передачи этих названий окон в другую программу?

Помогите , пожалуйста . Заранее огромное спасибо!
...
Рейтинг: 0 / 0
22.03.2014, 14:38
    #38593575
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7Вроде понял , как он работает , но почему выводятся числа , а не названия окон
?
Потому что handle окна это число. Заговолок окна можно получить послав ему сообщение
WM_GETTEXT.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.03.2014, 14:39
    #38593576
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7но почему выводятся числа , а не названия окон ? как это исправить ?
потому, что возвращаются хэндлы окон.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633520(v=vs.85).aspx
...
Рейтинг: 0 / 0
22.03.2014, 14:54
    #38593581
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Dimitry Sibiryakov, спасибо , я уже понял , почему числа выводятся , но как же сделать так , чтобы выводились названия окон?

На счёт WM_GETTEXT - мне же не нужен отдельный заголовок , нужно , чтобы выводились все заголовки , в этом случает WM_GETTEXT наверное нельзя использовать
...
Рейтинг: 0 / 0
22.03.2014, 14:57
    #38593584
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7На счёт WM_GETTEXT - мне же не нужен отдельный заголовок , нужно , чтобы
выводились все заголовки
"Все заголовки" это совокупность "отдельных заголовков", полученная один за другим.

PS: Кстати, вместо WM_GETTEXT в ряде случаев можно использовать функцию GetWindowText().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.03.2014, 15:05
    #38593587
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Dimitry Sibiryakov, а вообще ж используется EnumWindows() ?
Я вообще не могу сообразить , как это должно выглядеть - передача этих чисел в другую программу.
Нужно делать 2 программы или как ? Какую функцию лучше использовать для передачи значений ?
...
Рейтинг: 0 / 0
22.03.2014, 15:11
    #38593589
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7Я вообще не могу сообразить , как это должно выглядеть - передача этих чисел в другую программу.
Судя по формулировке задачи - первая программа получает заголовки(текст) и передаёт другой программе

Сначала получите тексты, следующим шагом будет запуск второй программы (процесса) и передача ей
текста
...
Рейтинг: 0 / 0
22.03.2014, 15:12
    #38593591
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Прочитал про сообщение WM_COPYDATA
для него нужно заполнить структуру COPYDATASTRUCT, в которой находится ссылка на передаваемые данные. Абсолютно не понимаю, как заполнить эту струтктуру , чтобы записать туда хендлы
...
Рейтинг: 0 / 0
22.03.2014, 15:15
    #38593593
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Изопропил, это нужно делать в win32 project ?
допустип , я получил тексты ( пусть уже будут хотя бы числа "хендлы") , как это оформить в WinApi? с консолью то понятно , а вот чтобы в окне это всё было - не совсем
...
Рейтинг: 0 / 0
22.03.2014, 15:17
    #38593594
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
У меня есть проект , который просто выводит пустое окно
Как туда поместить этот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
BOOL CALLBACK fnEnumWindowProc(HWND hwnd,LPARAM lParam){
  fprintf(stdout,"%8.8x\n", (long)hwnd);
  return TRUE;
}
int main(){
  EnumWindows(fnEnumWindowProc, 0);
  return 0;
}



Не пойму , где и что должно распологаться
...
Рейтинг: 0 / 0
22.03.2014, 16:19
    #38593604
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7У меня есть проект , который просто выводит пустое окно
в пустом окне создать listbox,
далее - заполнить его, посылая ему сообщения LB_ADDSTRING
...
Рейтинг: 0 / 0
22.03.2014, 18:40
    #38593667
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Изопропил, спасибо за подсказку
Пока вот только до этого дошёл:
Код: 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.
80.
81.
82.
83.
#include <windows.h>
#include <windowsx.h>
#include <vector>

 
LRESULT CALLBACK HelloWorldWndProc(HWND,UINT,UINT,LONG);
BOOL CALLBACK MyEnum(HWND hWnd,LPARAM lParam);
HWND ListBox1;
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
    char szClassName[]="TMyWindow";
 
    WNDCLASS WndClass;
    WndClass.style=0;
    WndClass.lpfnWndProc=HelloWorldWndProc;
    WndClass.cbClsExtra=0;
    WndClass.cbWndExtra=0;
    WndClass.hInstance=hInstance;
    WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.lpszMenuName=NULL;
    WndClass.lpszClassName=L"MyWindow";
 
    if(!RegisterClass(&WndClass))
    {
        MessageBox(NULL,L"Невозможно зарегестрировать класс окна!",L"Ошибка",MB_OK);
        return 0;
    }
 
    HWND hWnd;
    hWnd=CreateWindow(L"MyWindow",L"MyWindow",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
        CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    if(!hWnd)
    {
        MessageBox(NULL,L"Невозможно создать окно!",L"Ошибка",MB_OK);
        return 0;
    }
 
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
 
    MSG Msg;
    while(GetMessage(&Msg,NULL,0,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
 
    return Msg.wParam;
}
 
BOOL CALLBACK MyEnum(HWND hWnd,LPARAM lParam)
{
    LPTSTR WindowText = " ", str = " ";
    GetWindowText(hWnd, WindowText, 255);
    GetClassName(hWnd,str,255);
    SendMessageA(ListBox1,LB_ADDSTRING,0,(WPARAM)str);
    SendMessageA(ListBox1,LB_ADDSTRING,0,(WPARAM)WindowText);
    return true;
 }
 
LRESULT CALLBACK HelloWorldWndProc(HWND hWnd,UINT Message,UINT wParam,LONG lParam)
{
    switch(Message)
    {
    case WM_DESTROY:
        {
        PostQuitMessage(0);
        }break;\
	case WM_LBUTTONDOWN:
		EnumWindows(MyEnum, 0);
       break;
      case WM_CREATE:
        {

ListBox1=CreateWindowEx(0,L"listbox",0,WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_BORDER|WS_HSCROLL,50,50,650,300,hWnd,0,0,0);
        }break;
        return 0;
    }
    return DefWindowProc(hWnd,Message,wParam,lParam);
}



Но вывести почему-то не получается , пишет , что :error C2440: 'initializing' : cannot convert from 'const char [2]' to 'LPTSTR'

не знаю уже , что и делать
пробовал и без 'LPTSTR' - тоже не получается
Помогите , пожалуйста , с этой проблемой , не знаю, как быть дальше
...
Рейтинг: 0 / 0
22.03.2014, 18:42
    #38593669
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7,

проблема кроется вот в этой строчке :
Код: plaintext
1.
LPTSTR WindowText = " ", str = " ";
...
Рейтинг: 0 / 0
22.03.2014, 18:46
    #38593672
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7
Код: sql
1.
LPTSTR WindowText ="", str ="";


Это должны быть массивы, а не просто указатели.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.03.2014, 18:49
    #38593675
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7
Код: plaintext
1.
2.
3.
    LPTSTR WindowText = " ", str = " ";
    GetWindowText(hWnd, WindowText, 255);
    GetClassName(hWnd,str,255);



исправить грубые ошибки для начала здесь.
потом дело дойдёт до создания и наполнения листбокса
...
Рейтинг: 0 / 0
22.03.2014, 19:00
    #38593679
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Изопропил,массивы значит..
вот так что-ли :
Код: plaintext
1.
2.
3.
4.
5.
char  WindowText [20]; char str [20] ;
    GetWindowText(hWnd, (LPWSTR)WindowText, 255);
    GetClassName(hWnd,(LPWSTR)str,255);
    SendMessageA(ListBox1,LB_ADDSTRING,0,(WPARAM)str);
    SendMessageA(ListBox1,LB_ADDSTRING,0,(WPARAM)WindowText);
...
Рейтинг: 0 / 0
22.03.2014, 19:06
    #38593682
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7,

уже лучше - но почему у массивов - размер 20,
а функциям говорится, что 255?
...
Рейтинг: 0 / 0
22.03.2014, 19:12
    #38593685
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Изопропил, ну да,что-то я ступил) ну да , 255 там , как максимальное число символов

теперь при запуске выводятся какие-то непонятные буквы в список , и через раз запускается )
...
Рейтинг: 0 / 0
22.03.2014, 19:24
    #38593689
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7, и как дальше этот список передать в другую программу ? это нужно отдельно создавать проект для другой проги , в которую буду передавать?
...
Рейтинг: 0 / 0
22.03.2014, 19:38
    #38593695
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7и как дальше этот список передать в другую программу ?
Сначала надо узнать как эта "другая программа" согласна его получать. Если она его никак
не ждёт, то как ни пихай - толку не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.03.2014, 19:45
    #38593699
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7теперь при запуске выводятся какие-то непонятные буквы в список

программа юникодная, а какого то хрена используется SendMessageA

не пиши явно суффикс A или W
для символьного типа используй TCHAR (вместо явного выбора char или wchar_t)

ещё мелкий бак в последнем параметре (LPARAM) а не (WPARAM)
...
Рейтинг: 0 / 0
23.03.2014, 12:03
    #38593869
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Изопропил,мне нужно именно через SendMessage
да, я читал про WM_COPYDATA , но немного запутался с обработкой этого сообщения
вот код программы- отправителя :
Код: 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.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
#include <windows.h>
#include <windowsx.h>
#include <vector>  
 
COPYDATASTRUCT p;  //экземпляр структуры
 
 
 
 
LRESULT CALLBACK HelloWorldWndProc(HWND,UINT,UINT,LONG);
BOOL CALLBACK MyEnum(HWND hWnd,LPARAM lParam);
HWND ListBox1;
HWND hw;
 
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{ 
    WNDCLASS WndClass;
    WndClass.style=0;
    WndClass.lpfnWndProc=HelloWorldWndProc;
    WndClass.cbClsExtra=0;
    WndClass.cbWndExtra=0;
    WndClass.hInstance=hInstance;
    WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.lpszMenuName=NULL;
    WndClass.lpszClassName=L"MyWindow";
 
    if(!RegisterClass(&WndClass))
    {
        MessageBox(NULL,L"Невозможно зарегестрировать класс окна!",L"Ошибка",MB_OK);
        return 0;
    }
 
    HWND hWnd;
    hWnd=CreateWindow(L"MyWindow",L"MyWindow",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
        CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    if(!hWnd)
    {
        MessageBox(NULL,L"Невозможно создать окно!",L"Ошибка",MB_OK);
        return 0;
    }
 
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
 
    MSG Msg;
    while(GetMessage(&Msg,NULL,0,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
 //заполнение структуры
p.dwData=123;
p.cbData=sizeof(ListBox1);
p.IpData=&ListBox1;
//отправка сообщения
 
hw=FindWindow(TEXT("Класс получателя"),TEXT("Получатель"));
SendMessage(hw,WM_COPYDATA,0,(LPARAM)&p);
 
 
    return Msg.wParam;
}
 
BOOL CALLBACK MyEnum(HWND hWnd,LPARAM lParam)
{
    TCHAR  WindowText [255]; TCHAR str [255] ;
    GetWindowText(hWnd, (LPWSTR)WindowText, 255);
    GetClassName(hWnd,(LPWSTR)str,255);
    SendMessage(ListBox1,LB_ADDSTRING,0,(LPARAM)str);
    SendMessage(ListBox1,LB_ADDSTRING,0,(LPARAM)WindowText);
    return true;
 }
 
LRESULT CALLBACK HelloWorldWndProc(HWND hWnd,UINT Message,UINT wParam,LONG lParam)
{
    switch(Message)
    {
    case WM_DESTROY:
        {
        PostQuitMessage(0);
        }break;
    case WM_LBUTTONDOWN:
        EnumWindows(MyEnum, 0);
       break;
      case WM_CREATE:
        {
 
ListBox1=CreateWindowEx(0,L"listbox",0,WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_BORDER|WS_HSCROLL,50,50,200,500,hWnd,0,0,0);
        }break;
        return 0;
    }
    return DefWindowProc(hWnd,Message,wParam,lParam);
}



вот код программы- получителя:
Код: 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.
#include <windows.h> 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND ListBox1; //дескриптор списка
// Главная функция:
int WINAPI WinMain(HINSTANCE hInst, 
                   HINSTANCE hPrevInst, 
                   LPSTR lpCmdLine,
                   int nCmdShow) 
{
    
    HWND hMainWnd; // создаём дескриптор будущего окошка
    MSG msg;
    WNDCLASSEX wc; // создаём экземпляр, для обращения к членам класса WNDCLASSEX
    wc.cbSize        = sizeof(wc); 
    wc.style         = CS_HREDRAW | CS_VREDRAW|CS_DBLCLKS; 
    wc.lpfnWndProc   = WndProc;
    wc.lpszMenuName  =  0; 
    wc.lpszClassName = L"Класс получателя"; 
    wc.cbWndExtra    = NULL; 
    wc.cbClsExtra    = NULL; 
    wc.hIcon         = LoadIcon(NULL, IDI_WINLOGO); 
    wc.hIconSm       = LoadIcon(NULL, IDI_WINLOGO); 
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 
    wc.hInstance     = hInst; 
    if(!RegisterClassEx(&wc)){
       
        MessageBox(NULL, L"Не получилось зарегистрировать класс!", L"Ошибка", MB_OK);
        return NULL; 
    }
    // Функция, создающая окошко:
    hMainWnd = CreateWindow(L"Класс получателя",L"Получатель",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
        CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInst,NULL);
    if(!hMainWnd){
   
        MessageBox(NULL, L"Не получилось создать окно!", L"Ошибка", MB_OK);
        return NULL;
    }
    ShowWindow(hMainWnd, nCmdShow);
    UpdateWindow(hMainWnd);
 
    while(GetMessage(&msg, NULL, NULL, NULL)){ 
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam; 
}
 //обратотка сообщений
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 
   COPYDATASTRUCT *pc;
   switch(uMsg){
    case WM_DESTROY: 
        PostQuitMessage(NULL); 
        break;
        //создание списка в получателе
         case WM_CREATE:
        {    ListBox1=CreateWindowEx(0,L"listbox",0,WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_BORDER|WS_HSCROLL,50,50,300,300,hWnd,0,0,0);
        }
        break;
        //получение данных
         case WM_COPYDATA:
         pc=(COPYDATASTRUCT*)IParam;
         
         /*дальше не знаю, что писать*/
       
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam); 
    }
return NULL; 
}




в программе- получителе я запутался , как обрабатывать сообщение
Код: plaintext
1.
2.
3.
4.
5.
case WM_COPYDATA:
         pc=(COPYDATASTRUCT*)IParam;
         
         /*дальше не знаю, что писать*/
       



как заполнить список?

Помогите, пожалуйста , я не знаю, что дальше нужно делать уже . Заранее спасибо!
...
Рейтинг: 0 / 0
23.03.2014, 12:16
    #38593871
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7,

1-е приложение ничего не выводит на экран,
только заполняет перечень заголовков окон в памяти и передаёт его посредством WM_COPYDATA во второе приложение. 2-е приложение получивши сообщение WM_COPYDATA выделяет из него строки и выводит в листбокс

ну возможно первое приложение должно запустить второе, дождаться появления у него окна и затем выполнить передачу данных
...
Рейтинг: 0 / 0
23.03.2014, 12:40
    #38593879
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
Изопропил,ну хорошо , чтобы 1-е не выводило ничего - убрал WM_CREATE

у меня проблема в другом , не пойму , правильно я передаю информацию, заполняю структуру

Код: plaintext
1.
2.
3.
4.
 //заполнение структуры
p.dwData=123;
p.cbData=sizeof(ListBox1);
p.IpData=&ListBox1;



ругается на IpData

вот это вроде правильно , находит программу- получателя
Код: plaintext
1.
hw=FindWindow(TEXT("Класс получателя"),TEXT("Получатель"));



я просто никогда с таким не сталкивался , сложновато как-то)
...
Рейтинг: 0 / 0
23.03.2014, 12:41
    #38593880
NNN7
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция EnumWindows()
NNN7,
как можно выделить строки во 2-ом приложении?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция EnumWindows() / 25 сообщений из 48, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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