こんにちは
今、visualC++でプログラムを作っています。
内容はsystem関数を使ってバッチファイルを呼び出すプログラムなのですが
int main(void){
system(tel.bat);

return 0;
}
バッチファイルの内容は

(1)telnet 192.168.○○○
(2)cd フォルダA
(3)test.exe

です。
作って実行してみると(1)の接続はできました。ですがその次の(2)、(3)は実行されませんでした。
どうしたらできるのでしょうか?できればtelnetで実行できるようにしたいです。
           
   操作側   接続先
OS:windows7、windowsCE

よろしくお願いいたします。

A 回答 (1件)

>バッチファイルの内容は


>(1)telnet 192.168.○○○
>(2)cd フォルダA
>(3)test.exe
>です。
>作って実行してみると(1)の接続はできました。ですがその次の(2)、(3)は実行されませんでした。

telnetコマンドが終了するまで、バッチファイルは次の処理に進みません。
サーバ側から切断させればtelnetコマンドが終了しますので、次の行のcdコマンド、およびtest.exeが『クライアントのローカル環境で』実行されます。
そういうバッチファイルになっています。

希望する動作は、telnetで接続して、サーバ側でディレクトリ移動とtest.exeを実行したいのではないですか?
telnetコマンドの標準入力に流し込めば動くかと思われますが…
# ただし、試したコトはありません。

バッチファイルではなく、CreateProcess()でプロセス起動して、標準入出力のパイプで操作する。
という方法もあります。
「CreateProcess パイプ」辺りで検索すると見つかるでしょう。

http://www.fpcu.jp/dosvcmd/bbs/log/cat1/4-0451.h …
こんなネタもあります。

他の方法としては…希望する処理を記述したTeraTermマクロを作成して、system()でそのマクロを実行する。
とかですかね。
たぶんこっちの方が簡単でしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
telnetコマンドが終了するまで次の命令に移らないんですね。
勉強になりました。
アドバイスしてくださったのを試してみます。ありがとうございました

お礼日時:2010/12/28 14:18

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC言語 コンパイラ

C言語のコンパイラを無料でインストールしたいのですが
気に入ったのが見つかりませんでしたぁ
いいコンパイラがあったら教えてください
よろしく御願いします

Aベストアンサー

その前に対象OSやプラットフォームなどの環境を書かないと何とも
いえないと思います。

クロスコンパイラならみなさんのいうようにGCCが一番でしょうし、
Winに限定するならBCCかVC++ Express Editionがいいでしょう。
MS-DOSならLSI C-86試食版なんてのもありますけど。

なんか、上手く動作しないけどWatcom Cなんて手もあるかも。

Cだけでいいのか、C++が使えた方がいいのかによっても異なります。

参考URL:http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E

QVisualC++6.0でウィンドウズをシャットダウンするプログラム

環境VC++6.0
OS:ウィンドウズXP

でウィンドウズをシャットダウンするプログラムを考えています。
現在
ExitWindowsEx(EWX_FORCE, NULL);
と書いて実行しましたところ
ログオフまでできました。
マニュアルなどには上記のコードは有無を言わさずウィンドウズをシャットダウンするものだと書かれてあったのですが、ログオフまでしかできませんでした。

どなたか、ウィンドウズをシャットダウンするプログラムを教えていただけないでしょうか?
よろしくお願いいたします。

Aベストアンサー

#1です。
ソースコードのサンプルです。

void Shutdown(void)
{
  OSVERSIONINFO WinVersion;
  HANDLE hProc,hTkn;
  TOKEN_PRIVILEGES TokenP;
  WinVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  GetVersionEx(&WinVersion);
  if (WinVersion.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS) {
    hProc = GetCurrentProcess();
    if(OpenProcessToken(hProc,TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,&hTkn) != FALSE) {
      if(LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&TokenP.Privileges[0].Luid) != FALSE) {
        TokenP.PrivilegeCount = 1;
        TokenP.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hTkn,FALSE,&TokenP,0,NULL,0);
      }
    }
  }
  ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,0);
}

かなり手抜きです。例えば、
・特権が取れなかった場合もExitWindowsExを呼んでしまうので、シャットダウンせずログオフしてしまう。
・Windows95/98/Meじゃないなら特権を取ろうとするのでwindows3.1でも特権を取ろうとしてしまう
など。

うまく手抜きを修正して使用して下さい。

#1です。
ソースコードのサンプルです。

void Shutdown(void)
{
  OSVERSIONINFO WinVersion;
  HANDLE hProc,hTkn;
  TOKEN_PRIVILEGES TokenP;
  WinVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  GetVersionEx(&WinVersion);
  if (WinVersion.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS) {
    hProc = GetCurrentProcess();
    if(OpenProcessToken(hProc,TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,&hTkn) != FALSE) {
      if(LookupPrivilegeValue(N...続きを読む

QC言語のコンパイラについて

私は、高校でC言語を使った授業をしています。
学校のPCではMinGWのコンパイラを使っています。
家のPCでもC言語をしたいのですがコンパイラの入手法がわかりません。
どなたか教えてください。

Aベストアンサー

あなたの自宅のPCがwindowsであるならば、Cygwinを使われたらどうでしょう?
mingwのCコンパイラも存在します。

参考URL:http://cygwin.com/

QVisualC++でWindowsフォームアプリを作ったら

VisualC++でWindowsフォームアプリを作ったら
やっぱり.NET Frameworkは必須なんでしょうか??

Aベストアンサー

.NET Frameworkに依存するコードを書かなければ不要です
(大雑把ですが .NET Frameworkはライブラリの一種と思ってください)

QC言語でのコンパイラの作成方法

C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。

現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。

というわけで、今回はコンパイラをどのように作ったらよいのかというヒントだけでもいいので教えて頂けないかと思い投稿させて頂きました。
ちなみに「temp.c」はそこまで複雑なソースではなく、DOS上のアプリで、リソースやアイコンなどは用いないものです。


そもそも「コンパイラを作る」ということ自体が愚かな行為なのかと思ったりもします。
私が所持しているBcpadやMicrosoft Visual C++ 6.0に付属している既存のコンパイラを利用するということも考えたのですが、BcpadやMicrosoft Visual C++ 6.0の本体以外からコンパイラをどのように利用していいのかもわかりません。

どうぞ忌憚の無い意見をよろしくお願いします。
ちなみにOSはXPのSP3です。

C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。

現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。

というわけで、...続きを読む

Aベストアンサー

あの・・・水を差すようで恐縮しますが

それって「コンパイラを作る」ではなくて
「コンパイラを呼び出す」だけでは?

ボタンを押したら
外部プログラムとして cc コマンドを実行するだけ…。
最近 C++ やってないんで忘れましたが WinExecとか CreateProcess とか使って…。もちろん環境変数や実行パラメータはきちんとセットした上でですけど…。Microsoft Visual C++ 6.0でもコマンドプロンプトだけでコンパイルできますから。

QVisualC++.NETかVisualC#.NETか

こんにちは。

今、VisualBasic6でプログラムをしています。今回、VBを卒業してCを勉強したいと思っているのですが、VisualC++.NETとVisualC#.NETの違いがいまいち分かりません。というか、.NETという物自体が分かっていない初心者です。VB6ではランタイムが必要でしたが、この2つではどうなのでしょうか?ちなみにVB歴約2年です。
.NETの基本的なことから教えていただけると非常に助かります。

回答よろしくお願いします。

Aベストアンサー

>ということは、私たち開発側は.NET Frameworkのことを特に意識して開発しなくても良いというわけですよね?

今のところ、Windows XP 以外の OS では、ServicePack をインストールしても、.NET Framework はインストールされません。

この問題を解決する方法の1つは、MSI (拡張子が .msi のセットアップファイルを見たことありませんか?)に対応したインストーラを作成し、.NET Framework のマージモジュールを組み込むというやりかたがあります。
しかし、わざわざインストーラを作るほどの事でもない場合も多いので、その場合は、.NET Framework をインストールしてくれと言うしかありません。

また、C言語のランタイムに関しても、DLL 版のランタイムをリンクすると実行できないという問題が発生します。こちらの問題は、SPx 以上が入っていれば OK、IE xx 以上が入っていれば OK、.NET Framework が入っていれば OK のような事で解決できそうです。これは、1つ前の VC++6.0 にも同じような事が言えます。

とまぁ、あまりいい状況ではありません。.NET Framework も、Windows 98 以降で IE 5.01 以上が必須なので2重に困ったりもしますが、時が解決してくれるだろうと楽観視しています。(回答になっていませんね)

あと、意外と知られていませんが、Visual 開発環境こそありませんが、.NET Framework SDK (無料)をインストールすると、Visual *** Standard 版と同じコンパイラ(C++, C#, VB.NETなど)もインストールされます。勉強の為にフリーのコンパイラを探している人には悪くない選択です。

>ということは、私たち開発側は.NET Frameworkのことを特に意識して開発しなくても良いというわけですよね?

今のところ、Windows XP 以外の OS では、ServicePack をインストールしても、.NET Framework はインストールされません。

この問題を解決する方法の1つは、MSI (拡張子が .msi のセットアップファイルを見たことありませんか?)に対応したインストーラを作成し、.NET Framework のマージモジュールを組み込むというやりかたがあります。
しかし、わざわざインストーラを作るほどの事でもな...続きを読む

QC言語のコンパイラ

C言語の勉強がしたいと思っているのですが、コンパイラっていうんですかね、それについて少し調べてみたら
無料なら"Borland C++ Compiler"で、有料ならなんかかなり高いっぽいけど"Visual C++"っていうのがあることが解りました。

よくプログラミング系のサイトの人で"Borland C++"のコンパイラを利用してとてもプログラミングがしやすくなったということが書いてあるのですが、"Visual C++"と比べたらどっちの方がいいんですか?(やっぱり有料の方?)
もし人それぞれなら、みなさんは両方あったらどっちを使いますか?

初心者なら無料ので十分すぎるのだとは思いますが、プログラマーみたいな人から見るとどうなのかな~と思ったので教えていただけますか。
お願いします。
ついでに"Visual C++"って言語があるんですかね?何かそんな風に書いてあるところもあったもんで。
かさねがさねお願いします。

Aベストアンサー

Borland C++ Compilerは元々は有料ですよ。(パッケージ販売していた。)

統合環境など(IDE)を省いて無料として公開したものなのでなんら、無料だからといって劣る部分はありません。
(コンパイル速度もBC++の方が速いし。)

VC++がいいと言われている利点はMS社製なのでOSと同じ会社と言うことで親和性が高い、サンプルソースコード等の資料がボーランド用に比べて極端に多いという利点があります。

勿論、VC++用のソースコードでもBC++とVC++の違いを理解していれば、コンパイル可能です。(ライブラリ関係の呼び出し方が違うのでDLLをBC++用にインポートするなど)

個人的な意見ですが、純粋にプログラムを学びたいというのであればBC++で十分です。(もったいないくらい、昔は5,6万位だして買った記憶が、、、。)

本格的にWindowsのプログラムを学びたいのならVC++の購入を検討してみるべきです。(逆に、それくらいの金額を自分に投資できないならたとえVC++が無料であっても使いこなさないと思います。)

Borland C++ Compilerは元々は有料ですよ。(パッケージ販売していた。)

統合環境など(IDE)を省いて無料として公開したものなのでなんら、無料だからといって劣る部分はありません。
(コンパイル速度もBC++の方が速いし。)

VC++がいいと言われている利点はMS社製なのでOSと同じ会社と言うことで親和性が高い、サンプルソースコード等の資料がボーランド用に比べて極端に多いという利点があります。

勿論、VC++用のソースコードでもBC++とVC++の違いを理解していれば、コンパイル可能です。(ライブ...続きを読む

QVisualC++ と 普通のC++(ボーランドなど)の違い

前に少しC++をやっていたことがあったんですが、それからはVBをやるようになりました。
またCをはじめたいと思うんですが、VisualC++というのに興味を持ちました。普通のテキストエディタで作るようなのに比べての欠点と利点を教えてください。
個人的にはテキストエディタで作ってコマンドブロンプとでコンパイルしてとやるより、VBのような感じのほうが好きなのですが、言語とかに違いがあるのかなと思い、迷っています。

Aベストアンサー

Visual Stidioはテストやデバッグがラクでしょう。
それからクラスの追加とか、メニューの追加とか、
一部分自動化されているし、選べるクラスとか一覧
が出たりかなり開発がラクでしょう。
他のコンパイラとの大きな違いはMFCがあることで
しょうか。

QMacで使えるC言語のコンパイラを教えてください

最近C言語の勉強を始めました。
私はMacユーザなのですがMacでCを使えるコンパイラはあるのでしょうか。ネットで探しても見つかりませんでした。もしご存じでしたら教えてください。

Aベストアンサー

MacでC言語の勉強をフリーの処理系で楽しむならMacintosh Programer's Workshopが良いと思います。
PowerPC用のC/C++コンパイラ、MC68K用のC/C++コンパイラ、MC68Kのデバイスドライバ開発などに使えるアセンブラとMacプログラミング(Toolboxプログラミング)に必要なResEditなどのツールが全てそろっています。
http://developer.apple.com/tools/mpw-tools/

hohihohiさんご紹介のCodeWarriorも良いのですが、いかんせん高価なのでDiscover Programming for Macintosh日本語版リリース5(¥2、8000)程度で始められても良いかもしれません。
勉強に必要な入門書などがセットになっています。
ただし、2次生産物(作成したソフトウェア)の配布権などに制限がありますので実力がついたらCodeWarriorにアップグレード(¥4、1000)すると良いでしょう。
http://www.metrowerks.co.jp/Products/Discover/Discover_Mac5.htm

日本語による1年間のテクニカルサポートに¥2、8000をかけると思えば安いと思います。

MacでC言語の勉強をフリーの処理系で楽しむならMacintosh Programer's Workshopが良いと思います。
PowerPC用のC/C++コンパイラ、MC68K用のC/C++コンパイラ、MC68Kのデバイスドライバ開発などに使えるアセンブラとMacプログラミング(Toolboxプログラミング)に必要なResEditなどのツールが全てそろっています。
http://developer.apple.com/tools/mpw-tools/

hohihohiさんご紹介のCodeWarriorも良いのですが、いかんせん高価なのでDiscover Programming for Macintosh日本語版リリース5(¥2、8000)程...続きを読む

QWindows上のマウス操作をプログラムで実現したい(C,C++,C#)

Windows上で、マウスで右クリック→ファイル名をコピー→貼り付け

という動作をプログラミングによって実現したいのですが、どのようにしたら良いのでしょう?
やはり、APIを使うと思うのでC#が適しているかと自分では思っているのですが、CでもC++でもかまいません。
どなたかご教授願えますか?よろしくお願いいたします。

Aベストアンサー

★『ファイル名をコピー』の処理を自分のプログラムに組み込んでみるのはどう?
・もう少しだけ詳しい動作の仕組みを補足要求します。
・また『mouse_event』という API 関数は古いので新しい関数『SendInput』を使いましょう。
・ただし、この『SendInput』関数はマウス以外にキーボードのエミュレートも行えるため
 少しだけ複雑な指定になります。慣れれば何てことないが…。→また紹介します。
・まぁ、とにかくもう少し何を行いたいのかを補足して下さい。
・まさか、本当に『右クリック』→『ファイル名をコピー』→『貼り付け』の3ステップを
 行いたいのですか?

参考URL:http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200412/04120036.txt


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報