PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
2160 | 98/06/30 11:00:14 | RE:RE:RE:PB6: WIN32API関数SHFILEOPERATIONの使用法を教えて下さい。 By kin |
2127 | 98/06/26 18:48:45 | RE:RE:PB6: WIN32API関数SHFILEOPERATIONの使用法を教えて下さい。 By morimori |
2121 | 98/06/26 17:15:27 | RE:PB6: WIN32API関数SHFILEOPERATIONの使用法を教えて下さい。 By manabu |
2119 | 98/06/26 15:20:31 | PB6: WIN32API関数SHFILEOPERATIONの使用法を教えて下さい。 By morimori |
カテゴリ:旧電子会議室
日付:1998年06月26日 15:20 発信者:morimori
題名:PB6: WIN32API関数SHFILEOPERATIONの使用法を教えて下さい。
はじめまして。
早速質問なんですが、ディレクトリのコピー関数としてshell32.dllのAPI関数
SHFILEOPERATIONを利用しようとしているのですが、どうしてもうまく動きません。
エラー状況としては
?ディレクトリの下を全てコピーする場合
SHFILEOPERATIONの呼び出しを複数回行うと2回目以降で必ずページ違反になる。
?指定ファイルをコピーする場合
コピーは正常に行われるが、
\"XXXXXXX\"はコピーできません。指定されたファイルが見つかりません。
とエラーメッセージが出てしまう。\"XXXXXXX\"はメモリ上のゴミが
出力されている模様。
これらの現象から文字列の受け渡しがうまくできていないのではと
直感的に思ったのですが、どう対処していいのかが分かりません。
ちなみに、某Delphi関連のメーリングリストでは
/************ 以下引用 *************************************/
WindowsAPIでは、バッファ内に複数の文字列があるときは、各文字列は
ヌルで終わる文字列となりますが、最後の文字列には2つのヌルが必要
になるようです。
/************ 以上*****************************************/
と書いてあります。
以上よりstringとCharの変換不備かヌルの問題(かなぁ)という
ところまで推測しているのですが、どうしても解決策が見いだせません。
些細な情報でもかまいませんので、アドバイス願います。
/************ プログラミング例 START ***********************/
//グローバル外部関数として宣言
FUNCTION long SHFileOperationA( Ref gs_sh_file pbstr ) LIBRARY \"shell32.dll\"
long Ret
gs_sh_file gs_sh_file
gs_sh_file.hWnd = Handle(this)
//1:MOVE,2:COPY,3:DELETE,4:RENAME
gs_sh_file.wfunc = 2
gs_sh_file.pfrom = \"c:\\temp\"
//gs_sh_file.pfrom = \"c:\\temp\\temp.txt\"
gs_sh_file.pto = \"A:\\\"
//gs_sh_file.fflags = 0
//gs_sh_file.fAnyOperationsAborted = 0
//gs_sh_file.hNameMappings = 0
//gs_sh_file.lpszProgressTitle = \"\"
Ret = SHFileOperationA(gs_sh_file)
/************ プログラミング例 END ***********************/
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.