Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

23zaycev

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. При разборе очередного модуля нужно добавить UI-интерфейс или QWidget для добавления нужных элементов. Можете что посоветовать? Спасибо.
 
main.cpp  
 

Цитата:
#include "VeyonCore.h"
 
#include <QCoreApplication>
#include <QAbstractNativeEventFilter>
#include <QWidget>
#include <QMainWindow>
 
#include "WindowsService.h"
#include "ComputerControlServer.h"
#include "VeyonConfiguration.h"
 
 
#ifdef VEYON_BUILD_WIN32
static HANDLE hShutdownEvent = NULL;
 
// event filter which makes ICA recognize logoff events etc.
class LogoffEventFilter : public QAbstractNativeEventFilter
{
public:
    virtual bool nativeEventFilter( const QByteArray& eventType, void *message, long *result)
    {
        Q_UNUSED(eventType);
        Q_UNUSED(result);
 
        DWORD winMsg = ( ( MSG *) message )->message;
 
        if( winMsg == WM_QUERYENDSESSION )
        {
            qInfo( "Got WM_QUERYENDSESSION - initiating server shutdown" );
 
            // tell UltraVNC server to quit
            SetEvent( hShutdownEvent );
        }
 
        return false;
    }
 
};
 
#endif
 
 
int main( int argc, char **argv )
{
 
    // decide in what mode to run
    if( argc >= 2 )
    {
#ifdef VEYON_BUILD_WIN32
        for( int i = 1; i < argc; ++i )
        {
            if( QString( argv[i] ).toLower().contains( "service" ) )
            {
                WindowsService winService( "VeyonService", "-service", "Veyon Service",
                                            QString(), argc, argv );
                if( winService.evalArgs( argc, argv ) )
                {
                    return 0;
                }
                break;
            }
        }
#endif
    }
 
    QCoreApplication app( argc, argv );
 
    VeyonCore core( &app, QStringLiteral("Service") );
 
    // parse arguments
    QStringListIterator argIt( app.arguments() );
    argIt.next();
 
    while( argc > 1 && argIt.hasNext() )
    {
        const QString a = argIt.next().toLower();
 
        if( a == QStringLiteral("-session") && argIt.hasNext() )
        {
            int sessionId = argIt.next().toUInt();
            if( sessionId > 0 )
            {
                core.config().setPrimaryServicePort( core.config().primaryServicePort() + sessionId );
                core.config().setVncServerPort( core.config().vncServerPort() + sessionId );
                core.config().setFeatureWorkerManagerPort( core.config().featureWorkerManagerPort() + sessionId );
            }
        }
    }
 
#ifdef VEYON_BUILD_WIN32
    hShutdownEvent = OpenEvent( EVENT_ALL_ACCESS, false, L"Global\\SessionEventUltra" );
    if( !hShutdownEvent )
    {
        // no global event available already as we're not running under the
        // control of the veyon service supervisor?
        if( GetLastError() == ERROR_FILE_NOT_FOUND )
        {
            qWarning( "Creating session event" );
            // then create our own event as otherwise the VNC server main loop
            // will eat 100% CPU due to failing WaitForSingleObject() calls
            hShutdownEvent = CreateEvent( NULL, false, false, L"Global\\SessionEventUltra" );
        }
        else
        {
            qWarning( "Could not open or create session event" );
        }
    }
 
    LogoffEventFilter eventFilter;
 
    app.installNativeEventFilter( &eventFilter );
#endif
 
    auto server = new ComputerControlServer;
    server->start();
 
    qInfo( "Exec" );
 
    int ret = app.exec();
 
    delete server;
 
    qInfo( "Exec Done" );
 
#ifdef VEYON_BUILD_WIN32
    CloseHandle( hShutdownEvent );
#endif
 
    return ret;
}
 

 
P.S.: исходный проект называется Veyon rev.4.0.4, модуль service. Собирался проект в Qt через CMakeLists.txt. Добавлять файл в проект(к примеру, UI) отказывается(ПКМ->"Добавить новый...").

Всего записей: 1 | Зарегистр. 23-04-2018 | Отправлено: 16:16 23-04-2018 | Исправлено: 23zaycev, 16:17 23-04-2018
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru