A.Wallner schrieb:
> Ich verwende das Programm XMRIG und möchte den Miner pausieren wenn ich
> ein anderes Aufwendiges Programm auf dem Computer starte.
Bitte entschuldige, aber wenn ich mir Deinen Anwendungsfall so durchlese
und darüber nachdenke, beschleichen mich gewisse Zweifel, ob das, was Du
vorhast, wirklich so eine gute Idee ist. Leider kenne ich mich mit
Windows und Deiner Entwicklungsumgebung ebensowenig aus wie mit dem
Programm, das Du da benutzen möchtest. Insofern kann es sein, daß ich
totalen Unsinn schreibe, dann sei so freundlich, meinen Beitrag bitte
einfach zu ignorieren.
Zunächst ist mir in Deinen Ausführungen ein grundsätzliches
Verständnisproblem aufgefallen, denn was Du aufzurufen versuchst, ist
keine Funktion, sondern eine Methode. Eine Methode unterscheidet sich
insofern von einer Funktion, als eine Methode an eine Datenstruktur --
eine Klasse -- gebunden ist, oder genauer: zur Laufzeit an eine Instanz
einer Klasse. Im Gegensatz zu einer Funktion wird einer Methode als
versteckter Parameter ein Zeiger auf die konkrete Instanz mitgegeben --
in C++ als versteckter Zeiger namens "this". Deswegen geht das hier,
obwohl "this" gar nicht deklariert wird:
[c]
#include <iostream>
class Ding {
public:
Ding(void) {
this->eins = 1;
}
void out(void) {
std::cout << "Ding.eins = " << this->eins << std::endl;
}
private: int eins;
};
int main(void) {
Ding d{};
d.out();
return 0;
}
[/code]
Außerdem ist mir aufgefallen, daß Du das Programm XMRIG sogar selbst
verändert zu haben scheinst, um die gewünschte Funktionalität (nicht
Funktionen, wohlgemerkt) hinzuzufügen. Natürlich, das kann man machen,
aber sowas erscheint mir in einer objektorientierten Sprache wie C++ ein
bisschen... merkwürdig. Du könntest doch einfach von der Miner-Klasse
erben und dann ganz einfach Deiner geerbten Klasse die gewünschte
Funktionalität hinzufügen? Das hätte auch den Vorteil, daß Du die Basis
lediglich mit "git pull" aktualisieren, die gesamte Software
neuübersetzen und -installieren mußt, ohne an der Basis etwas patchen zu
müssen.
Aber gut, das waren bisher nur Details, denn tatsächlich würde ich an
Deiner Stelle schon grundsätzlich in eine ganz andere Richtung denken.
Nämlich viel grundsätzlicher: was für ein Programm läuft eigentlich,
wenn es gerade keine Benutzerinteraktion gibt? Genau: ein
Bildschirmschoner... und so gibt es nun bereits eine Reihe von
"Rechenprogrammen" wie zum Beispiel Seti@Home, die es haargenau so
machen.
Ob das unter Windows mit C++ geht und wie es möglich ist, weiß ich
nicht, da ich mich damit, wie gesagt, nicht auskenne. Unter einem
UNIXoiden wie Linux würd ich mir dazu allerdings einen kleinen
Python-"Bildschirmschoner" mittels den Modulen "subprocess" (ein
Builtin) und "psutil" (ein externes Modul) bauen, und es als
Bildschirmschoner einrichten, das etwa Folgendes macht:
1 | Wenn ich beendet werde:
|
2 | schicke "XRMPP" schlafen
|
3 | Wenn "XRMPP" nicht läuft:
|
4 | starte "XRMPP" im Hintergrund
|
5 | Ansonsten:
|
6 | wecke "XRMPP" auf
|
Auf diese Weise kannst Du die Features Deines Betriebssystems benutzen
(und im Zweifelsfall sogar mit dem Bildschirmschoner Statistiken oä.
darstellen), ohne irgendetwas an XRMPP verändern zu müssen.
Wie gesagt, ich kenne mich mit Windows und dem ganzen Gerümpel nicht
aus, aber vielleicht ist das ein eleganterer Weg. Bestimmt geht da auch
etwas mit dieser Powershell, Win-C++, Win-C# oder Visual Basic...
HTH, YMMV. ;-)