MSDOS(バッチファイル)を使ったプロセス優先度の変更方法

このQ&Aのポイント
  • MSDOS(バッチファイル)を使用して、Windowsタスクマネージャでのプロセス優先度設定を変更する方法について教えてください。
  • また、VisualC++を使用してプログラミングによってプロセス優先度を変更する方法も教えてください。
  • 具体的には、バッチファイルで既に起動しているアプリイメージの優先度を変更する方法と、C++で作成したアプリ自体の優先度を変更する方法について教えてください。
回答を見る
  • ベストアンサー

MSDOS(バッチファイル)でプロセス優先度変更は

Windowsタスクマネージャのプロセス内で、右クリックして出てくる優先度の設定 リアルタイム 高 通常以上 通常 通常以下 低 をMSDOSのバッチファイルを使って変更する方法ってあるでしょうか。 たとえばイメージを削除するtaskkillのように。 複数のアプリを今はいちいち手動で変更しているのでめんどくさいです。 もし、バッチファイルでできないのなら、というより、こちらも是非知りたいのですが、VisualC++で、プログラミングでこれらを変える方法も教えてください。 こちらの場合は、既に起動しているアプリイメージを変更する場合と、C++でアプリを作成して、それ自身を起動した場合、自分自身の優先度を変更する場合の双方がわかればうれしいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • struct
  • ベストアンサー率72% (32/44)
回答No.1

プロセスの起動時に設定するのが一番簡単です。 例えばメモ帳を高優先度で起動: start /high %SystemRoot%\notepad.exe 既に起動している場合は wmic を使ってください: wmic process where name="notepad.exe" call setpriority 128 wmic.exe を搭載していない Windows を使っているなら PrcView に付いてくる pv.exe でも使ってください。 他にも探せばあります。 C言語の場合は、新しいプロセスを作る CreateProcess() の引数 dwCreationFlags に優先度を指定するオプションがあります。 http://msdn.microsoft.com/ja-jp/library/cc429066.aspx 既に起動している場合は、 SetPriorityClass() で変更します。 http://msdn.microsoft.com/ja-jp/library/cc429331.aspx プロセス・ハンドルは、EnumProcess() か CreateToolhelp32Snapshot() で探してください。 http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200407/04070064.txt 自分自身のハンドルは GetCurrentProcess() で取れます。 C++/CLI を使った .NET Framework でも おそらく同様のことが(もっと簡単に)できますが 専門外なのでわかりません。

chachakabu
質問者

お礼

お返事ありがとうございました。 なかなか誰からも返事がないので、あきらめかけていたところでした。 大変よくわかりました。 早速、利用させていただきます。

関連するQ&A

  • プロセス起動時の優先度の設定

    XPにおける下記の設定方法なんですが、 cmd /c start ""優先度 /D"実行プログラムのパス" 実行プログラム 実行プログラムへのオプション /LOW 優先度「低」でアプリケーションを起動させる。 /BELOWNORMAL 優先度「通常以下」でアプリケーションを起動させる。 /NORMAL 優先度「通常」でアプリケーションを起動させる。 /ABOVENORMAL 優先度「通常以上」でアプリケーションを起動させる。 /HIGH 優先度「高」でアプリケーションを起動させる。 /REALTIME 優先度「リアルタイム」でアプリケーションを起動させる VISTAではなぜか /HIGH /REALTIME両方とも/ABOVENORMALになっちゃいます。 コマンドがわかる方いらっしゃいますでしょうか?

  • バッチファイルでの解像度変更

    あるソフトを利用しているのですが、起動する際に解像度をXGA(1024x768)に変更する必要があり、現在は手動で画面のプロパティを開き変更しています。 使用後は、再び普段使用している解像度に戻すなど、非常に手間がかかります。 そこで、WindowsVistaで解像度を変更するバッチファイルなどは作成できるのでしょうか? 理想は、デスクトップにバッチファイルのショートカットを作成し、ダブルクリックすると解像度が変わるような仕組みを探しています。 ご存知の方がいらっしゃいましたら、どうぞご教授ください。

  • Windowタスクマネージャのプロセス優先度設定

    今、複数のアプリを立ち上げて仕事をしています。 アプリをA,Bとします。 アプリAがときどき、非常に重くなり、これだけでCPU負荷100%を食ってしまうことがあります。 ですが、アプリBは使う頻度は少ないのですが、常時起動しておいて、使うときは極めて重要で、アプリAでCPU100%消費しているときに、Bを使おうとしても、なかなか、これが動かなく、極めて重たくなってしまいます。 そこで、最近、見つけたのが、Windowタスクマネージャで右クリックして出てくるなかでの優先度設定です。 ここには、 リアルタイム 高 通常以上 通常 通常以下 低 とあり、ほとんどのアプリは通常になっていました。 ここで、アプリBを、通常以上にしてみましたところ、アプリAが100%CPUを使っているときでも、問題なく軽く動くようになりました、 しかし、通常以上に設定したとき下記の警告がでます。 ”システムが不安定になるなど予期しない結果になることがあります” 普通の一般的なアプリについて、通常以上、通常、 通常以下で設定を変えることは、どうなのでしょうか。 今のところ特に大きな問題は起きてはいないのですが。 また、高、低にするとさすがに怖いのかな。。。 最後に、わたしは今、ウイルスバスターを使用しています。 しかし、ときどきこれがバックグラウンドで動いて、めっちゃ重たくなることがあります。 本来、ウイルスバスターみたいなものは優先順位を低くして動かすように設計すべきものと認識しているのですが、これらを通常以下に設定すると、問題が生じるのでしょうか。 以上、よろしくお願いいたします。

  • タスクマネージャーのプロセスの優先度の変更について

    タスクマネージャーのプロセスで、優先度の設定ができますよね?あるソフトの優先度を変更したんですが、このソフトを終了するたびに優先度の設定が元に戻ってしまいます。このソフトを起動するたびに優先度を変更するのは面倒なのですが、一回変更したら、その設定がずっと続くようにできませんか?

  • taskkill をバッチ処理できない。

    バッチファイルを作って、taskkillを実行しようとしましたが、出来ません。 ファイル名は、たとえば、task.bat 中身には、 taskkill /F /im imagename と入れました。 これで実行すると、MSDOSウインドウが開いてバッチ処理が開始されますが、 taskkill /F /im imagename が、永遠に連続して繰り返し現れて、いつまでたっても終わりません。 また、kill 自身も実行されておりません。 copy コマンドなどでは、問題なくできます。 MSDOSプロンプトを手動で開いて、手で入力して実行すると、問題なくKillできます。 なぜでしょうか。

  • プロセスの基本優先度の保存

    起動しているプロセスの優先度をタスクマネージャから変更しています。 この優先度を保存して、特定のプロセスが起動すると自動的にその優先度に設定されるようにするにはどうすればよいでしょうか。

  • アプリの優先度の設定

    アプリの優先度の設定で(タスクマネージャーアプリの優先度の設定)で 通常以上に設定しても 一度閉じてしまって そのあとに開くと もとに戻ってしまっているのは 起動している時にみ設定をかえられるということ なのでしょうか? もし そうならば PCを起動するたびに あるアプリに対する優先度を 毎回 通常以上に設定する方法はありますでしょうか? また 優先度の設定自体があまりPCには よくないというのを見たことありますが その辺は どうなんでしょうか? 設定 または ソフトを使用しての方法 どちらでもかまわないので 教えてください

  • MSDOSバッチファイル変数 %~ 0に関する質問

    MSDOSのバッチファイルの中で参照する 「%~…0」の記述について よく分からないことがありますので教えてください。 具体的には、 「バッチファイル自身をフルパスで展開する変数 : %~f0」 https://logicalerror.seesaa.net/article/125426672.html というサイトに記載されている説明の中で、 (質問1) 「param_check.bat」のコードの「echo a : %~a0」の部分ですが、 %~a0 は --a-------- というように11箇所の属性が表示されているようなのですが、 左から3番目の「a」の部分は、 「attrib」コマンドで表示されるアーカイブ属性(A)だと思われますが、 他の部分(左から1,2,4~11番目の部分)には、 どのような属性が割り当てられているのでしょうか。 (質問2) 「param_check.bat」のコードの「echo 検索 : %~$THIS:0」の部分ですが、 「%THIS%」の部分は「C:\user\lightbox\bat\」で、 「%~0」の部分は「param_check.bat」になっていると思われますが、 この結果だけを見ると、 %THIS%と%~0が結合されただけのようにしか見えませんが、 この部分は何をしているのでしょうか。 説明では検索しているということらしいのですが、 どの部分が検索になっているのでしょうか。 (何の中の何を検索しているのでしょうか) よろしくお願いします。(Windows10)

  • 画面の解像度の設定変更バッチファイルについて

     DELLのノートパソコンユーザーです。 PC起動後、勝手に画面の解像度が「小(800×600ピクセル)」になるため 画面のプロパティで「大(1024×768ピクセル)」に変更してから使用しています。 やりたいことは次の一点です。 ■バッチファイル(他でも良いですが)をクリックすると、画面の解像度が 「大(1024×768ピクセル)」に変更される。 もし、このようなことが出来る記述があれば教えていただけないでしょうか。 よろしくお願いします。

  • WinXPです。 pskill でのバッチファイルが有効になりません。

    WinXP SP2 Proです。 pskill でのバッチファイルが有効になりません。 内容は以下です。 MSのpskill.exe を入れました。 @echo off pskill calc.exe はじめは、ちゃんと電卓が閉じました。 しかし、今は、バッチファイルをダブルクリックすると コンマ1秒くらいコマンドプロンプトみたいな画面が一瞬見える だけで、何も起こりません。電卓は閉じなくなりました。 他のソフトでも試しましたが、全て閉じません。 ちなみに、今でも以下のバッチファイルは正常に動作します。 電卓が起動します。 pause>NUL start calc.exe pskillで書かれたバッチファイルを正常動作させる方法を 教えてください m(_ _)m taskkillでも電卓は閉じませんでした。

専門家に質問してみよう