ページ 1 / 2
こんなソフトは作れるのでしょうか?
Posted: 2006年2月01日(水) 20:31
by tagtag
質問させて頂きます。
まったくの素人です。
子供が、ネットワークゲームにはまっているため、利用時間の制限をしたいと思っています。
以下のようなプログラムはActiveBasicで作成可能なのでしょうか?
・指定したアプリケ-ション(ネットワークゲーム)の1日の利用時間を設定し、その時間が過ぎれば自動的に利用できなくする。細切れに利用している場合はその合計時間で利用を制限できる。
・1日の利用時間は曜日ごとに設定できる。
・CNTL+Alt+Delでタスクマネージャーが表示されますが、タスクマネージャーでのプログラムの強制終了を不可とする。(フリーソフトなど強制修了させるときに良く使うので)
・特定の人(つまり私)しか設定変更やプログラムの終了を出来ないようにする。
わかり難いかもしれませんが、要は子供にかってに設定を変えられないようなネットワークゲームの利用管理ソフトです。
色々探して見ましたがそのようなソフトが無かったので、自分で作れるなら作ろうかなと思いまして・・・(やらせなくするのがいちばん簡単なのですが・・・)
また、もし出来るとしたら、作成は難しいでしょうか?
因みに、私はFORTRANで多少プログラムを作ったことがある程度です。
ご助言宜しくお願い致します。
Posted: 2006年2月01日(水) 21:22
by hira
出来ないことはないでしょう。
方針としては、起動中は特定のプログラムが起動しているか常に調べ、起動している間はGetTickCount()関数などで時間をカウントし、定められた利用時間が過ぎたら強制終了させる、という感じです。
但し、プログラムを強制終了させるのはあまりよろしくありませんので(汗)、そのプログラムのウィンドウを閉じるという方法にすると良いかと。
残り30分とか15分というタイミングで残り時間を出すようにしてもいいかもしれませんね。
※ただ、タスクマネージャから強制終了できないようにするのは私のレベルでは無理です(^^;;
※ネットワークゲームがDirectX(全画面)の場合も危険な気がします
Posted: 2006年2月02日(木) 08:55
by situmon
少し面白そうなので返信します。
タスクマネージャから強制終了できないようにするにはタスクマネージャに
列挙されなければいいので、方法としては、DLLで機能を実装して
他のプロセス(たとえばExplorer)などにそのDLLのExportさせた
関数を呼び出させる方法があります。(コードは省略します)
ただし、この方法はあまり行儀のよい方法とは言えないので、
素直に非表示WindowをつくりDestroyイベントで自分を実行させる
方法などはいかがでしょうか。(こちらもあまり行儀のいい方法ではないですが・・・)
Posted: 2006年2月02日(木) 10:18
by ゲスト
お子さんのPCスキルは、どの程度でしょうか?
中学生でも、PCの知識や解決方法の調査に長けた者も居ます。
(VCでペイントソフトを作っていた中学生も居ました)
恐らく、小学生だとは、思いますが…。
それによっては、子供だましで行けるかも知れませんし、
苦労するかもしれません。
例えば、管理ソフトを常駐解除すれば無効になってしまいます。
Posted: 2006年2月02日(木) 12:52
by tagtag
ご助言&ご回答どうもありがとうございます。
なんとなく、作れそうだということみたいですね。(私がということは別として)
ご回答頂いた内容は、知識の無い今の私では理解が難しいですが。実際に作成するときには、また色々ご指導頂きたいと思います。
(勉強して質問させて頂きます・・・)
子供のPCの知識はたいしたことは無いと思います。
でも、結構友達とかに詳しい子がいることもありますしね。
管理ソフトを常駐解除することなども出来るのですか・・・
色々あるのですね。子供よりPCの知識が無いかも・・・。
そもそも
Posted: 2006年2月02日(木) 21:54
by イグトランス
Posted: 2006年2月02日(木) 22:54
by konisi
やっぱり再利用って大事ですね。
某関数を一から作ってたら日が暮れちゃって・・・(泣
Posted: 2006年2月04日(土) 19:06
by tagtag
イグトランス様
なにか、私が思っているものに近そうですね。
早速試してみたいと思います。
確かに実際プログラムを作る段になったら、それはそれは大変でしょうしね・・・。
どうもありがとうございました。
Re: こんなソフトは作れるのでしょうか?
Posted: 2006年2月05日(日) 10:59
by まけイヌ
まけイヌです。
かぶる部分はあるとは思いますが、一応補足。
> ・指定したアプリケ-ション(ネットワークゲーム)の1日の利用時間を設定し、その時間が過ぎれば自動的に利用できなくする。
> ・細切れに利用している場合はその合計時間で利用を制限できる。
これは難しくありません。
ABの練習にちょうどいい..とまでは言いませんが、
管理ファイルを作っておいて時間を計測しておくのがベターかと。
アプリのウィンドウハンドルかプロセスIDを取得して
それらを操作できる作りの部分だけ再利用できれば、
後は初心者でも何とか試行錯誤で対応できると思いますよ。
> ・1日の利用時間は曜日ごとに設定できる。
システムの曜日までで良ければ簡単に実装できると思います。
現在のシステムの曜日を取得するAPIが存在しますし。
※正確にはシステム情報の中から定数指定で狙って取得する関数ですが..
> ・CNTL+Alt+Delでタスクマネージャーが表示されますが、タスクマネージャーでのプログラムの強制終了を不可とする。
> ・特定の人(つまり私)しか設定変更やプログラムの終了を出来ないようにする。
この2点はプログラムでも何とか実装できるのかもしれませんが、
プロセスの横取り(できるのか??)はちょいと危険です。
また、レスにあったDestroyイベントでの再実行は、
正常終了時にも働いてしまう危険があります。
これを実現するには、プログラムに頼るよりも、
ユーザの権限を落とす方が無難だと思いますよ。
> わかり難いかもしれませんが、要は子供にかってに設定を変えられないようなネットワークゲームの利用管理ソフトです。
まず、このソフト自体の常駐は避けられそうにないですね。
レスにあったとおり、このソフトを強制終了されたらアウトなので、
なるべく静的な動きにしなければならない点が難しいと思われます。
なまじ知っている方なら、タスクバーを探すくらいは考えますから(^^;
誰のレスかまでは忘れましたが、タスクの非表示で起動しておいて、
特定キー(Ctrl + + Space + "K"とか)で初めてウィンドウ表示できるように
ツールを作っておくのも、隠しソフトの要素としては良いかと思います。
何にせよ、以下の鉄則を守った上で作るのであれば、
少々の邪道は許されるのが個人開発の利点ですから(笑
・正常に終了できる手順は必ず準備する
・常駐ソフトの場合、無駄に負荷を掛けないようにする
※負荷を掛けるのが目的のソフトである場合は別ですが..
・タスクマネージャからの強制終了は可能にしておく
※むろん、管理者のみでも構いませんが、
この場合は管理者がそれなりの知識を持っていないと
管理しきれない可能性が出てきます
にしても、自分も将来的には必要になると思われるので、
よろしければ完成時には教えてもらえませんか??w
参考にさせて頂きたいなぁ..ってのが本音なだけですが。
P.S.
メールによる質問は受けられると思いますので、
遠慮なくどうぞ♪
答えられる事はなるべく早めにお答え致します。
共同戦線(w)で開発したい、という依頼であれば、
3月以降からなら可能かもしれませんが..(^^;;;
最近のネットワークゲームでは、無理なものもあります。
Posted: 2006年2月05日(日) 12:16
by 無名
> アプリのウィンドウハンドルかプロセスIDを取得して
> それらを操作できる作りの部分だけ再利用できれば、
これらは、NProtectによってプロセスIDを隠滅するもの。
外部アプリからの操作を受け付けなくしているものがあります。
恐らくWM_CLOSEだけは、許可してるのがほとんどなので
WM_CLOSEで十分です。
タスクマネージャから終了できなくする方法としては、
サービスプロセスとして実行させる方法が一つ。
そのサービスプロセスの実行アカウントをAdministratorにしておけば、
管理者で無い限り、そのプロセスを終了できません。
確かVector等を探せば通常のソフトをサービスとして動かすツールが
転がってたと思うのでそれを使うべし。
タイムリミットの10分前・1分前・10秒前とかに警告音を出した
ほうがいいでしょう。
ネットワークゲームの性質上、一緒に遊んでる他のプレイヤーに
いきなり落ちるということは、迷惑を掛けてしまいます。
Posted: 2006年2月06日(月) 12:55
by tagtag
まけイヌさん
色々アドバイスありがとうございました。
出来れば、自分で作らないですめば一番良いと思います。
私も、2,3月はとても暇を見つけられないので作るとしたら4月以降になりそうです。そういう意味だとこの質問もその頃にすればよかったのかもしれませんが・・・。その際には宜しくお願い致します。
無名ゲストさん
>確かVector等を探せば通常のソフトをサービスとして動かすツールが
>転がってたと思うのでそれを使うべし。
探してみましたが、探し方が悪いのか見つけられませんでした。
具体的なソフトがあれば、又は検索する際の的確なキーワードがあれば教えて頂きたくお願いします。
Posted: 2006年2月06日(月) 18:52
by hira
Posted: 2006年2月07日(火) 12:42
by tagtag
hiraさん、なるほど、どうもありがとうございます。
使って試してみたいと思います。
Posted: 2006年2月08日(水) 11:26
by ゲスト
作成したソフトをセルフでサービスとして動かしたい場合は、
http://resume-next.hp.infoseek.co.jp/
こちらのSPIRITさんのサイトにある説明を参考にするのがいいと思います。
サンプルソースもダウンロードできます。
Posted: 2006年2月08日(水) 12:53
by バケさん
> 作成したソフトをセルフでサービスとして動かしたい場合は、
>
http://resume-next.hp.infoseek.co.jp/
> こちらのSPIRITさんのサイトにある説明を参考にするのがいいと思います。
サンプルソースもダウンロードできます。
比較的簡単に出来ますよ。
自分も何本か応用して作成しています。
・汎用USB-IOでCPU稼働率をLCD表示(HPで公開しています)
・ダイナミックドメイン自動登録削除(公開していません)
・サービス登録削除プログラム(公開していません)
実際のサービスプログラムとサービスに登録削除するプログラムと分けて
作成しました。
公開していないプログラムも要望があれば公開します。