VC++6.0でFTPCommandを使用したいのですが(具体的にはchmodをやりたい)、使用する方法を教えてください。

※ WinSockで作り直すという回答はなしでお願いします。
環境は VC++6.0SP5/WindowsXPSP2/IE6.0です

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:neye No.1

回答回数50ベストアンサー獲得回数0

ポイント10pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

MSDN ライブラリ サイト移行に関する重要なお知らせ

system()関数でコマンドインタプリタを呼ぶという方法ではダメなのでしょうか?

id:peugeot

system()やftpcommand.txtを作成してftpを実行するという方法もなしでお願いします。

2005/09/06 15:07:41
id:mj99 No.2

回答回数138ベストアンサー獲得回数38

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

MSDN ライブラリ サイト移行に関する重要なお知らせ

MFCが使えるのあれば、これかと思います(下記コードは実際には試してません)


CInternetSession session(”tekitou”);

CFtpConnection* pCon = NULL;

pCon = session.GetFtpConnection(lpszServerName, lpszUser, lpszPass);

pCon->Command(”chmod 777 xxxxx.txt”);

:

:

id:peugeot

CFtpConnectionにてCommandが採用されているのはVC++7(Visual Studio.NET)からでMFC6.0ではサポートされてません。

2005/09/06 15:30:03
id:cx20 No.3

回答回数607ベストアンサー獲得回数108

ポイント60pt

URL は CodeGuru にある FTP クライアントクラスの紹介です。


ftp.FTPcommand(”SITE chmod 777 hoge.txt”)


というような使い方が出来たと思います(ちょっとうろ覚え)

サンプルプロジェクトは VC++5.0 版ですが、VC++6.0 でビルド可能です。

FTP 関連のソースが色々載ってます。参考まで。

http://www.hi-ho.ne.jp/babaq/basp21f.html

�a�`�r�o�Q�P �e�s�o�I�u�W�F�N�g

もしくは、フリーの FTP コンポーネントを利用するという手もあります。

URL は BASP21 FTPオブジェクト(フリーコンポーネント)のリファレンスです。

id:peugeot

ありがとうございます。既に作成しているCFtpConnectionベースのプロジェクトの修正だったのでWinSockは使いたくなかったのですが、一番上のはCFtpConnectionと使い勝手が似ているので移植が簡単そうです。挑戦したいと思います。

2005/09/06 16:08:16
id:hideena No.4

回答回数8ベストアンサー獲得回数0

ポイント10pt

http://support.microsoft.com/default.aspx?scid=kb;en-us;238273

SAMPLE: Ftpcmd.exe Shows WinInet FtpCommand() Function

MFCがだめならSDKしかないと思います。

(Winsockは使っていません。)

id:peugeot

VC++6.0では標準ではFTPCommand()のSDKが使用できないので、使えるようにする方法を質問したのですが。

(MSDNでもFTPCommand()はWindowsCEとしてHelpしかないので)

2005/09/06 16:10:14
id:mj99 No.5

回答回数138ベストアンサー獲得回数38

ポイント30pt

先ほどの回答でバージョン確認せず、失礼しました。


basp21にFTPのライブラリが含まれています。

ただActivexなので、COleDispatchDriverの派生クラス実装など、少々面倒かもしれませんが。。。

id:peugeot

ありがとうございます。

ActiveXでも問題はありません(たしかに面倒なところもありますが(^^;

CodeGuruのFTPclientでだめなときには挑戦してみようと思います。

2005/09/06 16:15:09
  • id:aki73ix
    SDKでFtpCommand

    SDKならwininetを取り込んだらそのまま動きますよ
  • id:neye
    Re:SDKでFtpCommand

    >SDKならwininetを取り込んだらそのまま動きますよ

    #include<iostream>
    #include<windows.h>
    #include<wininet.h>

    using namespace std;

    const char hostName[] = ”ftp.hoge.hoge”;
    const char userName[] = ”hogeName”;
    const char userPass[] = ”hogePass”;
    const char commandStr[] = ”site chmod 777 ./hoge/hoge”;

    int main( int, const char* ) {
    HINTERNET hInet = NULL;
    HINTERNET hConnect = NULL;

    hInet = ::InternetOpen( ”FTP TEST”, CERN_PROXY_INTERNET_ACCESS, NULL, NULL, 0 );
    if( hInet != NULL ) {
    cout << ”WinInet module initialized” << endl;
    hConnect = ::InternetConnect( hInet, hostName, INTERNET_INVALID_PORT_NUMBER, userName, userPass, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0 );
    if( hConnect != NULL ) {
    cout << ”ftp connection opened” << endl;
    BOOL retVal = ::FtpCommand( hConnect, FALSE, FTP_TRANSFER_TYPE_BINARY, commandStr, NULL, NULL );
    if( retVal == TRUE ) {
    cout << ”ftp-command sent” << endl;
    }
    }
    }

    if( hConnect != NULL ) {
    ::InternetCloseHandle( hConnect );
    }
    if( hInet != NULL ) {
    ::InternetCloseHandle( hInet );
    }
    return 0;
    }

    って、こんな感じ。
  • id:mj99
    Re(2):SDKでFtpCommand

    >>SDKならwininetを取り込んだらそのまま動きますよ
    >

    #>VC++6.0では標準ではFTPCommand()のSDKが使用できないので、使えるようにする方法を質問したのですが。

    質問者が上記のように言っています。
    FTPCommandを使えるようにする方法が分かるとよいのですが。
    必要なDLLとかLibとか。
  • id:neye
    Re(3):SDKでFtpCommand

    >#>VC++6.0では標準ではFTPCommand()のSDKが使用できないので、使えるようにする方法を質問したのですが。
    >
    >質問者が上記のように言っています。

    ああ、そういう意味だったのかぁー。済みませんでした。onz

    2003SDKを入れて、wininet.lib をリンクするだけでおっけい。たぶん。
  • id:aki73ix
    Re(3):SDKでFtpCommand

    >#>VC++6.0では標準ではFTPCommand()のSDKが使用できないので、使えるようにする方法を質問したのですが。
    >質問者が上記のように言っています。
    >FTPCommandを使えるようにする方法が分かるとよいのですが。
    >必要なDLLとかLibとか。

    あまりMFCはよく知らないのですが、MFCのクラスからFTPを使ってるよう
    なのでSDK環境からだけ使う方法なら問題ないのをちょっと参考程度で紹介という感じで(^^;

    >2003SDKを入れて、wininet.lib をリンクするだけでおっけい。たぶん。

    2003SDKがない場合は、wininet.dllを取り込みですね
    こちらもVS6SP5で試しましたが特に変なことしなくても大丈夫みたいです

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません