質問があります。
どなたか御教授ください。よろしくお願いします。


【質問】
FTPにて、サーバー側(OS:Solaris LANG:japan TZ:JST )にあるファイルの
更新時間を取得したい。
クライアント(OS:Win2k VB5)

【現状】
Windows標準のwininet.DLLを使用して手製のFTPツールを作成したのですが
サーバー側の情報を取得した所文字化けします。
これはEUC→SJIS変換にて対応しようとしたのですが、VBはエンコーディングが
弱いためこれも手製のエンコーダーを作成したところバグりまくっています。
また、wininet.DLLが日本語に弱い?ためサーバー側をAmerica仕様にしても
日本仕様でわざわざ取得してきます。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

以下のHPを参考にするとうまくいきそうな気がします。


取得したファイルのFILETIME構造体をCurrencyに
コピーする作業がいりますけど。
参考にしてください。

http://vbvbvb.com/jp/gtips/0101/gFtpFindFirstFil …
http://plaza5.mbn.or.jp/~heropa/vb16.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。とても参考になります。

みなさまの御教授のおかげで、なんとかできました。
ありがとうございました。

お礼日時:2003/11/24 17:09

> サーバー側の情報を取得した所


どのような方法で?

>手製のエンコーダーを作成したところバグりまくっています。
フリーのライブラリを使えばいいのでは?



>サーバー側をAmerica仕様にしても日本仕様でわざわざ取得してきます。
??

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=175765
    • good
    • 0
この回答へのお礼

情報取得方法は、FtpFindFirstFile関数やFtpCommand関数にてLISTを取得しました。

フリーのライブラリを使用せず、できるだけExeの中で処理を行いたいのです。そのために変換モジュールを作成したのですがこれがなかなか・・・

America仕様というのは語弊でした。すいません。
タイムゾーンの設定でグリニッジ標準時にサーバーを設定しても日本時間でわざわざ取得してくるというものです。
このため、APIにて取得した日時も正常にSystemTime変換できません。 これに関しては???です。

今しばらく調査してみます。
回答ありがとうございました。

お礼日時:2003/10/29 13:24

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

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

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

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

QWindowsXPで自動更新(重要な更新)。制限つきアカウントでログオンした状態での自動更新(重要な更新)は可能でしょうか?

 WindowsXPで自動更新(重要な更新)したいのですがWindowsXPで制限つきアカウントでログオンした状態での自動更新(重要な更新)は可能でしょうか?

 また、不可能な場合、WindowsXPでコンピューターの管理者でログオンした状態でWindowsXPの設定を変更することでWindowsXPで制限つきアカウントでログオンした状態での自動更新(重要な更新)が可能な設定(状態)に変更することはWindowsXPの仕様上可能でしょうか?

 Windowsに詳しい方、どうかご回答よろしくお願いいたします。

Aベストアンサー

ちょっと間があいてしまいました。mondaです。

>  制限付きユーザアカウントでログオンした状態で
> グループポリシーからセットできる事柄そのものが
> 設定できるのってWindowsXPの安全上問題はないのですか?

設定はあくまでローカルの Administrators メンバに
限られます。一般の Users グループメンバでは設定
できません。

>  Active Directory ベースのグループポリシーから
> 設定するにはWindowsXPでどのような操作をすれば
> よろしいのでしょうか?

「WindowsXPで」は無理です。
ドメインコントローラでグループポリシー管理コンソール
(GPMC)から操作します。

非ドメインな環境から実行しようとするならば、先の
Microsoft のコンテンツの記述のようにレジストリを
設定しその部分を書き出して、適用させたいPCに
取り込ませる、といった方法でしょうか。

--

QWinInet.dllを利用したHttpQueryInfoの取得

現在、VB6.0にてWinInet.dllを利用したHTTP通信のプログラムを作成しております。
WEBサーバに対してリクエストを送るところまでは正常に動作しているのですが、リクエストに対するWEBサーバからの応答の取得がうまく動作しません。

