• ベストアンサー

C言語で常駐ソフトを作成

C言語を利用して常駐ソフトを作成したいと考えています。 目標としては、タイマー付きの自動でパソコンをシャットダウンするソフト等を作りたいと思っています。 作成方法、または作成方法が記載されているHP等を教えていただければ幸いです。 自分のスキルとしては、ポインタ、構造体等も理解しているつもりです。 ソフトとしては、テキストファイル編集ソフトくらいしか作った事がありません。 しかしC言語以前にJavaを扱っていて、Appletを用いてスペースインベーダー(もどき)を作ったり、メール送信ソフトを作ったりした事があります。 (Javaでやれば?と思った人がいたらJavaでのやり方も教えていただけるとありがたいです^^; ) OS: WIndowsXP Professional 開発環境: BorlandC++ エディタ: CPad for Borland C++Compiler を使っていますが、 VisualStudio2005もあります。 (テキストファイルを読み込み、編集して出力するソフト等の非常に軽いソフトしか作った事がないためVisualStudioは起動が遅くて不快だったため使用した事はあまりありません^^; ) よろしくお願いします。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.8

★補足に対するアドバイス >ちなみにですけど、このような事を初歩から学べるような本を >知っていたら教えて欲しいんですが・・・。  ↑  http://www.amazon.co.jp/dp/4797325453/→『Windowsゲームプログラミング』  http://www.amazon.co.jp/dp/4797328487/→『猫でもわかるWindowsプログラミング 第2版』  本屋やネット『cbook24』や『Amazon』さんで見つけましょう。  初歩から学べて分かりやすい本として2冊紹介しました。 >また、これはWindowsプログラミングというものなのですか?  ↑  http://www.amazon.co.jp/dp/4789836908/→『Win32API完璧マスタ―Visual C++プログラミング』  http://www.amazon.co.jp/dp/4875934394/→『Win32 APIのしくみ―Windows開発環境「C++、VB、Delphi、VB.NET」からの利用法』  こちらも探せばたくさんありますが、全体的に金額が高いです。  だから MSDN サイトを活用すれば無料です。  http://msdn2.microsoft.com/ja-jp/library/default.aspx→『MSDN ライブラリ』  ここで API 関数などを検索してマニュアルを読むわけです。  ※無料なので活用しましょう。日本語サイトです。英語サイトもあるけど。 小技集: ・小技集(サンプル集)の本やサイトを紹介します。  http://www.expertmg.co.jp/html/cti/vctips/index.htm→『VC++によるWin32プログラミングTips』  http://katsura-kotonoha.sakura.ne.jp/prog/win.shtml→『Windows API』  http://sapporo.cool.ne.jp/tanomi/→『BCBQ&A』  http://www.alpha-net.ne.jp/users2/junchoon/tips000.html→『Win32 tips [山内狂団]』  http://www14.big.or.jp/~ken1/tech/tech.html→『Windows プログラミング テクニック集』  http://www.geocities.jp/skynet3113/data/index.html→『WinTips ジャンル一覧』  http://www.arcpit.co.jp/winapi/api_01/index.htm→『1.APIの基本(Windows API Topics)』 お勉強サイト: ・『猫でもわかるプログラミング』は回答者 No.7 さんが紹介しているため省きます。  http://wisdom.sakura.ne.jp/system/winapi/→『Win32 API入門』  http://nienie.com/~masapico/sample_index.html→『Win32 サンプル集』  http://nienie.com/~masapico/api_index.html→『API別 Win32 サンプル集』  http://www.geocities.jp/ky_webid/win32c/index.html→『Win32API(C言語)編』 ・探せばいろいろ見つかります。 その他: ・ネット検索のコツを紹介します。  (1)日本語で探すときは語尾に『とは』を付けて検索。→例『常駐ソフトとは』  (2)関連しそうな API 関数名で検索。  (3)関連しそうな API で使う構造体名や共用体名で検索。  (4)関連しそうな WM_XXX メッセージなどで検索。  (5)関連しそうなマクロ関数名などで検索。  (6)その他は自分で検索術を探す意欲かな。 最後に: >常駐ソフトの作成方法がわかれば教えてください。お願いします。  ↑  これは既に回答が No.6(zwi)さんでありますね。  常駐ソフトといっても難しくはないのです。 ・単純に  (1)常に表示されるウインドウではなくて非ウインドウを持つのが基本。  (2)メニューなどを出すためにタスクトレイにアイコンを表示。  (3)タスクトレイのアイコンよりメニューやダイアログなどを出す仕組み。  (4)他にもタスクトレイにもアイコンを出さずに2度プログラムを起動したときに   メニューやダイアログを出すタイプも作れます。トレイアイコンを増やしたくない   場合は有効です。 ・まずは『非ウインドウ』と『タスクトレイ・アイコン』から検索、実装して下さい。 参考資料: http://www.expertmg.co.jp/html/cti/vctips/icon.htm→『アイコンをシステムトレイに表示させる』 http://www.expertmg.co.jp/html/cti/vctips/process.htm→『多重起動を防止する』 http://www.expertmg.co.jp/html/cti/vctips/menu_toolbar.htm→『ポップアップメニューを表示させる』 以上。

