過去の桐井戸端BBS (桐ver.8)
6175 桐でWINDOWSの「ファイルコピー」を利用したい。 だるま 2000/05/28-18:42
ひんしゅく承知で続けて質問させていただきます。m(__)m
WIN98 桐V8 SP5 イベント
桐でWINDOWSの「ファイルコピー」が利用できるのでしょうか?
あのフォーム(フォルダマークからファイルがパラパラと動く・経過メーターがある)が
利用出来たらと考えていて、桐のフォームで作ろうとしましたが、解らない事が多すぎて挫折。
(ただ今は、ある所のサンプルをダウンロードして、少しは(^_^)b)
6179 Re:桐で Windows の API 利用 Ogo 2000/05/28-19:28
記事番号6175へのコメント

>桐でWINDOWSの「ファイルコピー」が利用できるのでしょうか?
>あのフォーム(フォルダマークからファイルがパラパラと動く・経過
>メーターがある)が利用出来たらと考えていて、

あれは Windows の API を直接いじる( SHFileOperation という関数を
利用する)必要があるので、桐から直接は無理(少なくとも桐のフォーム
上に表示は無理でしょう)。
「シェル実行」等を使うにしても、コマンドライン操作では無理じゃない
かな?(しかも非同期実行になるし)

ちゃんとした開発言語( VisualBasic 等)の勉強から始めないと……

#あっ、 VBS を使えばできるかな? LoveLetter だって作れることだし。
# Windows Scripting Host 講座
# http://www.asahi-net.or.jp/~qf6h-sng/wsh/index.html

6181 Re:桐のフォームで作ります。 だるま 2000/05/28-20:08
記事番号6179へのコメント
Ogoさん、度々、本当に有難う御座います。<m(__)m>
行って来ました。
ほーんのちょっとだけかじったことが有りますが。私には無理!(T.T)
勉強のために桐のフォームで挑戦します。

同僚はエクセルのマクロで使用しているのですが、くやし〜〜いっ
6185 Re:桐のフォームで作ります。 佐田 守弘 2000/05/28-23:26
記事番号6181へのコメント
だるまさん
ファイルコピーなら、Windowsで使えるMS-DOSコマンドxcopyを使ったら動でしょうか。
私は日常のリニューアルバックアップを始め、更新ファイルをサブドライブに保存したり、
MOに保存するといった場合は全てこのコマンドで行っています。
MS-DOSのバッチファイルの知識が多少必要ですがVBSよりは簡単なのでは。
サンプルのいくつかは私のHPにも書いておいたはずです(雑誌のバックナンバー保存室を調べて下さい)。

作ったバッチファイルは桐のシェルコマンドで実行すれば良いはずです。

佐田守弘(KS-00119)
6187 Re:桐のフォームで作ります。 hidetake 2000/05/29-00:18
記事番号6185へのコメント
通常の VBS でファイルコピーを行う場合は次のような手法を使うと思いますが、
これはパラパラめくる API は使っていないようですね。

WSH では通常の VB ではデフォルトでは使えない操作で API を呼び出さないと
不可能なものも、初期値として使えるようになっている部分がありますが、
VB のような API 呼び出しも可能なのだろうか?
=============================================================
Dim WshFS
Set WshFS = CreateObject("Scripting.FileSystemObject")
WshFS.CopyFile "C:\*.*","D:\TMP\"
Set WshShell = Nothing
WScript.Quit
=============================================================
=CopyFileメソッドの詳細=
書式 CopyFile source,destination[,overwrite]
引数 source
 コピーするファイルを表す文字列を指定。ワイルドカードが利用できる。
引数 destination
 コピー先のファイルやフォルダを表す文字列を指定。
引数 overwrite
 TrueまたはFalseを指定。省略時はTrue。Trueの場合は、コピー先へ上書きされる。
6188 Re:桐のフォームで作ります。 hidetake 2000/05/29-01:03
記事番号6187へのコメント
VBS では無くて、インストール用の INF ファイルを用いれば
パラパラ表示ではありませんが、%表示で経過がわかります。

FILECOPY 用の INF ファイルを作り
rundll32.exe setupx.dll,InstallHinfSection DefaultInstall 132
FileCopy.inf
を実行するわけですが、詳しくは
http://hp.vector.co.jp/authors/VA006065/scripts/inf2.txt
http://hp.vector.co.jp/authors/VA006065/scripts/inf3.txt
をご覧下さい...


6189 Re:桐のフォームで作ります。 hidetake 2000/05/29-01:42
記事番号6187へのコメント
書き直すのを忘れてた (^_^ゞ
>Set WshShell = Nothing
は Set WshFS = Nothing ですね! _o_

6192 Re:桐のフォームで作ります。 hidetake 2000/05/29-09:59
記事番号6187へのコメント
ついでに VBS のもう1つの方法
こちらもパラパラ表示はしませんが、LOVE-LETTER-FOR-YOU.TXT.vbs
でも使っていた方法です。特に変わった方法でもなく、オブジェクト
にファイルをセットしコピーする方法です。
=============================================================
Dim fso, c
Set fso = CreateObject("Scripting.FileSystemObject")
Set c = fso.GetFile("N:\DATA\DOC\FILENAME.EXT")
c.Copy("C:\TMP\")
Set fso = Nothing
Set c = Nothing
=============================================================

6193 Re:桐のフォームで作ります。 hidetake 2000/05/29-12:00
記事番号6188へのコメント
補足...
VBS をシェル実行する方法は【多遊】さんのところに書いてあります。

また、シェル実行をフォームの KEV から実行したい場合でオプションパラメータが必要な場合は、
コマンドではパラメータを直接は渡せないので、フォームに隠したコマンドボタンを配置し、
パラメータの変更があれば、オブジェクト操作でパラメータを変更し、
呼び出し実行するとバッチや VBS 等、パラメータを渡すだけの無駄なスクリプトが必要なくなる場合もあります。


6195 Re:桐のフォームで作ります。 hidetake 2000/05/29-12:18
記事番号6193へのコメント
INFファイルを用いてファイルをコピーする例
下の INF は INFファイルと同じフォルダにある
FILENAME.EXT を Target にコピーします。

印字コマンドなどで作成し実行すれば良い訳です。
後はコマンドボタンのシェル実行で、
rundll32.exe setupx.dll,InstallHinfSection DefaultInstall 132
FileCopy.inf
を実行するようにでも指定して method で呼び出し
実行して下さい...
=============================================
[Version]
Signature = "$CHICAGO$"

[DefaultInstall]
CopyFiles = copyfile

[SourceDisksNames]
1 = copyfile,"",,%1%

[SourceDisksFiles]
FILENAME.EXT = 1

[DestinationDirs]
DefaultDestDir = 33,%Target%

[copyfile]
FILENAME.EXT

[Strings]
Target="D:\TMP"
=============================================

6204 Re:ギブアップです だるま 2000/05/30-20:58
記事番号6195へのコメント
hidetakeさん、ご返事が遅くなりまして誠に申し訳御座いません。m(__)m
この件につきましては、hidetakeさんからご指導頂けるかなぁと思っておりました。
今までドツボにはまっておりました。
せっかく教えていただいたのですが、ギブアップです。
右クリック→「インストール」で実行してみても、LDIDの33が「D:¥WINDOWS」を返してきて、
エラー3(受け側が開けません)です。
そこで、「D:¥」に「WINDOWS」フォルダを作り、その下に「TMP」を置いて、
Targetを”¥TMP”にしましたがダメでした。LDIDを色々変えてみましたが、ギブアップです。
6205 Re:桐のフォームで作ります。 だるま 2000/05/30-21:25
記事番号6185へのコメント
佐田 守弘さん、早速のご指導有難う御座いました。
ご返事が遅くなりまして、誠に申し訳御座いません。m(__)m
色々試していて、勉強(ハマって)しておりました。

今回の質問の目的は、社内の定型業務を誰でも出来るように、「エクセル」や「桐」でマクロ化
(大した事はしていません。私は桐担当です。)しているのですが、そのマクロ等の実行中の見た目だけの問題です。
パソコンがよく解らない人は、見た目だけで評価してしまいます。
自分ではまだ作れそうでもありませんし、そこであの「ファイルコピー」が簡単に使えたらなぁと思った次第です。
しかし、世の中、楽したらいけないようです。(;>_<;)
6209 Re:ギブアップです hidetake 2000/05/31-00:26
記事番号6204へのコメント
あれ? 駄目だったですか...

LDID の 33 は「Old MS-DOSフォルダ」だとの事ですが、
何も帰って来ない設定のようでしたので、どこでも使えるだろと
判断しやってみたのですが、私の環境では特に問題ありませんでした。

ところで、だるまさんの環境はどうなっていますか?
Windows のバージョンとか、それはアップグレードか素からのインストールか?
 また、ADVAPI32.DLL と ADVPACK.DLL の日付やバージョンは?
それに D:\WINDOWS に何か思い当る過去の記憶とか?

う〜む、何だろう?

1つ私の環境でもおかしな現象が発生するのは、INF を実行した際エラーが発生した後は、
そのまま LDID の値や \ のある無しを修正しても、実際には何故か直ぐに反映されず、
リネームしてから修正し実行したら OK になります。

INF が正しくない場合は、1度目のインストールではエラーも発生せず
2度目でエラーメッセージが発生する場合もあるので、
何か途中でエラーが発生した後で修正しても、
元の物がメモリ上に残ってしまっているのかも知れません?

Cドライブであれば他の LDID でも代用できるでしょうし、
INF のあるドライブで同じであれば 1 を用いれば良いのでしょうが、
任意のドライブで扱いたい場合に指定する LDID
が無いようなので 33 が使えないとなると面白くないですね!

いずれにせよ、INF ファイルを用いたファイルコピーは面倒な部分も多いので、
例の API を用いたコピーツールや、簡単に呼び出せる DLL などがあれば良いのですが...

Excel や Access であれば VBA で API 呼び出せば良いのですが...

しかし、同僚の方は Excel でお使いとはなかなかのやり手ですね!

6210 Re:ギブアップです hidetake 2000/05/31-00:58
記事番号6209へのコメント
LDID の 33 が D:\WINDOWS になると言うことは

レジストリの
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup]
の中に設定が入っているのでしょうか?
"OldWinDir" が "D:\WINDOWS" となっているのでしょうか?
私の環境では "" です。

汎用的では無い使い方だしなぁ〜

PS.
やっぱり、一度失敗するとその状態のままの INF がメモリ上に残っているようです。
エラーが発生した場合は、名前を変えてから修正保存し、そして実行する必要があるようです。
あるいは PC を再起動するとか...

6211 Re:ギブアップです hidetake 2000/05/31-01:55
記事番号6210へのコメント
コピーツールと言えば、私は sync.exe と言うものを使っているのですが、
----------------------------------------------------
File Synchronizer     for Sailor Mercury
usagi:  sync [-option] <src path> <dst path>
option:    -r  Recursive
        -o  Overwrite
        -u  Update
        -d  Delete
        -v  Verbose
        -c  Continue
        -n  No Copy
----------------------------------------------------
久しぶりに vector を見てみたら、DOS 時代には愛用していた
c.mos さん作の ZCOPY の Windows 版も作られていたのですね!

この ZCOPY はコマンドラインからも使えるものの、設定は GUIで行って、
その設定名をコマンドラインからは指定するようになっています。
設定自体はレジストリ内にあるのですが、vbs を使えば桐からvbs を呼び出し、
レジストリを設定の上、これを実行なんて言う技も使えますよね!

先の INF を用いたコピーにしても vbs と連動すれば、レジストリ内の LDID の設定を変更してから
実行すれば環境にも囚われずに使うことも可能になります。

API の呼び出しや Windows の連携機能を使えない桐だから面倒な手法を取らざるを得ない場合もある訳ですが、
知恵を絞ればいろいろな事ができそうですね!

LOVE-LETTER-FOR-YOU だって、特別な裏技などを使っている訳でもなく、普
通に公開された機能を使っているだけのようです。

vbs を使えなくするなら、lnk だって pif だって inf だって
reg だって js だって危ないし他にもいろいろあります!

要は知り合いだろうが、他人からのものを疑いもせず開かないことが基本ですよね!
UNIX のシェルスクリプトだって、システムは消せるしメールも送れる訳ですし...

でも、私は vbs (WSH) はメインのマシンではインストールしてありません。
だからチェックは面倒!!! (^_^;

これからの時代、ご用心!!!

6237 Re:ギブアップです hidetake 2000/06/01-22:41
記事番号6211へのコメント
桐を見ていたら CMDCMND.DLL の中で SHFileOperation は使っているのですね!

で、桐のファイルダイアログやファイルパレットでファイルをコピーする場合は、
ちゃんとこの API を使っているのですね...
今まで使ったことはあるけど気付かなかった (^_^ゞ

あとは K3 がこの API を使うコマンドを作ってくれればよいのか...

それから、vbs では WindowsAPI は呼びだせないようですね、
だからあとは ActiveX 等でこのファイル操作を備えたものがあれば呼びだせば良いのですが、
なかなか見つかりません。

6240 Re:お手数を掛けました。有難う御座います。 だるま 2000/06/02-13:03
記事番号6237へのコメント
hidetakeさん、本当に有難う御座います。
hidetakeさんからご指導頂けるかなと期待して質問させていただいたのですが、
お手数をお掛けしたようで、誠に申し訳御座いません。<m(__)m>

INFファイルの件なんですが、LDIDの33で返ってくるフォルダを利用して
コピーしても(再起動直後)、ダメでした。

しかし、やる気になれば、桐でもかなりのことが出来ることが分かりました。
非常に勉強になりました。

でも、今は、桐の表仕様だけで頑張りたいと思います。と言うか、私には桐で精一杯です。

ただ、「プロセス終了」は便利ですよね。SP5は調子悪いし、SP4に戻せば使えなくなるし、
よく考えたらSP4に戻せないし・・・(頭がパンク!/(.^.)\)
6241 Re:お手数を掛けました。有難う御座います。 hidetake 2000/06/02-13:22
記事番号6240へのコメント
だるまさん駄目でしたか...

後は K3 にお願いしましょう!

ファイル複写 <入力ファイル名>,<出力ファイル名>,終了状態=<変数名>,アニメーション=【する|しない】,上書確認=【する|しない】

ファイル移動 【<元ファイル名>|<元フォルダ名>】,【<目的ファイル名>|<目的フォルダ名>】,終了状態=<変数名>,アニメーション=【する|しない】,上書確認=【する|しない】

と言うことでよろしくお願いします _o_ > K3


6806 Re:桐でWINDOWSの「ファイルコピー」( #6175 ) Ogo 2000/07/10-01:55
過去ログ
#2781 「桐でWINDOWSの「ファイルコピー」を利用したい。」で

>桐でWINDOWSの「ファイルコピー」が利用できるのでしょうか?
>あのフォーム(フォルダマークからファイルがパラパラと動く・経過
>メーターがある)が利用出来たらと考えていて、桐のフォームで作ろう
>としましたが、解らない事が多すぎて挫折。

桐のフォームではありませんが、それを可能とするアプレットを作成しました。
ドキュメントは不親切で、使用例もありませんが、興味のある方はごらん下さい。

実際はそんなに役立たないかもしれません。
何せ、ファイルコピーのアニメーションが始まる前に、ファイルコピーが終わってしまうのです
(よっぽど大きいファイルでない限り)。
まぁ、ハードディスク以外のメディアとのファイルコピーなら役に立つか。

ちなみに、ごみ箱を利用したファイル削除(復活可能)もできます。

もうすぐ、【多遊】さんのページのダウンロードコーナーで公開してもらえると思います。

http://www2u.biglobe.ne.jp/~s_tanaka/index.htm

6820 Re:桐でWINDOWSの「ファイルコピー」( #6175 ) 【多遊】 2000/07/10-23:34
記事番号6806へのコメント
Ogoさんの、桐でWINDOWSの「ファイルコピー」の件

遅くなりましたが、ただいま登録いたしました。
よろしくご利用下さい。

また、Ogoさんの他の作品他を紹介しております。
よろしくお願いいたします。
6824 Re:利用させていただいております だるま 2000/07/11-14:52
記事番号6806へのコメント
Ogoさん、有り難う御座います。心にお留め置きいただいて感謝!感謝!!です。
早速利用させていただいております。
会社の同僚(エクセルマン)には詳しい内容は伏せて、「桐でも出来るよ!」と見せましたら、
目が点点(*_*)になっていました。嬉しい〜(^ヘ^)v

更にわがままを言わせていただけるのなら、「シェル実行」で利用できたらなぁ〜

今後とも宜しくお願いいたします。

戻る