具体的には、
HttpSendRequest(hUrl, vbNullString, 0, StrPtr(~), UBound(~))
でデータを送り、この応答を取得するために、
HttpQueryInfo(hUrl, HTTP_QUERY_STATUS_CODE, strBuffer, lngLength, 0)
を記述しています。
これを実行した際、LngLengthには3が戻ってくるのですが、strBufferに戻る値が、3桁ではありません。
文字コードかデータ型の違いかで全く読み取れない値が帰ってきます。
通常であればstrBufferに入る値は何も変換なく読み取れるものなのでしょうか?
今回だと、200や404がそのまま取得できるものなのでしょうか?
どなたか、分かる方がおられましたら、ご教授下さい。

現在、VB6.0にてWinInet.dllを利用したHTTP通信のプログラムを作成しております。
WEBサーバに対してリクエストを送るところまでは正常に動作しているのですが、リクエストに対するWEBサーバからの応答の取得がうまく動作しません。

具体的には、
HttpSendRequest(hUrl, vbNullString, 0, StrPtr(~), UBound(~))
でデータを送り、この応答を取得するために、
HttpQueryInfo(hUrl, HTTP_QUERY_STATUS_CODE, strBuffer, lngLength, 0)
を記述しています。
これを実行した際、LngLengthには3が戻ってくる...続きを読む

Aベストアンサー

HttpQueryInfoの第3引数の定義がNG

http://www.google.com/search?q=Declare+Function+HttpQueryInfo

QWindowsVistaの更新プログラム確認が終了しません、Windows Update出来ません。

WindowsVistaを購入時の状態に戻し、ドライバを更新Sp1Sp2と更新すると
以下の画面が表示され

新しいWindowsUpdateソフトウェアをインストールする
更新プログラムを確認するには、初めにWindowsUpdateの更新プログラムをインストール
してください。自動更新設定は変更されません。
更新プログラムをインストールするため、WindowsUpdateが自動的に閉じた後で再度開きます。

今すぐインストールをクリック、
Windows Update エージェント 7.6.7600.256(最新バージョン)がインストールされます。
それ以後、いくら更新プログラム確認しても何時間待っても終了しません。
スタンドアローンのWindowsUpdateインストールも検索していますのまま何時間も終了しません。
sp1ぐらいまでは、更新して終了にWindowsUpdateがダウンロードされていましたが、
sp2以後はそれも機能しません。
Sp2更新直後なら、Windows Vista 用のシステム更新準備ツール (KB947821)
Internet ExpLorer9
旧バージョンのWindows Update エージェント7.4.7600.226WindowsUpdateAgent30-x86
はインストールできますが、その後コントロールパネルからwindowsupdateを行うとやはり
最新バージョンのWindows Update エージェント 7.6.7600.256がインストールされ、以後
更新プログラム確認が終了しません。
Windows Update のコンポーネントをリセットする方法MicrosoftFixit.wu.MATSKB.Runでも
修復も出来ません。
Windows Update コンポーネントを手動でリセットする方法もアクセスを拒否されたりエラー
が出たりしてうまくいきません。
MicrosoftEasyFix20179.mini簡易修正ツールは開くことが出来ません。
マイクロソフトの更新プログラムのクライアントへの更新しますのページにはVisutaの
バージョンはないようです。
どうしたらSp2以後の更新ができるのでしょうか?教えてください。

WindowsVistaを購入時の状態に戻し、ドライバを更新Sp1Sp2と更新すると
以下の画面が表示され

新しいWindowsUpdateソフトウェアをインストールする
更新プログラムを確認するには、初めにWindowsUpdateの更新プログラムをインストール
してください。自動更新設定は変更されません。
更新プログラムをインストールするため、WindowsUpdateが自動的に閉じた後で再度開きます。

今すぐインストールをクリック、
Windows Update エージェント 7.6.7600.256(最新バージョン)がインストールされます。
そ...続きを読む

Aベストアンサー

結論から申し上げると、放置です。「SP2」適用後、「Windows Updaeエージェント」をインストールした後、確認の画面がなかなか終わらないのは、もう、「Vista」では、定番です。
http://www.ikt-s.com/vista_windows_update/

下記リンクを参考にWindows Vista 用のシステム更新準備ツール (KB947821)とか使っても良いですが、それでも、「Windows Update」は、数時間かかります。手間をかけた割に効果が薄いです。
http://www.life-gp.net/2015/10/windows-update.html

