Russian Qt Forum
Ноябрь 25, 2024, 14:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Где найти WTSGetActiveConsoleSessionId?  (Прочитано 3574 раз)
iproute
Гость
« : Ноябрь 15, 2012, 09:27 »

Здравствуйте!

 Возникла такя проблема: в программе необходимо использовать WTSGetActiveConsoleSessionId, но при попытке компиляции выходит сообщение "'WTSGetActiveConsoleSessionId' was not declared in this scope". В msdn написано что нужно подключить заголовок windows.h, но после подключения ошибка остается. Пробовал подключить еще такие заголовки: qt_windows.h, wtsapi32.h и winbase.h. В файле Project.pro добавил следующие строки:
Код:
LIBS += -lkernel32
LIBS += -lwtsapi32
Результата нет.

 Где можно найти WTSGetActiveConsoleSessionId()?
Записан
Serr500
Гость
« Ответ #1 : Ноябрь 15, 2012, 09:40 »

Код:
#define _WIN32_WINNT 0x0501  // Windows XP or above
#include <windows.h>
Записан
iproute
Гость
« Ответ #2 : Ноябрь 15, 2012, 10:09 »

Не работает Грустный((

Вот мой код:
Код:
#include <QtCore/QCoreApplication>

#define _WIN32_WINNT 0x0501  // Windows XP or above
#include <windows.h>

#include <wtsapi32.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    HANDLE sessionID = NULL;

    sessionID = (HANDLE) WTSGetActiveConsoleSessionId();
   
    return a.exec();
}

Project.pro:
Код:
QT       += core

TARGET = Project
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

LIBS += -lkernel32
LIBS += -lwtsapi32
Записан
Serr500
Гость
« Ответ #3 : Ноябрь 15, 2012, 10:24 »

Ежели не работает, то у Вас, скорее всего, компилятор MinGW, который о такой функции не знает. В этом случае её нужно объявлять самому и грузить через QLibrary:
Код:
typedef DWORD (WINAPI * PWTSGetActiveConsoleSessionId)();
QLibrary Kernel32("kernel32");
PWTSGetActiveConsoleSessionId pWTSGetActiveConsoleSessionId =
    (PWTSGetActiveConsoleSessionId)Kernel32.resolve("WTSGetActiveConsoleSessionId");
if (pWTSGetActiveConsoleSessionId)
{
    sessionID = pWTSGetActiveConsoleSessionId();
}
else {
    // Что-то пошло не так.
}
Записан
iproute
Гость
« Ответ #4 : Ноябрь 15, 2012, 10:47 »

Спасибо. Ошибки больше нет.

PS У меня действительно компилятор mingw
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.131 секунд. Запросов: 21.