参考URL:
http://katsura-kotonoha.sakura.ne.jp/prog/win.shtml
kazu7929
質問者

お礼

たくさんのURL教えていただきありがとうございます。 また、丁寧に検索方法まで教えていただき、非常に勉強になりました。 これでより頑張れそうです!ありがとうございます!

その他の回答 (8)

  • furyfox
  • ベストアンサー率56% (58/103)
回答No.9

作成方法については 既に回答にあがっている「猫でもわかる~」が参考になると思います。 参考になるというより勉強するといった感じでしょうか。 一通り、Windowsプログラミングを学べば常駐プログラムも作れます。 常駐するかどうかは単に、ウインドウの表示があるかどうかというだけの話ですし 後はタスクトレイアイコンに表示するかどうかやサービスとして起動できるようにするかどうか 等です。 >テキストファイルを読み込み、編集して出力するソフト等の非常に軽いソフトしか作った事がないためVisualStudioは起動が遅くて不快だったため使用した事はあまりありません^^; 別にVC++のコンパイル自体はコマンドラインから行えるので slnファイルを扱う時だけVCを開いて 他は秀丸等のエディタで書けばよいんじゃないでしょうか? (nmakeを使うならそのslnファイルさえ不要だと思います。)

kazu7929
質問者

お礼

たしかにウィンドウの表示があるかないかだけの違いですね・・・ 他の人の意見を聞く事はとても参考になりますね。 VisualStudioは起動遅いですよねw 「猫でもわかるプログラミング」を読んで勉強しようと思います!ありがとうございました!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.7

#1のzwiです。 >また、これはWindowsプログラミングというものなのですか? WindowsAPI(Win32API)を使ったWindowsプログラミングになります。 これは、BCC(Borland C++Compiler)でもVisualStudio2005でもプログラミング可能です。 お使いのVisualStudio2005は無料のExpress Edtionでしょうか? Express Edtionは、無料なためMFCというクラスライブラリとリソースエディタが使用できません。 MFCはWin32APIをパッケージ化してC++のクラス化したもので、クセはありますが慣れると効率よくWinアプリを作成できるライブラリです。 リソースエディタは、GUIでウィンドウフォームを作成できる便利な機能ですが、これも削られています。 BCCに比べてメリットは、統合環境なのでmakefileが不要、デバッガが標準で付いている点でしょうか。 デメリットとして、VisualStudio2005からUNICODEが標準になったので、文字列の記述が面倒になったこと、openとかがセキュリティ上問題があるので必ず警告されるようになった事、やはりBCCに比べて重いことでしょうか。 WindowsAPIを使う限りは、プログラミングの手間は似たようなものです。どちらを使うのかの参考までに。 参考になりそうなサイトは、 「猫でもわかるプログラミング」で大半はBCCでもそのままコードが使えるはずです。本も多数出てます。 http://www.kumei.ne.jp/c_lang/