「SP2」適用後、「Windows Update」をかけて、そのまま放置でいいでしょう。
(数十分後、ハードディスクのアクセスランプも点灯せず、ネットにもアクセスする気配がなく、固まっているようにしか見えませんが、それでも、放置です。)

仮想PC(VirtualBox)で、「Vista」SP未適用からSP2にして、「Windows Update」をかける・・・という作業を何回もしてますが、最近は、4時間では終わりません。PM10時に「Windows Update」をかけて、そのまま就寝・・・で朝6時に起きると「○○○個の更新プログラムが利用可能です。」という画面になっているので、8時間はかからないようです。

結論から申し上げると、放置です。「SP2」適用後、「Windows Updaeエージェント」をインストールした後、確認の画面がなかなか終わらないのは、もう、「Vista」では、定番です。
http://www.ikt-s.com/vista_windows_update/

下記リンクを参考にWindows Vista 用のシステム更新準備ツール (KB947821)とか使っても良いですが、それでも、「Windows Update」は、数時間かかります。手間をかけた割に効果が薄いです。
http://www.life-gp.net/2015/10/windows-update.html

「SP2」適用後、「Windows Update」...続きを読む

Qwininet.dllとwsock32.dllについて

クライアントのVBAから、サーバにHTTPで文字データを送信しようとしています。

1. WinAPIの"InternetOpenURL"(wininet.dll)が使えると思いましたが、MSDNLibraryではWinCE用と英語で言っているようでした。W2Kの自PCにも上記DLLは入っていますが、W2Kで使うのは一般的ではないのでしょうか?

2. クライアントのIPアドレスも送信したいので、wsock32.dllのAPIで取得しようとしています。wininetやwsock32が、いつインストールされるものなのか(OS入れた時か、Officeか、IEか等)を調べる手段はあるでしょうか?また、MS社以外の製品によって、これらのDLLがアップデートされてしまうことは通常ないと考えていてよいものでしょうか?

ご教授下さいますよう、よろしくお願いします。

Aベストアンサー

1, もしかしてCE .Net用のMSDNのページを見ていませんか?
http://msdn.microsoft.com/library/en-us/wcewinet/html/cerefinternetopenurl.asp
普通はこちらです。
http://msdn.microsoft.com/library/en-us/wininet/wininet/internetopenurl.asp

IE3.0以降がインストールされたWin95以降、WinNT4.0以降が対象のようです。

2. wininet.dllは元から入っているか、IE3.0以降を入れることでインストールされるらしいです。
wsock32.dllはさらに低レベルの物ですから、それ以前にインストールされているでしょうね。
どちらにしろ現在このdllが入っていない稼動状態のWindowsはほぼ無いと思います。

> MS社以外の製品によって、これらのDLLが
ウイルスとか。
真っ当なソフトなら多分そんなことはしないでしょう。
そもそもライセンスは大丈夫か?って気がしますし。

1, もしかしてCE .Net用のMSDNのページを見ていませんか?
http://msdn.microsoft.com/library/en-us/wcewinet/html/cerefinternetopenurl.asp
普通はこちらです。
http://msdn.microsoft.com/library/en-us/wininet/wininet/internetopenurl.asp

IE3.0以降がインストールされたWin95以降、WinNT4.0以降が対象のようです。

2. wininet.dllは元から入っているか、IE3.0以降を入れることでインストールされるらしいです。
wsock32.dllはさらに低レベルの物ですから、それ以前にインストールされているでし...続きを読む

QWindows Defenderの更新プログラムの除外は可能ですか

Vista SP1、タスクトレイのWindows Updateのアイコンから随時アップデートしています。スパイ対策ソフトは市販の統合ソフトを使用しているためWindows Defenderの使用を解除しています。毎日のようにWindows Defenderの更新プログラムがアップされタスクトレイは常に表示されている状態です。Windows Defenderは不必要な更新プログラムなのでWindows Updateから除外したいと思っていますがWindows UpdateからWindows Defenderの更新プログラムを除外する方法はありますでしょうか。アドバイス下さい。Windows Updateの設定は「更新プログラムを確認のみ」にしています。

Aベストアンサー

以下で改善されないでしょうか?

・コンパネ→セキュリティ センターからWindows Defenderを無効にする

・利用可能な更新プログラムを表示して、該当項目を右クリック→更新プログラムの非表示

