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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.