PureBasic

Forums PureBasic
Nous sommes le Mar 18/Juin/2019 11:55

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: Gestion des Pocket-PC avec Rapi.dll (Version Final)
MessagePosté: Lun 08/Juin/2009 19:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1628
Bonjour tout le monde,

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:
; +======================================================+
; |           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


Cordialement,
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 :D


Dernière édition par GallyHC le Dim 18/Oct/2009 15:39, édité 3 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Gestion des Pocket-PC avec Rapi.dll
MessagePosté: Ven 16/Oct/2009 18:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1628
Bonjour tous,

J'ai fini la gestion des pocket-pc et tout fonctionne maintenant. Sa ma pris pas mal de temps mais j'y suis arrive.

Cordialement,
GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Gestion des Pocket-PC avec Rapi.dll
MessagePosté: Dim 18/Oct/2009 15:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1628
Bonjour tout le monde,

Après des heures de travail sur la « RAPI.DLL », tout fonctionne à 100% et voici la liste des fonctions qui sont actuellement fonctionnelles.

Code:
RAPIConnect
RAPIClose
RAPIGetCEOSVersionString
RAPIIsConnected
RAPIGDesktopDeviceCaps
RAPIErrorInformation
RAPIFindStorage
RAPIListFiles
RAPIOpenFile
RAPICopyCEFileToPC
RAPICopyPCFileToCE
RAPIFileExists
RAPICreateDirectory
RAPIDeleteFile
RAPIRenameFile
RAPIExecOnDevice
RAPIMemorySpace
RAPIStorageSpace
RAPIPowerStatus

Voici l'url ou ce trouve le code-source : http://www.koakdesign.info/?url=04&num=9&val=1.

J’espère ne pas avoir fait trop de faute d’orthographe dans mon texte d’explication. A plusieurs reprise on ma fait des remarques sur mon manque de sérieux sur mon orthographe, ce qui est vrai, mais cela n’empêche la qualité que je fais preuve sur mes codes-sources.

Cordialement,
GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Gestion des Pocket-PC avec Rapi.dll (Version Final)
MessagePosté: Lun 19/Oct/2009 8:28 
Hors ligne
Site Admin

Inscription: Mer 21/Jan/2004 11:03
Messages: 2565
C'est interessant, merci pour ta contribution !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Gestion des Pocket-PC avec Rapi.dll
MessagePosté: Lun 19/Oct/2009 13:26 
Hors ligne

Inscription: Lun 26/Avr/2004 0:40
Messages: 14537
GallyHC a écrit:
mais cela n’empêche la qualité que je fais preuve sur mes codes-sources.


et personne n'a sous entendu le contraire :roll:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Gestion des Pocket-PC avec Rapi.dll (Version Final)
MessagePosté: Ven 23/Oct/2009 16:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 08/Juil/2007 18:32
Messages: 1307
Localisation: Toulouse
Fred a écrit:
C'est interessant, merci pour ta contribution !
je me joint joyeusement, merci GallyHC :)
pb sur ces petites machines à tout faire, tel est l'avenir que j'espère proche.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye