Xcopy of Scopy met API

Alles over het toepassen van API en DLL's in Liberty BASIC

Moderator: anthonio

Xcopy of Scopy met API

Berichtdoor Gordon » do jun 21, 2007 4:34 pm

Deze routine heb ik uit het Yahoo forum.
Daar heeft Richard Russell de volgende API uitgezocht:

Code: Selecteer alles
'xcopy van Richard Russell
'I need to copy a directory which includes files and subfolders using
'Liberty Basic. What I need is the equivalent of this DOS command:

'xcopy /E /-Y V:\projects2002\PrjSeed2K\*.* V:\projects2002
'\active2k\tempproj\*.*


struct shfo, hwnd as ulong, wFunc as ulong, _
pFrom as ptr, pTo as ptr, _
fFlags as ulong, fAnyOperationsAborted as ptr, _
hNameMappings as ptr, lpszProgressTitle as ptr

calldll #user32, "GetDesktopWindow", hwnd as ulong

shfo.hwnd.struct = hwnd
shfo.wFunc.struct = 2 ' FO_COPY
shfo.pFrom.struct = "C:\GAMES\SPORT\SLAM\*.*"+CHR$(0)+CHR$(0)
shfo.pTo.struct = "C:\GAMES\SPORT\voorbeeld\"+CHR$(0)+CHR$(0)
shfo.fFlags.struct = 1 OR 4 OR 16 OR 512

calldll #shell32, "SHFileOperation", shfo as struct, result as ulong



Dit DOS commando heb ik vroeger via de recursieve
methode van Brad Moore uitgevoerd.

Knap van Richard.

Gordon.
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Berichtdoor Gordon » do jun 21, 2007 5:46 pm

Natuurlijk hoort de oplossing van Stefan Pendl hier ook thuis.
Stefan heeft de recursieve werkwijze ingekort en
helder gemaakt

Code: Selecteer alles
'---code start (watch for line wraps)
' this program lists the tree recursively
'Stefan Pendl geeft een log bestand met de te copieren files.

nomainwin

dim Info$(1,1)

LogFile$ = "test_recurse_tree_listing.log"

StartFolder$ = "C:\fiets"

open LogFile$ for output as #log
#log, "Starting Search ..."
#log, date$(); " @ "; time$()
#log, "-------------------------------------"
#log, ""

call SearchFolders StartFolder$

#log, ""
#log, "-------------------------------------"
#log, "Search ended ..."
#log, date$(); " @ "; time$()
close #log
end

'-------------------------------------------

sub SearchFolders Folder$
files Folder$, Info$(

numSubFolders = val(Info$(0,1))
numFiles = val(Info$(0,0))

'---create destination folder of Folder$ here

'---copy files here

for count = 1 to numSubFolders
if FoundFolders$ = "" then
FoundFolders$ = Info$(0,2); Info$(0,3); Info$(numFiles + count,1)
else
FoundFolders$ = FoundFolders$; ";"; Info$(0,2); Info$(0,3);Info$(numFiles + count,1)
end if
next

leftFolders = numSubFolders

while leftFolders > 0
call SearchFolders word$(FoundFolders$, leftFolders, ";")
leftFolders = leftFolders - 1
wend

#log, "Searched "; Folder$; " ..."
end sub
'---code end
'------------------------------------------



'---code start for copy function
function CopyFile(source$, dest$)
' returns nonzero if success

failIfExist = 0 ' 1 ... fail if file exists

calldll #kernel32, "CopyFileA" , _
source$ as ptr, _
dest$ as ptr, _
failIfExist as boolean, _
CopyFile as boolean
end function
'---code end


Ook knap natuurlijk.

Gordon.
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Berichtdoor Abcott » do jun 21, 2007 8:28 pm

Deze kwestie is heel vaak besproken.
Ook de API om folders te kopieren , moven en deleten
is al eerder besproken.

Zie http://libertybasic.conforums.com/index.cgi?board=api&action=display&num=1088768997

Abcott
Avatar gebruiker
Abcott
 
Berichten: 115
Geregistreerd: wo mei 25, 2005 9:58 pm

Berichtdoor anthonio » do jun 21, 2007 8:45 pm

toch handig om hem even boven water te halen.
die van stefan heb ik vroeger nog gebruik, kort en handig.
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm


Keer terug naar API/DLL

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron