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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tommy
Сообщений: n/a
#1

Как мне вызвать GetGuiResources в консольном приложении VS6? - C++

03.06.2011, 14:51. Просмотров 840. Ответов 3
Метки нет (Все метки)

Приветствую!
Подскажите плиз, как мне вызвать GetGuiResources в консольном приложении VS6. Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
#include <winuser.h>
 
HWND hWnd;
DWORD dwProcID;
HANDLE hProcess;
DWORD dwGDI;
 
int main()
{
    hWnd = FindWindow('SciCalc', 'Calculator'); 
    GetWindowThreadProcessId(hWnd, &dwProcID);  
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID);
    //TerminateProcess(hProcess, 0);
    
    dwGDI = GetGuiResources(hProcess, GR_GDIOBJECTS);
 
    return 1;
}
При компиляции я вижу сообщение warning C4013: 'GetGuiResources' undefined , хотя она описана в winuser.h
Что я упустил?

Спасибо.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2011, 14:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как мне вызвать GetGuiResources в консольном приложении VS6? (C++):

Как реализовать многопоточность в консольном приложении С++ - C++
Добрый день уважаемые программисты и системные администраторы! Я начинающий программист на С++ и мне необходимо написать программу в...

Как реализовать таймер в консольном приложении? - C++
И как-нибудь без while и sleep, чтобы программа не висела. Пытался делать через winapi, но не понял как функцию, выполняемую при &quot;тикании&quot;...

Как создать окно в консольном приложении? - C++
Я начинающий программист СИ++ в CODE::BLOCKS Можно ли создавать консольные приложения, которые будут выводить окна наподобие того, что...

Как очистить экран в консольном приложении ? - C++
*

Как сменить шрифт в консольном приложении? - C++
вот пытался поменять шрифт так, вышло то что видите, шрифт стал гигантским, обратно не возвращается, менял размер шрифта и окна толку ноль,...

Как в консольном приложении замутить сохренение? - C++
1)сморите такой трабл КейГен тоесть узнаёт ключи для привязки программы! Я замутил один! И даже замутил сохранение! Но для моей...

3
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
04.06.2011, 02:30 #2
Предлагаю найти GetGuiResources в user32.dll:
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
#define GR_GDIOBJECTS     0 
#define GR_USEROBJECTS    1 
 
DWORD (*GetGui_Resources)(HANDLE hProcess,DWORD uiFlags);
HWND hWnd;
DWORD dwProcID;
HANDLE hProcess;
DWORD dwGDI;
 
int main()
{
 
    hWnd = FindWindow('SciCalc', 'Calculator'); 
 
    GetWindowThreadProcessId(hWnd, &dwProcID); 
 
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID);
    
    HMODULE hLib=LoadLibrary('user32.dll');
    if (hLib)
    {
        GetGui_Resources=(DWORD (*)(HANDLE,DWORD))GetProcAddress(hLib,'GetGuiResources');
        if (GetGui_Resources)
        {
            dwGDI = GetGui_Resources(hProcess, GR_GDIOBJECTS);      
        }
        FreeLibrary(hLib);
    }
    return 1;
}
0
tommy
Сообщений: n/a
10.06.2011, 16:21 #3
Спасибо большое! С импортом функции из User32.dll всё работает замечательно. пришлось только подправить тип возвращаемого значения GetGuiResources, так что теперь код выглядит так:
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
#include <windows.h>
#include <winuser.h>
#include <stdio.h>
 
#define GR_GDIOBJECTS   0 
#define GR_USEROBJECTS  1 
 
typedef DWORD (CALLBACK* UTYPE)(HANDLE hProcess,DWORD uiFlags);
 
HWND hWnd;
DWORD dwProcID, dwGDI;
HANDLE hProcess;
HMODULE hLib;
UTYPE Get_Gui_Resources;
 
int main()
{
    hWnd = FindWindow('SciCalc', 'Calculator');     GetWindowThreadProcessId(hWnd, &dwProcID); 
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcID);
    
    hLib = LoadLibrary('C:\WINNT\System32\user32.dll');
    if (hLib)
    {
    
        Get_Gui_Resources = (UTYPE)GetProcAddress(hLib,'GetGuiResources');
        if (Get_Gui_Resources)
        {
            dwGDI = Get_Gui_Resources(hProcess, GR_GDIOBJECTS);
            printf('%i', dwGDI);
 
        }
        FreeLibrary(hLib);
    }
    return 1;
}
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
13.06.2011, 02:35 #4
Всегда пожалуйста.
0
13.06.2011, 02:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2011, 02:35
Привет! Вот еще темы с ответами:

Как в консольном приложении скрыть курсор мыши? - C++
Добрый вечер, Как в Win32 Console Application скрыть курсор мышки (не каретку ввода).

Как использовать манипулятор flush в консольном приложении с++ - C++
Подскажите как пользоватся данный манипулятором в библеотеке iostream, и за что он отвечает.

Как в консольном приложении узнать текущую директорию? - C++
Пишу в Visual C++ 2008.

Как обрабатывать посылаемые виндовс сообщения, в консольном приложении? - C++
С использованием библиотеки windows.h Нужно в консольном приложении обрабатывать сообщения, например, нажатия клавиши, и тд...


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

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

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