QFTPサーバーから受信したファイル一覧からファイル名だけを取得したいです

こんばんは。いつもお世話になっております。

VB.NET+WinXPなのですが、
FTPサーバーにログインして、
LISTコマンドでファイル一覧を要求すると
「drwxrwxr-x 2 53 53 4096 Feb 28 2006 abc」
などというファイルやフォルダの一覧がかえって来ると思うのですが、
この中からファイル名やフォルダ名だけを取得するには
どうしたらよいでしょうか。
TABやコンマが入っていないので、文字列関数で切り取るにも
区切りがわからないと思うのです。
ローカルドライブのDir関数なら、FileAttribute.Nomalや.Directoryの指定でファイル名だけや
ディレクトリー名だけを指定して
取得することが出来るのですが、FTPサーバーの場合からの場合はどういった方法があるでしょうか。
参考程度でも構いませんので教えて頂けるとたすかります。m(__)m

Aベストアンサー

#1>ファイル名やディレクトリ名にスペースが使われている場合もあって難しいかなと思うのですが、
全然問題なし♪
例えば
件のリストの1行はスペースで区切られた9のフィールドと考えられますけど、その場合
$line="-rwxrwxr-x 2 53 53 4096 Feb 28 2006 include space 1.jpg";
@field = split(/\s+/, $line, 9);#フィールド数をしていすると、最後はまとめられる

print $field[8];# 9番目のフィールドにスペースがあっても大丈夫

QWindows7 更新プログラムエラー

Windows7 更新プログラムが更新できなく、シャットダウンのたびに更新プログラムをインストールしてからシャットダウンとなります。がインストールできません。

Windows7 64ビット バイオです。

毎回シャットダウンのたびに出るので
インストールする更新プログラムに戻ってレ点を消しますが同じです。
更新プログラムを削除したいのですが、削除できません。削除する方法を教えて下さい。

[MS13-052] Windows 7 Service Pack 1 および Windows Server 2008 R2 Service Pack 1 用の .NET Framework 3.5.1 のセキュリティ更新プログラムについて (2013 年 7 月 9 日)
(KB2833946)
です

Aベストアンサー

スタートをクリックしてコントロールパネルを開き、システムとセキュリティーをクリックして開く。
次に、windows Update 自動更新の有効化または無効化を選択して開き、更新プログラムがある場合は自動的にインストールをする(推薦)に置き換える。
推薦される更新プログラムにチェックを入れる。
Microsoft Update の更新プログラムについても重要な更新プログラムを入手する(G)にチェックを入れる。
最後にOKを押してコントロールパネルを閉じて下さい。
更新プログラムのダウンロードとインストールに失敗をされた場合、更新をされた更新プログラムを開き、一覧からプログラムを選択してアンインストールまたは変更をクリックして下さい。
但し、セキュリティーの更新プログラムでアンインストールをすることが出来ない物があります。
windows7 のコントロールパネル。

Qwininet.dllのInternetOpenの同期、非同期について

wininet.dllのInternetOpenの同期、非同期について

お世話になります。

VBAでFTPの転送をする際に、InternetOpenを使うのですが同期させたいと思います。
以下サイトなどでいろいろ調べたのですがdwFlagsの指定の仕方について質問です。

1.dwFlags に 0 が指定された場合は、同期すると考えて宜しいでしょうか?

2.dwFlags に、文字列で INTERNET_FLAG_ASYNC を指定すると非同期となるということでよいでしょうか?

3.複数を組合せの時はどのように記述しますか?


以上、宜しくお願い致します。

<参考サイト>
http://www.red.oit-net.jp/tatsuya/vb/WinInet.htm#InternetOpen

●参考サイトより抜粋