kazu7929
質問者

お礼

よくわかりました。ありがとうございます。 また、返信遅れてしまいもうしわけありません。(私用のため・・・) ちなみにVisualStudio2005は有料のものです。 「猫でもわかるプログラミング」を読んで参考にしたいと思います。 ありがとうございました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.6

#1のzwiです。 常駐ソフトというのは、タスクトレイ(通知領域)にアイコンを表示したり、Xボタンで直ちに終了しないようにしたり、起動時はウィンドを表示しないようにする事で良いですか? 参考になりそうなのを幾つか紹介します。 http://support.codegear.com/article/35942 http://www.geocities.co.jp/siliconvalley/4805/bcbtips/bcbtips026.htm これもVC++だと情報が多いんですけど。BCB,BCC関係は少ないですね。

kazu7929
質問者

補足

まさにそれです! とても参考になります。ありがとうございます。 VC++で頑張ってみようかと思います。 ちなみにですけど、このような事を初歩から学べるような本を知っていたら教えて欲しいんですが・・・。 また、これはWindowsプログラミングというものなのですか?

  • maguro999
  • ベストアンサー率21% (59/273)
回答No.5

適当なキーワードとWin32APIで だいたいの情報はそろうと思うけど 質問者はいったいなにがわからないのだろうか? 例 http://www.google.co.jp/search?q=%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%80%80Win32API&start=0&ie=utf-8&oe=utf-8&client=firefox&rls=org.mozilla:ja:official http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=ko9&q=%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%80%80Win32API&btnG=%E6%A4%9C%E7%B4%A2&lr= >(Javaでやれば?と思った人がいたらJavaでのやり方も教えていただけるとありがたいです^^; JavaからWin32APIを呼び出せばいいだけ

kazu7929
質問者

補足

その適当なキーワード(Win32API)がわからずに苦戦していました。 初心者のため知識があまりなく何を調べればいいのかよくわからなかったのです。 とても参考になりました。ありがとうございます。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★アドバイス >目標としては、タイマー付きの自動でパソコンをシャットダウンするソフト等を作りたいと思っています。  ↑  タイマー処理は SetTimer()、KillTimer()、WM_TIMER を使います。  非常に簡単です。簡単すぎて驚きます。  ※ネットで検索すると直ぐにでもサンプルが見つかります。 >パソコンをシャットダウン  ↑  ExitWindowsEx() 関数を使います。  Windows 95、98、Me 系は ExitWindowsEx() だけでシャットダウンが出来ます。  Windows NT、2000、XP、Vista 系はシャットダウンするための特権モードなどを  取得する必要があります。ちょっと複雑かな。 ・下にサンプルを載せておきます。 サンプル: // Windowsのシャットダウンを実行 static BOOL myExitWindowsEx( UINT uFlags ) {  TOKEN_PRIVILEGES TokenPri;  HANDLE hToken;    if ( OpenProcessToken(GetCurrentProcess(),(TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY),&hToken) ){   if ( LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&TokenPri.Privileges[0].Luid) ){    TokenPri.PrivilegeCount = 1;    TokenPri.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;    AdjustTokenPrivileges( hToken, FALSE, &TokenPri, 0, NULL, NULL );        if ( GetLastError() == ERROR_SUCCESS ){     return( ExitWindowsEx(uFlags,0) );    }   }  }  return( FALSE ); } 使い方: myExitWindowsEx( EWX_LOGOFF );  // ログオフ myExitWindowsEx( EWX_POWEROFF ); // パワーオフ myExitWindowsEx( EWX_REBOOT );  // 再起動 myExitWindowsEx( EWX_SHUTDOWN ); // シャットダウン 参考資料1: http://homepage2.nifty.com/sak/w_sak3/doc/syspc/vc_net06.htm http://homepage2.nifty.com/DSS/VCPP/API/ExitWindowsEx.htm http://www.g-ninja.net/tips/shutdown.html 参考資料2: http://yokohama.cool.ne.jp/chokuto/advanced/function/SetTimer.html http://yokohama.cool.ne.jp/chokuto/advanced/function/KillTimer.html http://yokohama.cool.ne.jp/chokuto/advanced/message/WM_TIMER.html 以上。

kazu7929
質問者

補足

詳しい説明ありがとうございます! タイマーの作り方は参考URLによって出来そうな感じなのですが、 タイマーを作りたいというのは例として挙げただけであり、実際には常駐ソフトを作る事が前提で考えています。 常駐ソフトの作成方法がわかれば教えてください。お願いします。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

BorlandC++では、この手の情報少ないですからね。 「SE_SHUTDOWN_NAME XP VC++」で探すと結構見つかったりします。 私はVC++の人なので提供できる情報が的外れだったらごめんなさい。 シャットダウン。NT用ですがvistaまで通用するはずです。 C++Builderでかかれてますが、Borland C++ Compiler5.5でも参考になるかと。 http://support.codegear.com/jp/article/35937 VC++用ですが、こちらも参考に。 http://onishi-lab.jp/programming/shutdown_win.html タイマーというか時計です。時間処理の参考に。 http://www2.ttcn.ne.jp/~tkky/Application/Clock/clock1.htm 他にもC++BuilderのTIPS集があるみたいです。 どちらもプログラムの難易度としては高くありませんが、Borland C++ Compiler5.5は情報が少ないので苦労するかと思いますが、がんばってください!

kazu7929
質問者

補足

情報があまりにも見つからなくて非常に苦戦していました。 本当にありがとうございます! じっくりと読んで頑張って作ってみます!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

フリーソフトでいっぱいありますが? http://www.vector.co.jp/vpack/filearea/win/util/restart/timer/ http://www.vector.co.jp/vpack/filearea/win/util/restart/ あえて作りたい理由は何でしょうか? シャットダウンやタイマーは難しいプログラムでは無いので、あちこちのサイトに情報はころがっています。 例えばシャットダウンは、SE_SHUTDOWN_NAME特権を得て、ExitWindowsExでシャットダウンします。

kazu7929
質問者

補足

パソコン関係の大学に通っているためプログラミングに非常に興味があります。 やはり自分で作る事によってスキルアップすると思っています。 フリーソフトであるのは知っていますが、自分で作ってみたいため質問させていただきました。 情報が見つけられないため(探すのが下手かもしれません)、情報のあるサイトを教えてください。 お願いします。

noname#245936
noname#245936
回答No.1

最近のWindowsには。 ShutDown.exeというそのまんまの実行ファイルがあるので。 作る必要がないような気が…。

kazu7929
質問者

補足

プログラミングを学びたいため作る必要性というより興味本位でやってみたいです。 スキルアップしたいのでよろしくお願いいたします。

