Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » SystemSHUTDOWn einen string übergeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
25.01.2005, 07:52 Uhr
~Suesswarenhaendler
Gast


Hallo, ich möchte ein kleines Prog schreiben (Windows Shutdown Timer). Ich weiß man kann auch eine Shutdown.exe -s -t Verknüpfung erstellen. Ich würde aber die Zeit manuell eingeben lassen. Wie kan ich den der System("....") den String übergeben? Ich dachte mir das ich vom Benutzer einen Zeitwert (Bsp.: 4 Min) eingeben lassen und diesen wandele ich in Sekunden um und möchte diese Variable dann der System("VARIABLE") übergeben. Geht das so?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.01.2005, 08:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


nein, du musst den String zusammenketten und dann komplett in system eingeben, außerdem sollte man System nicht verwenden
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.01.2005, 08:51 Uhr
~Suesswarenhaendler
Gast


Kannst Du mir eine etwas konkretere Antwort geben. Vielleicht ein Bsp.: zum Zusammenketten des Strings? Ich kann mir Deine Antwort nicht so recht in Code umdenken. Wäre nett. Wieso soll man System nicht benutzen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.01.2005, 09:01 Uhr
(un)wissender
Niveauwart


Warum nicht system, steht in der FAQ.
Wenn du C++ nimmt einfach std::string einspluszwei = std::string("eins ") + std::string("zwei");
Mit C strcat.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.01.2005, 09:21 Uhr
~Suesswarenhaendler
Gast


Ich möchte Eingabe variable halten. Geht das wenn ich es so schreibe?

std::string einspluszwei = std::string("Shutdown.exe -s ") + std::string(variable2);

Da Eingabe vom User Bspwse. 4 (4Min) ist dann soll zur Anweisung (Vaiable 1) ja noch die Shutdownzeit hinzukommen Variable2 (4Min). Geht das so?

So das der Systemübergabestring dann so entsteht :

System("Shutdown.exe -s -t 240"); SO SOLL DER Uebergabestring aussehen!
Wie bekommen ich es per Zusammensetzung hin. Bitte helft mir. I need that.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.01.2005, 09:23 Uhr
~Suesswarenhaendler
Gast


Bitte dran denken der Zeitwert soll variable sein. Also eingegeben werden.


.... -t VARIABLE").... DANKE DANKE DANKE.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.01.2005, 09:49 Uhr
enno-tyrant
Frag nicht!


man man man, du hattest doch ausreichende hilfen bekommen:


Code:
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;

int main()
{
    int zeitEingabe, zeitInSekunden;
    string shutdownAusgabe;

    cout << "Geben Sie die Zeit in Minuten ein: ";
    cin >> zeitEingabe;
    zeitInSekunden = zeitEingabe * 60;
    shutdownAusgabe=("shutdown -s -t ")+(zeitInSekunden);
    system(shutdownAusgabe.c_str());
}



sollte es nicht funktionieren, mußt du noch die int-variable in einen string wandeln (dein compiler sagts dir schon)

es ist richtig das 'system()' nicht benutzt werden sollte, aber frag mich nicht was du als ersatz nehmen könntest, evtl. ist etwas in der winapi dabei
--
...um etwas zu verstehen muß man wissen wie es funktioniert...

Dieser Post wurde am 25.01.2005 um 09:55 Uhr von enno-tyrant editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.01.2005, 14:41 Uhr
enno-tyrant
Frag nicht!


du kanst natürlich auch dein eigenes shutdown schreiben:


Code:
#include <windows.h>

BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege );

int main( int argc, char * argv[] )
{
int timeout = 0,force = 1,reboot = 1;//Sekunden,Schnelles Booten,Neustart


{
( SetCurrentPrivilege( SE_SHUTDOWN_NAME, TRUE ) );
}

{
InitiateSystemShutdown( NULL,NULL, (DWORD) timeout, force, reboot );
}


return 0;
}

BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege )
{
HANDLE hToken;
LUID luid;
TOKEN_PRIVILEGES tp, tpPrevious;
DWORD cbPrevious = sizeof( TOKEN_PRIVILEGES );
BOOL bSuccess = FALSE;

if ( ! LookupPrivilegeValue( NULL, Privilege, &luid ) )
return FALSE;

if( ! OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken ) )
return FALSE;

tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = 0;

AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof( TOKEN_PRIVILEGES ), &tpPrevious, &cbPrevious );

if ( GetLastError() == ERROR_SUCCESS )
{
tpPrevious.PrivilegeCount = 1;
tpPrevious.Privileges[0].Luid = luid;

if ( bEnablePrivilege )
tpPrevious.Privileges[0].Attributes |= ( SE_PRIVILEGE_ENABLED );
else
tpPrevious.Privileges[0].Attributes &= ~( SE_PRIVILEGE_ENABLED );

AdjustTokenPrivileges( hToken, FALSE, &tpPrevious, cbPrevious, NULL, NULL );

if ( GetLastError() == ERROR_SUCCESS )
bSuccess=TRUE;
}

CloseHandle( hToken );
return bSuccess;
}


den code habe ich im netz gefunden
--
...um etwas zu verstehen muß man wissen wie es funktioniert...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.01.2005, 15:50 Uhr
Pablo
Supertux
(Operator)


Dabei zu beachten, dass es kein ANSI C Code ist!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
25.01.2005, 16:24 Uhr
enno-tyrant
Frag nicht!


ok stimmt,

aber eine gute alternative zur 'shutdown.exe' (wo das thema ja schon angeschnitten war)
--
...um etwas zu verstehen muß man wissen wie es funktioniert...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: