0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 67
1

Список существующих окон на рабочем столе

15.02.2015, 22:16. Показов 2784. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Используя функции WINAPI создать приложение, которое выводит список всех существующих на рабочем столе окон (их заголовки).

Функции:
GetDesktopWindow
GetWindow
GetWindowText
IsWindowVisible

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
#include "head.h"
 
TCHAR name[] = L"Окно";
TCHAR lpString[];
int nMaxCount;
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
    default:
        break;
    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
 
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR lp, int Show)
{
    WNDCLASS wc;
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;
    wc.hbrBackground=(HBRUSH)COLOR_MENU;
    wc.hCursor=LoadCursor(NULL, IDI_APPLICATION);
    wc.hIcon=LoadIcon(NULL, IDC_ARROW);
    wc.hInstance = hinst;
    wc.lpfnWndProc=WndProc;
    wc.lpszClassName=name;
    wc.lpszMenuName=NULL;
    wc.style= CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&wc);
    HWND hwnd = CreateWindow(name, name, WS_OVERLAPPEDWINDOW, 500, 200, 400, 400, 0, 0, hinst, NULL);
    ShowWindow(hwnd, SW_SHOW);
    UpdateWindow(hwnd);
    GetDesktopWindow();
    GetWindow (hwnd, GW_OWNER);
    
    MSG msg;
    while (GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
Хелпаю, как работать с этими функциями, да и вообще? И куда выведутся заголовки окон?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2015, 22:16
Ответы с готовыми решениями:

Распознавание окон на рабочем столе
Необходимо написать программу, которая в Виндовсе обнаруживает все окна панели, содержимое рабочего...

Перечень существующих и дочерних окон
Прошу помощи уважаемые, вот такое задали: В основном окне приложения WIN32 создать два одинакового...

Координаты мыши на рабочем столе по осям Х и У
Привет! Помогите пожалуйста создать программу которая описана дальше. Перемещая курсор мыши по...

Запустить прогу на другом рабочем столе
Здравствуйте! Как запустить программу на другом рабочем столе. Вот сдесь что прописывать ...

1
55 / 55 / 63
Регистрация: 18.03.2014
Сообщений: 386
15.02.2015, 23:11 2
Я бы посоветовал функцию EnumWindows
Она выведет дескрипторы всех активных приложений

Добавлено через 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
#include<Windows.h>
#define ID_LIST1 1
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam);
HWND hWnd, LBClass, LBParentWndText;
char szName[] = "window";
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
    WNDCLASSEX wincl;
    MSG messages;
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS | CS_DROPSHADOW;
    wincl.cbSize = sizeof(WNDCLASSEX);
    wincl.hIcon = LoadIcon(0, IDI_WINLOGO);
    wincl.hIconSm = LoadIcon(0, IDI_WINLOGO);
    wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = CreateSolidBrush RGB(50, 50, 70);
    if (!RegisterClassEx(&wincl))
        return 0;
    hWnd = CreateWindowEx(NULL, szName, "EnumChildWindows", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, 0, 0, 1050, 545, NULL, NULL, NULL, NULL);
    LBClass = CreateWindow("listbox", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, 415, 5, 400, 500, hWnd, NULL, NULL, NULL);
    LBParentWndText = CreateWindow("listbox", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | LBS_STANDARD | LBS_WANTKEYBOARDINPUT, 5, 5, 400, 500, hWnd, (HMENU)ID_LIST1, hThisInstance, NULL);
    ShowWindow(hWnd, SW_SHOW);
    EnumWindows(EnumWndProc, 0);
    while (GetMessage(&messages, hWnd, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}
BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam)
{
    char    bufftext[100];
    char    buffclass[100];
    GetClassName(hWnd, buffclass, strlen(buffclass));
    GetWindowText(hWnd, bufftext, strlen(bufftext));
    if (strlen(bufftext) == 0)
    {
        return TRUE;
    }
    SendMessage(LBParentWndText, LB_ADDSTRING, 0, (LPARAM)bufftext);
    SendMessage(LBClass, LB_ADDSTRING, 0, (LPARAM)buffclass);
    return TRUE;
}
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_CLOSE:
    {
        PostQuitMessage(0);
        return 0;
    }
    break;
    case WM_COMMAND:
    break;
    default:
        return DefWindowProc(hwnd, message, wParam, lParam);
        break;
    }
    return 0;
}
Вот рабочий код
0
15.02.2015, 23:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2015, 23:11
Помогаю со студенческими работами здесь

Поворот значков на рабочем столе на определенный угол
Тут задача возникла повернуть все значки(ярлыки) на рабочем столе win7 на определенный угол для...

Смена обоев на рабочем столе. Не работает функция
Нужно поменять обои на рабочем столе .вычитал о функции SystemParametersInfo. При попытке ей...

Как отобразить изображение с прозрачным фоном на рабочем столе?
Хочу отобразить изображение с прозрачным фоном, на поверхности рабочего стола, с возможностью его...

Как средствами WinAPI узнать расположение ярлыков на рабочем столе?
Господа как средствами winapi узнать расаположение ярлыков на рабочем столе ?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru