2009-04-18 11 views
1

私は定期的にログファイルの電子メールを送信するWindowsプラットフォーム上で動作するCプログラムを持っていますが、干渉なしでバックグラウンドで実行することになっています。私は電子メールアドレスを一定にしたくありません。他のプログラムへの入力[C/C++]

このプログラムにメールアドレスを入力するにはどうすればよいですか?

私はちょうどそれからちょうどスクリプトがに幾分同等のようなラベルでテキストファイルを作成します、電子メールアドレス、件名などのようなパラメータを取り、簡単なスクリプトを考えていた

TOメールアドレス FROM メールアドレス SUB サブ

そして、ちょうど私のプログラムは、これらの値を読んでいると、シンボリック変数に割り当てます。設定ファイルを削除するよりも。

その他の方法はありますか?

答えて

0

レジストリ! : - P

+0

レジストリの方が良いでしょうか? –

2

あなたはまた、Windowsレジストリを使用することができます。

+0

さて、数秒でほとんど違いはありませんでした。 – Ankit

1

起動時に渡すことができる引数リストを読み込むだけでプログラムを修正できず、そのように "to"と "from"を設定する理由はありますか?

例:ここに私の水平思考キャップの上に置くPROGRAM.EXE [email protected] [email protected]

+0

管理プログラムの骨格である「隠されたプロセス」であるはずです。 –

+0

これが当てはまる場合は、プログラムを実行する際に同じ方法を使用することができます(ただし、新しい情報に基づいてこれがあなたの大きな懸念事項であるとは思われますが)。 Windowsのレジストリを使用することに関する他の提案は、かなり目立つようです。他の提案には、これらの値を追跡する簡単な設定ファイルなどがあります。 – TheTXI

3

... はどのようにあなたについて(とにかく、または設定可能)、電子メールアドレスの定数を作るが、作りますそれはリストアドレスです。あなたのメールサーバーはリストへの購読を管理します。これであなたのプログラムはログを収集するのに良いことをし、メールサーバはそれらの間の非常に小さなインターフェース(リストアドレス)で何が良いのか(電子メールの配布)を行います。

ログ受信者のリストから誰かを追加/削除する必要があるたびに、わかりにくい設定ファイルやレジストリエントリを編集するのはおそらくこれを処理する最良の方法ではありません。

自分はので、私はこのような状況の世話をするためにパイプを持っていますが、私は次のようにWindows上で行われているの聞いたことがある私は、Linuxの世界に住んで
0

GUI要素(またはコントロール)の制御を取るために、その可能性の他のウィンドウにAPIを使用し、たとえば、To、From、およびDataフィールドに記入して、押されたイベントを単純な電子メールプログラムのボタンに送信します。卑劣な部分は、これがバックグラウンドで起こるようにしています。再びAPIを使用すると、電子メールプログラムのウィンドウを非表示にする「非表示」の状態にすることができます。隠しウィンドウは、通常のウィンドウのようにハンドルを操作できます。

これは、ウィンドウのプログラムのバックグラウンドコントロールの効果を与えるはずですが、私はそれが完了したことを知っていますが、私はそれを個人的に見たことはありません。それは世界で最も効率的ではないようですが、それはクールなトリックです。:)

4

他のいくつかの方法があります:

  • レジストリ
  • 設定ファイル
  • コマンドラインオプション
  • 環境変数
  • 共有メモリ

レジストリ

レジストリの使用は、多くの種類の構成情報に適しています。レジストリ内の適切な場所を選択することで、システム全体にわたる設定、ユーザーごとの設定(アプリケーションのようには聞こえませんが、とにかく言及します)、またはその2つの組み合わせを設定できます。 Windowsはデータの記憶域を管理し、ユーザーが編集するための基本的な方法を提供します(regedit.exe)。

レジストリを使用すると、同時に複数のオプションでプログラムの複数のインスタンスを実行することがより困難になります。

設定ファイル

設定情報をディスク上のテキストファイルに保存できます。これにより、実行可能ファイルと同じ場所(同じフォルダ)に構成を保持することができます。これにより、レジストリを使用するときに、どこに見えるかをユーザーに伝える必要があります。設定ファイルは通常、通常のテキストエディタで編集できます。ただし、一般的には、使用する形式を指定し、テキストファイルを読み込んで解析し、必要に応じて構文エラーを処理する必要があります。

この方法では、複数のインスタンスを独自の個別の設定ファイルで簡単に実行できます(たとえば、アプリケーションが独自のディレクトリでconfigファイルを検索する場合など)。

コマンドラインオプション

あなたのプログラムは、コマンドラインから設定情報を読み取ることができますが、あなたはまだどこかにデータを保存する必要があります。コマンドラインは扱いにくくなる前に限られた量の情報しかサポートできません。

環境変数

プログラムは、環境変数から構成情報を読み取ることができます。これらは、プログラムを実行するスクリプト(コマンドラインオプションと同じ問題があり、データを別の場所に保存する必要がある)、またはシステムによって提供されるグローバルに設定された環境変数である可能性があります。 Windowsは、地球環境を変更するための非常に基本的なツールを提供しており、アクセス可能性は低くてもregeditです。この選択肢は、Windowsではよく使用されるものではありません。

共有メモリ

これはは、共有メモリへデータを置くいくつかの他のプログラムとの連携が必要となる高度な技術です。そして、他の多くの選択肢と同様に、データは最初の場所に保存されなければなりません。あなたが本当に必要なことを知っていなければ、お勧めしません。

+0

共有メモリの方向性を教えてください。 –

+0

CreateFileMapping関数とMapViewOfFile Win32 API関数を見てください。http://msdn.microsoft.com/en-us/library/aa366537(VS.85).aspx名前はマッピングファイルを参照していますが、任意の共有可能なhFileにINVALID_HANDLE_VALUEを渡してメモリチャンクを作成します。 –

0

私は個人的にはconfigファイルまたはコマンドラインパラメータ(あるいはその両方)を持つことができますが、このC/C++にタグを付けてもBoostはC++専用ですが個人的にはBoost.Program_optionsを使用します。 それでも、configファイルとfscanfを持つだけではCで難しいはずはありません。常にargcとargvもあります。

0

あなたのプログラムは、ソケットを開き、ソケットを介してデータを受け入れることができます。次に、セキュリティを備えた単純なプロトコルを少なくとも持つ必要があります。あなたはたぶん何らかのクライアントを書く必要があります。あなたの説明から、私は他の答えの1つを提案しますが、これは状況によっては実行可能なオプションになる可能性があります。

関連する問題