[X2Go-Commits] [x2goclient] 01/01: Follow-up commit for 5bb4a33. Add forgotten x2gohelper/ folder.
git-admin at x2go.org
git-admin at x2go.org
Wed Jul 9 16:10:25 CEST 2014
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2goclient.
commit 560fe4125e65b12a2e3078123cf98d9ba82db10a
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Wed Jul 9 16:10:05 2014 +0200
Follow-up commit for 5bb4a33. Add forgotten x2gohelper/ folder.
---
x2gohelper/x2gohelper.cpp | 90 +++++++++++++++++++++++++++++++++++++++++++++
x2gohelper/x2gohelper.pro | 14 +++++++
2 files changed, 104 insertions(+)
diff --git a/x2gohelper/x2gohelper.cpp b/x2gohelper/x2gohelper.cpp
new file mode 100644
index 0000000..5f0bd42
--- /dev/null
+++ b/x2gohelper/x2gohelper.cpp
@@ -0,0 +1,90 @@
+/**************************************************************************
+* Copyright (C) 2005-2014 by Oleksandr Shneyder *
+* o.shneyder at phoca-gmbh.de *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program. If not, see <http://www.gnu.org/licenses/>. *
+***************************************************************************/
+#include <iostream>
+using namespace std;
+#include <windows.h>
+#include <TlHelp32.h>
+
+#include <QStringList>
+#include <QProcess>
+#include <QDebug>
+
+void killProcess(DWORD pid)
+{
+ HANDLE handle=OpenProcess(PROCESS_TERMINATE,0,pid);
+ if(!handle)
+ {
+ return;
+ }
+ if(!TerminateProcess(handle,0))
+ {
+ return;
+ }
+ CloseHandle(handle);
+}
+
+void enumerateFromParent(DWORD pid)
+{
+ HANDLE hndl=CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
+ if(hndl==INVALID_HANDLE_VALUE)
+ {
+ qCritical()<<"failed to get system snapshot";
+ return;
+ }
+ PROCESSENTRY32 pentry;
+ pentry.dwSize = sizeof( PROCESSENTRY32 );
+ if( Process32First(hndl,&pentry))
+ {
+ while(Process32Next(hndl,&pentry))
+ {
+ if(pid==pentry.th32ParentProcessID)
+ {
+ enumerateFromParent(pentry.th32ProcessID);
+ killProcess(pentry.th32ProcessID);
+ }
+ }
+ }
+ CloseHandle(hndl);
+}
+
+int main(int argc, char* argv[])
+{
+ QStringList args;
+ //argv[0] is allways "x2gohelper.exe"
+ for(int i=1; i< argc; ++i)
+ {
+ args<<argv[i];
+ }
+ QProcess proc;
+ QString executable="x2goclient.exe";
+ proc.start(executable, args);
+ if(!proc.waitForStarted(4000))
+ {
+ qCritical()<<"Can't start process";
+ return -1;
+ }
+ DWORD pid=proc.pid()->dwProcessId;
+ while(!proc.waitForFinished(300))
+ {
+ QString err=proc.readAllStandardError();
+ QString out=proc.readAllStandardOutput();
+ std::cerr<<err.toStdString();
+ std::cout<<out.toStdString();
+ }
+ enumerateFromParent(pid);
+ return 0;
+}
diff --git a/x2gohelper/x2gohelper.pro b/x2gohelper/x2gohelper.pro
new file mode 100644
index 0000000..1ac685e
--- /dev/null
+++ b/x2gohelper/x2gohelper.pro
@@ -0,0 +1,14 @@
+######################################################################
+# Automatically generated by qmake (2.01a) Di. Jul 8 10:58:26 2014
+######################################################################
+
+TEMPLATE = app
+TARGET =
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += x2gohelper.cpp
+QT -= gui
+CONFIG += static release
+#CONFIG += console
--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
More information about the x2go-commits
mailing list