関連するQ&A

  • BorlandC++Compiler

    C++を覚えようと CPad http://www.vector.co.jp/soft/win95/prog/se141451.html BorlandC++Compiler http://www.borland.co.jp/cppbuilder/freecompiler/index.html の2つをダウンロードしたのですが、BorlandC++CompilerのBinというファイルの中のfconvert.exeを開いたのですが、ファイルネイムになんと入れればいいのか解りません。 それからこれらは2つダウンロードする必要があったのでしょうか? お願いします。

  • cコンパイラーはないのですがc++コンパイラーだけでいいですか?

    C++は、Cにない、いくつかの機能を付け加えたもの という説明が あるページに ありました。  現在は、cとc++に違いがあるという認識はありますが、.cが出来ないで、.cppができるという作業環境関係になっています。  作業環境は"CPad for Borland C++Compiler" です。 このままcの学習を"CPad for Borland C++Compiler"だけで進めても問題が、あるでしょうか?

  • C言語を始めたのですが

    最近C言語を初めています。ソフトとしてCPad for Borland C++compilerを使っています。 初めの一日目はそれで作ったものを実行ボタンで実行できたのですが、 次の日からファイルを開いて実行を押してもそのファイルがある場所(デスクトップなど)が記されているだけて、何もプログラムが実行されません。 なにか押してみても '○○' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示されます。何か原因があるのでしょうか?もしも解消できるかたいれば教えてください。また、他に初心者におすすめなソフトを教えてもらえないでしょうか?今使っているのは今現在インストールできないみたいなのですが、他に使いやすいソフトあれば教えてください。 長くなりましたが、よろしくお願いいたします。

  • CPad for Borland C++Compilerのダウンロード

    CPad for Borland C++Compilerのダウンロードは どこですればよいでしょうか? もう、かなり前のソフトなので、 全然見つかりません。 よろしくお願いします。

  • CとC++って何が違うのでしょうか?

    こんにちは。今までjavaでプログラミングしていたのですが、C言語を使わなくてはいけなくなりました。 そこで本屋さんに行って「初めてのCプログラミング」というのを買いました。それに付いてた「BorlandC++Compiler」というコンパイラをインストールして、プログラムを作成して実行しました。 昔、大学の授業ではコンパイルするとき「cc」、実行するときは「a.out」とした記憶があるのですが、これでは、「bcc」です。 もしかして、この本は、C言語ではなく、C++というCとは異なる高水準言語なのですか? C言語とC++とは全く異なるものなら、このまま、新しい本を買わないとどのような支障がでてくるでしょうか?

  • C言語コンパイラについて

    はじめまして。学校でC言語を習おうとしているものです。 OSはvistaを使用しています。 そこで、Borland C++ Compiler 5.5 をインストールし フォルド内にあるbcc.32というexpのファイルを開こうとしても 一瞬、ファイルが開きすぐにとじてしまいます。ほかのexpも同じ事が起きます。なぜでしょうか?? 全くの無知ですみません。 よろしくお願いします。

  • C++ アプリケーション作成の質問

    いま、C++を勉強して日記帳のアプリを製作してます。(Visual C++使用中・Microsoft のあれです) 近い将来にJavaを使っゲームのアプリを作ってみたいと思っていて色々なプログラミング言語に対応している wide studio に乗り換えようかと思っています。 質問なんですが、 wide studio、Visual C++、BorlandのC++Compiler等たくさんありますが、『このソフトだと○○ができないが他はできる(○○にはアプリを作成する上でアプリに付け足せる機能(?)です。機能は例えば。。。イベントというものでしょうか?すみません勉強不足ですm(_ _)m)』とか『これは参考書がたくさんあって進め易い』等のいい点、使いにくい点を教えてください

  • system("cls")について

    system("cls")を使うと画面を一旦消去出来るということで使ってみたのですが、これを使うと若干処理がストップしてしまいます。 system("cls")を使わない場合には一瞬で結果を表示してくれますが、system("cls")ではそれは出来ないのでしょうか? 分かりにくい質問かと思いますが、よろしければご回答お願いします。 コンパイラ:BorlandC++ Compiler 開発環境:CPad for Borland C++Compiler OS:Windows XP

  • どの言語で作成するべきか?

    どの言語で作成するべきか? いま私はjavaを少しだけ学習しました。 いろいろなソフトを作りたいんですけど、たとえば簡単なペンツールとかタイピングゲームとか。 でも、javaではとても難しすぎて良く分かりません。 CとかC#,C++とかのほうが簡単に作れるんでしょうか。こうのようなペンツールとかを作るときに向いている言語とかあれば教えてください。

  • エンコードソフトはC言語?JAVA?で作成

    最近プログラミングを習い始めました。 CとJAVAを勉強しています。 将来、動画や音声をエンコードするソフト作りにチャレンジしたいのですが、それにはC言語orJAVAどちらで製作するのでしょうか? また、youtube等のストリーミング動画サイトはどの言語で主に作られているのでしょうか? VisualStudio.NETやASP.NET , C#.NET , VisualBasic.NET等は必要なのでしょうか? 実際作る段階でかなり有効なのでしょうか? 初心者なので検討違いのことを質問していたらすいません;; よろしくお願いします。

専門家に質問してみよう