Public Declare Function InternetOpen Lib "Wininet.DLL" Alias "InternetOpenA" _
(ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, _
ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long

dwFlags : オプション。以下のパラメータの組み合わせを指定します。
INTERNET_FLAG_ASYNC サーバーから取得する(非同期)。
INTERNET_FLAG_FROM_CACHE キャッシュから取得する。
INTERNET_FLAG_OFFLINE INTERNET_FLAG_FROM_CACHEと同じ。

wininet.dllのInternetOpenの同期、非同期について

お世話になります。

VBAでFTPの転送をする際に、InternetOpenを使うのですが同期させたいと思います。
以下サイトなどでいろいろ調べたのですがdwFlagsの指定の仕方について質問です。

1.dwFlags に 0 が指定された場合は、同期すると考えて宜しいでしょうか?

2.dwFlags に、文字列で INTERNET_FLAG_ASYNC を指定すると非同期となるということでよいでしょうか?

3.複数を組合せの時はどのように記述しますか?


以上、宜しくお願い致します...続きを読む

Aベストアンサー

VBは範疇ではない(使ったことない)のですが…

>InternetOpenを使うのですが同期させたいと思います。

この同期について、どういう理解です?
クライアントにあるファイルとサーバにあるファイルが同一になるように。
とかいう意味でしたら、そこは自分でそのように処理する必要がありますが…。

>1.dwFlags に 0 が指定された場合は、同期すると考えて宜しいでしょうか?

指定なし…なのでそうなるでしょう。
# ここで言う同期とは…「結果が得られるまで関数コールから戻らない。」という意味の同期かと…

>2.dwFlags に、文字列で INTERNET_FLAG_ASYNC を指定すると非同期となるということでよいでしょうか?

まず、「文字列」ではありませんのでご注意を。
定数です。
値については…ヘッダファイルを参照するなりして下さい。
# というか、掲示されたページの最初の方で設定していますよね。[標準モジュール]ってところで…
INTERNET_FLAG_ASYNCだと、0x10000000です。(VB的には&H10000000)
# 結果はイベントなどで通知…ということになるかと思われます。
# InternetSetStatusCallback()で設定したコールバックが呼ばれる…っぽい。

>3.複数を組合せの時はどのように記述しますか?

論理和で指定します。
API呼び出しではよくあること…ですが……

VBは範疇ではない(使ったことない)のですが…

>InternetOpenを使うのですが同期させたいと思います。

この同期について、どういう理解です?
クライアントにあるファイルとサーバにあるファイルが同一になるように。
とかいう意味でしたら、そこは自分でそのように処理する必要がありますが…。

>1.dwFlags に 0 が指定された場合は、同期すると考えて宜しいでしょうか?

指定なし…なのでそうなるでしょう。
# ここで言う同期とは…「結果が得られるまで関数コールから戻らない。」という意味の同期かと…

>...続きを読む

Qwindows media player 9 の更新

windows media player 9 を使用している時、「更新(update)しますか?」と要求があったので、更新しようとしたのですが、
”セットアップが完了できませんでした”で終了してしまいます。
”windows media player 9シリーズはインストールされませんでした。windowsを更新するにはwindows media player 9シリーズのセットアップをもう一度実行してください。”と表示されます。
更新の方法がいけないのでしょうが?

os:windows xp professional sp2
機種:Dell inspiron 6400

Aベストアンサー

>windows media player 9 を使用している時・・・
>os:windows xp professional sp2・・・

windows media player 9は98、Me、2000用です。
XPはWindowsMediaPlayer10もしくは11です。

動作に問題が出てもしかたがありません。

バージョンアップをお勧めします。
http://www.microsoft.com/japan/windows/windowsmedia/download/default.aspx

QWININET.DLL FtpCommand(TYPE)がFtpGetに反映されない

漢字を含まないファイルの場合、WININET APIのFtpGetFileを使用して、ASCIIにて問題なくファイルをGETできます。
漢字を含むファイルの場合、コマンドラインのFTPではQUOTE TYPEを指定してGET出来ることを確認できたのですが、WININET APIのFtpCommandの場合だとQUOTE TYPEが送出後のFtpGetFileに反映されません。
FtpCommand自体は成功しているようなのですが・・・何とも五里霧中の状態です。

具体的には、以下のようなコマンドを発行しています。
bflag = FtpCommand(lFtpHandle, False,FTP_TRANSFER_TYPE_ASCII,"TYPE B", 0, 0)

説明に不備があるかもしれませんが、もし少しでも分かる方がいらっしゃいましたら、ヒント程度でも良いのでご回答をお願い致します。

Aベストアンサー

FtpGetFileの引数でFTP_TRANSFER_TYPE_BINARYを指定すればよい


人気Q&Aランキング

おすすめ情報