2009-08-18 10 views
2

J'ai utilisé les fonctions CopyFilea et ShFileOperation. CopyFileA a copié le fichier (grandes données encombrantes). mais il n'a pas montré la progression de la copie et aussi essayé dans SHFileOperation api cela montre l'erreur.Comment afficher la boîte de dialogue de progression de la copie de fichiers Windows via PB?

PB Version est 10.2.0 build 7516

Message d'erreur: erreur d'appel fonction externe% de

tout corps S'il vous plaît me donner une solution?

+2

Montrez vos "déclarations de fonctions externes" et quelle est la version powerbuilder? – RealHowTo

+0

Power bUilder Version 10.2.0 Construire 7516 –

Répondre

0

Quel est votre système d'exploitation? SHFileOperation a été remplacé dans Windows Vista par IFileOperation.

+0

Windows XP, Copy Progress fonctionne maintenant bien. Merci –

2

Il y a a discussion of SHFileOperation on sybase.public.powerbuilder.general. Ce bloc de code montre comment configurer correctement la structure, pour une opération de suppression dans ce cas - cela aide-t-il?

type os_shfileopstruct from structure 
     unsignedlong   hwnd 
     unsignedlong   wfunc 
     blob   pfrom 
     blob   pto 
     unsignedinteger   fflags 
     unsignedlong   banyoperationsaborted 
     unsignedlong   hnamemappings 
     string   lpszprogresstitle 
end type 

//inside a function call: 
// Arguments: as_SourceFile - the file(s) to delete. 
//    aui_flags  - file operation flags (0 - default) 
//    aw_requestor - the requesting window 

os_shfileopstruct  lstr_FileOp 
Integer li_rc 

lstr_FileOp.hWnd     = Handle(aw_requestor) 
lstr_FileOp.wFunc     = FO_DELETE 
lstr_FileOp.pFrom     = Blob(as_SourceFile + Space(2)) 
BlobEdit(lstr_FileOp.pFrom, Len(as_sourcefile) + 1, Char(0)) 
BlobEdit(lstr_FileOp.pFrom, Len(as_sourcefile) + 2, Char(0)) 
lstr_FileOp.fFlags    = aui_flags 
lstr_FileOp.hNameMappings   = 0 
lstr_FileOp.lpszProgressTitle  = Space(10) 

li_rc = SHFileOperationA(lstr_FileOp) 
IF li_rc <> 0 THEN 
     IF NOT IsNull(lstr_FileOp) THEN 
       IF lstr_FileOp.bAnyOperationsAborted = 1 THEN 
         RETURN 0 
       END IF 
     END IF 
ELSE 
     -1 
END IF 

RETURN 1 

de sybase.public.powerbuilder.general

+0

merci pour votre réponse. Mais encore une fois, il montre le même message d'erreur –

Questions connexes