Apres pas mal de recherche et pas mal d’aide des membres, j’ai pas mal avance sur mon code de gestion des Pocket-PC, mais ce n'est pas encore fini.
Je vous mets mes avancements, je pense que ca peu servir ?
Attention, il faut active la gestion Unicode dans le compilateur.
Code : Tout sélectionner
; +======================================================+
; | GESTION DE RAPI.DLL EN PUREBAIC. |
; +------------------------------------------------------+
; | |
; +--------------+---------------------------------------+
; | VER & REV | 0.0.1 RC0 |
; +--------------+---------------------------------------+
; | Program type | PUREBASIC 4.30 (MODULE) |
; +======================================================+
; +======================================================+
; | Original Version: 0.0.1 RC0 | |
; +--------------+-----------------+---------------------+
; | Created by | GallyHomeCorp |
; | Graphix by | |
; +======================================================+
; +======================================================+
; | Original Version: | |
; +--------------+-----------------+---------------------+
; | Created by | |
; | Graphix by | |
; +--------------+---------------------------------------+
; | Comments: | |
; +--------------+ |
; | |
; | |
; | |
; +======================================================+
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- DECLARATION DES VARIABLES.
EnableExplicit
#OPENLIB_0 = 1
#ONE_SECOND = 1000
#TIME_WAIT_READ = 5
#INVALID_HANDLE_VALUE = -1
#GENERIC_READ = $80000000
#GENERIC_WRITE = $40000000
#CREATE_NEW = 1
#OPEN_EXISTING = 3
#FILE_ATTRIBUTE_READONLY = $1
#FILE_ATTRIBUTE_HIDDEN = $2
#FILE_ATTRIBUTE_SYSTEM = $4
#FILE_ATTRIBUTE_DIRECTORY = $10
#FILE_ATTRIBUTE_SPECIAL = $14
#FILE_ATTRIBUTE_ARCHIVE = $20
#FILE_ATTRIBUTE_NORMAL = $80
#FILE_ATTRIBUTE_TEMPORARY = $100
#FILE_ATTRIBUTE_STORAGE = $110
#FILE_ATTRIBUTE_COMPRESSED = $800
Structure RAPIINIT
cbSize.l
heRapiInit.l
hrRapiInit.l
EndStructure
Structure CEOSVERSIONINFO
dwOSVersionInfoSize.l
dwMajorVersion.l
dwMinorVersion.l
dwBuildNumber.l
dwPlatformId.l
szCSDVersion.s{128}
EndStructure
Structure CE_FIND_DATA
dwFileAttributes.l
ftCreationTime.FILETIME
ftLastAccessTime.FILETIME
ftLastWriteTime.FILETIME
nFileSizeHigh.l
nFileSizeLow.l
dwOID.l
cFileName.s{256}
EndStructure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.b RAPIConnect()
; INITIALISATION DE LA CONNEXION (RAPI.DLL).
If OpenLibrary(#OPENLIB_0, "rapi.dll")
Define Hr.l
Define dwTimeout.l
Define dwWaitRet.l
Protected pRapiInit.RAPIINIT
dwTimeout = #TIME_WAIT_READ * #ONE_SECOND
pRapiInit\cbSize = SizeOf(pRapiInit)
pRapiInit\heRapiInit = 0
pRapiInit\hrRapiInit = 0
Hr = CallFunction(#OPENLIB_0, "CeRapiInitEx", @pRapiInit)
If Hr>-1
dwWaitRet = WaitForSingleObject_(pRapiInit\heRapiInit, dwTimeout)
If dwWaitRet = 0
If pRapiInit\hrRapiInit >= 0
ProcedureReturn #True
Else
Goto RAPIClose
EndIf
Else
Goto RAPIClose
EndIf
Else
Goto RAPIClose
EndIf
Else
ProcedureReturn #False
EndIf
RAPIClose:
If Hr >= 0
CallFunction(#OPENLIB_0, "CeRapiUninit")
EndIf
ProcedureReturn #False
EndProcedure
Procedure.b RAPIClose()
; FERMETURE DE LA CONNEXION (RAPI.DLL).
CallFunction(#OPENLIB_0, "CeRapiUninit")
CloseLibrary(#OPENLIB_0)
EndProcedure
Procedure.s RAPIGetCEOSVersionString()
; DONNE LA VERSION DU POCKET-PC.
Protected ceosver.CEOSVERSIONINFO
ceosver\dwOSVersionInfoSize = SizeOf(ceosver)
CallFunction(#OPENLIB_0, "CeGetVersionEx", @ceosver)
ProcedureReturn Str(ceosver\dwMajorVersion) + "." + Str(ceosver\dwMinorVersion) + "." + Str(ceosver\dwBuildNumber) + " " + ceosver\szCSDVersion
EndProcedure
Procedure.b RAPIIsConnect()
; VERIFICATION DE LA CONNEXION.
If RapiGetCEOSVersionString()<>""
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.s RAPIFindStorage()
;
Define searchhandle.l
Define findreturn.l
Define result.s
Define storage.s
Define filereps.s
Protected finddata.CE_FIND_DATA
filereps = "\*"
searchhandle = CallFunction(#OPENLIB_0, "CeFindFirstFile", @filereps, finddata)
If searchhandle <> #INVALID_HANDLE_VALUE
Repeat
result = finddata\cFileName
If finddata\dwFileAttributes = #FILE_ATTRIBUTE_STORAGE And LCase(result) <> "storage" And LCase(result) <> "bluetooth"
storage = "\" + result + "\"
Goto RAPIEnd
EndIf
findreturn = CallFunction(#OPENLIB_0, "CeFindNextFile", searchhandle, finddata)
Until findreturn = 0
EndIf
RAPIEnd:
ProcedureReturn storage
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.b RAPIListFiles(filereps.s)
;
Define searchhandle.l
Define findreturn.l
Define result.s
Protected finddata.CE_FIND_DATA
If Right(filereps,1) <> "*"
filereps = filereps + "*"
EndIf
searchhandle = CallFunction(#OPENLIB_0, "CeFindFirstFile", @filereps, finddata)
If searchhandle <> #INVALID_HANDLE_VALUE
Repeat
result = finddata\cFileName
Debug result
findreturn = CallFunction(#OPENLIB_0, "CeFindNextFile", searchhandle, finddata)
Until findreturn = 0
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.l RAPIOpenFile(filename.s, mode.i, createnew.b, flags.l)
;
Define lfilemode.l
Define createdist.l
Protected security.SECURITY_ATTRIBUTES
Select mode
Case 1: lfilemode = #GENERIC_READ
Case 2: lfilemode = #GENERIC_WRITE
Case 3: lfilemode = #GENERIC_READ Or #GENERIC_WRITE
EndSelect
If createnew = #True
createdist = #CREATE_NEW
Else
createdist = #OPEN_EXISTING
EndIf
ProcedureReturn CallFunction(#OPENLIB_0, "CeCreateFile", filename, lfilemode, 0, security, createdist, flags, 0)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.b RAPICopyCEFileToPC(CESourceFile.s,PCDestFile.s)
;
Define lresult.l
Define lcefilehandle.l
lcefilehandle = RAPIOpenFile(CESourceFile, 1, #False, #FILE_ATTRIBUTE_NORMAL)
If lcefilehandle <> #INVALID_HANDLE_VALUE
MessageRequester("Connexion au Pocket-PC", "PASSE", #PB_MessageRequester_Ok)
Else
MessageRequester("Connexion au Pocket-PC", "ERREUR", #PB_MessageRequester_Ok)
EndIf
lresult = CallFunction(#OPENLIB_0, "CeCloseHandle", lcefilehandle)
EndProcedure
Procedure.b RAPICopyPCFileToCE(PCSourceFile.s, CEDestFile.s)
;
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.b RAPIFileExists(filename.s)
;
Define lresult.l
Define lCeFileHandle.l
lcefilehandle = RAPIOpenFile(filename, 1, #False, #FILE_ATTRIBUTE_NORMAL)
If lcefilehandle <> #INVALID_HANDLE_VALUE
lresult = CallFunction(#OPENLIB_0, "CeCloseHandle", lcefilehandle)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.b RAPIDeleteFile(filename.s)
;
ProcedureReturn CallFunction(#OPENLIB_0, "CeDeleteFile", filename)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.b RAPIExecOnDevice(fileexec.s,command.s)
;
Protected newprocinfo.PROCESS_INFORMATION
If CallFunction(#OPENLIB_0, "CeCreateProcess", @fileexec, @command, 0, 0, 0, 0, 0, 0, 0, newProcInfo) = 0
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
If RapiConnect() = #True
If RapiIsConnect() = #True
MessageRequester("Connexion au Pocket-PC", "VERSION: " + RapiGetCEOSVersionString(), #PB_MessageRequester_Ok)
RapiListFiles("\")
MessageRequester("Connexion au Pocket-PC", "Carte de Stockage : " + RapiFindStorage(), #PB_MessageRequester_Ok)
RAPIExecOnDevice("peghelp.exe","")
RAPICopyCEFileToPC("\ogre.txt","c:\test.txt")
If RAPIFileExists("\ogre.txt")
MessageRequester("Connexion au Pocket-PC", "File ogre.txt : Exist", #PB_MessageRequester_Ok)
Else
MessageRequester("Connexion au Pocket-PC", "File ogre.txt : NotExist", #PB_MessageRequester_Ok)
EndIf
RapiClose()
EndIf
EndIf
GallyHC
PS: Encore merci à tout ce qui m'on aide a déjà faire cela et dans l'esprits du purebaic je donnerais le code complet pour que ce qui auront besoin de faire la même chose ne cherche pas trop