Code Monkey home page Code Monkey logo

Comments (5)

jrouwe avatar jrouwe commented on May 25, 2024 1

Ok, I'll look into it.

from joltphysics.

jrouwe avatar jrouwe commented on May 25, 2024 1

I've added your code to the sample app and I can verify that it works if I pick a random service, but as I don't have Parsec myself I would appreciate if you can confirm that this indeed works for you.

Thanks!

from joltphysics.

ivte-dev avatar ivte-dev commented on May 25, 2024 1

Works perfectly now for my remote setup, thank you very much!

from joltphysics.

jrouwe avatar jrouwe commented on May 25, 2024

Is there no way to detect this programmatically? (I don't have Parsec)

I guess a command line can be added, but my guess is also that nobody is going to find out about it.

from joltphysics.

ivte-dev avatar ivte-dev commented on May 25, 2024

Not sure if there is a precise way to do that, but an imprecise way would be to check if "Parsec" service is running.

That would result in false positives (the same service is running on both hosts and clients), but IMO that's the lesser of two evils. If someone is running both Parsec service and Jolt samples on the same machine, chances are pretty high that they do it on a remote work machine, and if not, it's not that big of a deal anyway.

So, something like this (the code can be tested with any running service, not necessarily "Parsec"):

bool isServiceRunning(const char* serviceName) {
    bool isRunning = false;
    if (SC_HANDLE manager = OpenSCManager(nullptr, nullptr, SC_MANAGER_CONNECT)) {
        if (SC_HANDLE service = OpenServiceA(manager, serviceName, SERVICE_QUERY_STATUS)) {
            SERVICE_STATUS status;
            if (QueryServiceStatus(service, &status)) {
                isRunning = status.dwCurrentState == SERVICE_RUNNING;
            }
            CloseServiceHandle(service);
        }
        CloseServiceHandle(manager);
    }
    return isRunning;
}

It can be called on startup with isServiceRunning("Parsec") and cached together with GetSystemMetrics(SM_REMOTESESSION) (likely no reason to re-run the checks on every frame).

Unfortunately, it looks like everything Parsec is doing is symmetric for hosts and clients. For example, both will have "Parsec Virtual Display Adapter" connected all the time, etc., so if there is a robust way to tell them apart, I'm not aware of it.

from joltphysics.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.