• 締切済み

C#でファイル転送プログラムWinSCPのWinS

現在、C#でWinSCPに自動でログイン後、ファイルをアップロードしログアウトを定期的に行うプログラムを作成中なのですが、 ProcessでWinSCP.comを起動後、コマンドプロンプトのような画面にコマンドを打ち込むことが打ち込むことができず困っています。手動だとWinSCPを起動して、”open ホスト名”入力⇒サーバ接続⇒”ユーザー名”入力⇒”パスワード”入力⇒ログイン・・・・⇒ログアウトということができるのですが、参考にできるコードがネット上で見つけられません。起動時に引数を与える方法はたくさん載っているのですが、今回やりたい事と違っているのでどのようにコードを記述すればよいのかご教示ください。よろしくお願いいたします。

みんなの回答

回答No.2

C#のプログラムからスクリプトファイルを作って、 それをWinSCPに食わせたら?

参考URL:
http://winscp.net/eng/docs/scripting
sukapotan
質問者

お礼

バッチファイルやスクリプトファイルを使用する方法も最初考えたのですが、スクリプトファイルを作成した経験がない事とあまり良く知らないので命令文を順次投げていくというイメージしかなかったので、 この方法を却下していました。 コマンド入力のタイミングおよびサーバ接続・ログイン失敗等のエラー発生時の対処はスクリプトファイルで対応できるのでしょうか?

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

Windowsにおける画面(ウィンドウ)操作のアーキテクチャを ご存知ですか? テキストボックスも、ボタンも実はウィンドウです。 つまり、操作するにはウィンドウハンドルを取得しなければ なりません。そもそもWinSCPの親ウィンドウを見つけられ ますか?(FindWindowExまたはEnumWindows) 次にその子ウィンドウを列挙して、テキストボックスやボタンを 見つけるのですが、その方法を知っていますか? テキストボックスに文字列をセットする方法、ボタンにマウス クリックを通知する方法を知っていますか? これらが、全て分からないとプログラムできません。 しかも、正常動作せず、予期した画面に遷移しなかった時は どうやって異常を認識する予定ですか? むしろ、FTP、SFTP、SCPのプロトコルを自力で処理する プログラムを作る方が近道だと思いますよ。 先ずはソケット通信の方法を勉強します。これはこれで、 「通信」のアーキテクチャを覚えることになるので、自分の キャリアアップに繋がります。次にプロトコルを勉強することで やはりスキルアップに繋がります。 FTP等のプロトコルは大抵はクライアントからの要求送信、 サーバからの応答受信が繰り返されるだけです。 要求のコマンド+パラメータと応答コードの意味さえ分かれば さして難しいものではありません。但し、大量データの送受信 ではクライアント側にもサーバ側機能のような処理が必要で、 これはやや難しいところもあります。 いずれのプロトコルでもググれば何かしらのサンプルが見つ かるので、応用できるはずです。

sukapotan
質問者

お礼

ウィンドハンドルを取得して操作する方法は知っています。でもこの方法だとプログラムが動作している間、他の操作をすることができないのでこの方法でやろうとは考えていませんでした。 >むしろ、FTP、SFTP、SCPのプロトコルを自力で処理するプログラムを作る方が近道だと思いますよ。 こちらの方法でやりたかったのですが、時間がなく勉強する暇すらありません。 今回は既存のものを使って短時間でできないかと思い、質問いたしました。 他の掲示板でも似た内容の質問をされている方がおり、最終的に自分で解決しましたと書かれていたので 方法があるのだと思っていました。質問に答えていただきありがとうございました。

関連するQ&A