2012-04-03 8 views
2

ウィンドウをシャットダウンするプログラムを書いてN秒にしたい。シャットダウン窓に私が知っている最も簡単な方法は、XXXXは、与えられた時間である入力した時間にシャットダウンウィンドウに小さなCプログラムを書き込む

shutdown -s -t XXXX 

system()を呼び出すことです。ただし、system()はパラメータとして文字列のみを受け入れます。ユーザーが7200を入力した場合、system("shutdown -s -t 7200")に電話するにはどうすればよいですか?

+4

'system'はこれを行うための最良の方法ではありません。単に['InitiateSystemShutdown'](http://msdn.microsoft.com/en-us/library/windows/desktop/aa376873(v = vs.85).aspx)と呼んでください。 –

+0

あなたはどこにいるのですか?ユーザー入力を取得しますか?それを文字列としてシステムコールに追加しますか?どこか別の場所? – AShelly

答えて

1

代わりにInitiateSystemShutdownを使用します。 となります。ExitWindowsまたはExitWindowsExを使用してください。どちらも、元の質問で尋ねられる遅延を直接サポートしていないため、遅らせるためにコードを追加する必要があります(SetTimerなど)。それは確かに可能ですが、何も返さずに余分な作業をします。

​​
+0

私はExitWindowsを呼び出すと思います。OPには昇格した権限が必要です。 – user7116

+0

@sixlettervariables:コンピュータをシャットダウンしようとすると、InitiateSystemShutdown、ExitWindows(Ex)、またはコマンドラインで 'shutdown'を経由してSE_SHUTDOWN_NAME権限が必要です。編集されたものの、状況に応じてExitWindows(Ex)に対してお勧めします。遅延の後にそれらを使用するには、遅延部分を自分で処理する必要があります。 –

+0

私は['シャットダウンは内部的にそれをします](http://msdn.microsoft.com/en-us/library/windows/desktop/aa376881.aspx)が私が指摘しているすべてです。 – user7116

0

scanf()sprintf()を見てみましょう、例えば:

#define MAX_LENGTH 50 
/* ... */ 
int shutdownTime; 
char shutdownCall[MAX_LENGTH]; 

scanf("%d", &shutdownTime); 
if (shutdownTime < 0) 
    return NEGATIVE_TIME_ERROR; 
sprintf(shutdownCall, "shutdown -s -t %d", shutdownTime); 
system(shutdownCall); 
あなたが systemを使用して主張する場合

、あなたがsystemに渡す文字列を作成するためにsprintf(または類似したもの)を使用することができます

関連する問題