Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Wrapper autour de KGF.dll par procédures | |
| | |
Auteur | Message |
---|
Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 20:05 | |
| concernant la communication entre programmes. J'ai beau faire. pas moyen. Je remets les derniers essais des deux programmes: 1) loader_pagiciel: - Code:
-
rem lanceur pour pagiciel caption 0,"EXÉCUTION DU PROGRAMME" :height 0,50 ' il faut un edit placé en -1234 de réception dim message_recu$ label reception EDIT 1:LEFT 1,-1234:TOP 1,-1234 ON_CHANGE 1,reception width 0,1 message caption$(0) end ' ==============================================================================' reception: message "le text a changé" message_recu$ = text$(1) ' traitement: message message_recu$ terminate return Ce programme est compilé et est nommé:"C:\PANO\loader_pagiciel.bas" 2) l'expéditeur: - Code:
-
rem le programme de réception est déjà lancé manuellement avant execute "C:\PANO\loader_pagiciel.exe" wait 2000 dim dll$ :left 0,500:height 0,50 dll$ = "c:\PANO\DLL\DLLs\KGF.dll" KGF_initialize(dll$) message "attendre la venu du caption 'EXÉCUTION DU PROGRAMME'" envoi("ceci est un essai0 ") message "le handle reçu est:"+str$(ipcgethandle%):' la réponse est '0' wait 10000 envoi("ceci est un essai1") message "le handle reçu est:"+str$(ipcgethandle%):' la réponse est '0' END sub envoi(mess$) dim_local i% , dest$ i% = -1234 dest$ = "EXÉCUTION DU PROGRAMME" :' caption du programme visé. IPCGetHandle(dest$,i%) wait 1500 IPCSendMessage(mess$,IPCGetHandle%) end_sub ' charger KGF.dll #include |3| Je lance le programme, et j'attend de recevoir le caption fourni par le 1er programme. De cette façon je suis sûr qu'il est près à recevoir les donnés. Je valide le message d'attente du 2ème programme pour que celui-ci envoi enfin un premier message. Je vérifie en même temps le handle qu'il devrait recevoir, et là je ne reçois que "0". J'utilise la dernière version de KGF que j'ai téléchargé tout-à l'heure (pas le sub, seulement KGF). une fois ajouté avec l'include: - Spoiler:
- Code:
-
rem le programme de réception est déjà lancé manuellement avant execute "C:\PANO\loader_pagiciel.exe" wait 2000 dim dll$ :left 0,500:height 0,50 dll$ = "c:\PANO\DLL\DLLs\KGF.dll" KGF_initialize(dll$) message "attendre la venu du caption 'EXÉCUTION DU PROGRAMME'" envoi("ceci est un essai0 ") message "le handle reçu est:"+str$(ipcgethandle%):' la réponse est '0' wait 10000 envoi("ceci est un essai1") message "le handle reçu est:"+str$(ipcgethandle%):' la réponse est '0' END sub envoi(mess$) dim_local i% , dest$ i% = -1234 dest$ = "EXÉCUTION DU PROGRAMME" :' caption du programme visé. IPCGetHandle(dest$,i%) wait 1500 IPCSendMessage(mess$,IPCGetHandle%) end_sub ' charger KGF.dll ' #1 dépilé: #INCLUDE "C:\PANO\DLL\DLLs\KGF_SUB\KGF_SUB.bas" ' KGF_SUB.bas
' Ce fichier implémente l'accès aux fonctions de KGF.dll sous forme de procédures. ' Il n'y a rien d'autre à insérer dans le programme.
' ############# ici, le #INCLUDE KGF_SUB.bas contenant tout ce qui suit ######### ' =============================================================================== ' interface de procédures autour de KGF.dll ' Auteur: Klaus
' =============== dipatching des fonctions ==================================== message "KGF: on ne peut pas executer ce module directement !" terminate
' =============== initialisation du système GLIST ============================================== sub KGF_initialize(dll$) if variable("KGF_initialize_result")=0 dim KGF_initialize, KGF_res% else message "KGF est déjà initialisé" goto KGF_init_exit end_if label KGF_init_exit if file_exists(dll$)=1 dll_on dll$ else message "Le fichier "+dll$+" est introuvable." terminate end_if KGF_init_exit: end_sub
' ==== version% = DLL_call1("KGFdllVersion",adr(version$)) sub KGFdllVersion() if variable("KGFdllVersion%")=0 then dim KGFdllVersion% if variable("KGFdllVersion$")=0 then dim KGFdllVersion$ KGFdllVersion$ = string$(25," ") KGFdllVersion% = dll_call1("KGFdllVersion",adr(KGFdllVersion$)) end_sub
' ==== res% = dll_call4("ReadRegistryKey",root%,adr(cle$),adr(valeur$),adr(donnee$)) sub ReadRegistryKey(root%,cle$,valeur$) if variable("ReadRegistryKey")=0 then dim ReadRegistryKey if variable("ReadRegistryKey$")=0 then dim ReadRegistryKey$ ReadRegistryKey$ = string$(255," ") KGF_res% = dll_call4("ReadRegistryKey",root%,adr(cle$),adr(valeur$),adr(ReadRegistryKey$)) ReadRegistryKey$ = trim$(ReadRegistryKey$) ReadRegistryKey = KGF_res% end_sub
' ==== res% = dll_call2("Help",fonction%,param%) sub Help(fonct%,par$) if variable("Help")=0 then dim Help if fonct%=3 dim KGF_id% KGF_res% = dll_call2("Help",fonct%,KGF_id%) free KGF_id% else KGF_res% = dll_call2("Help",fonct%,adr(par$)) end_if Help = KGF_res% end_sub
' ==== res% = dll_call2("bin_ROL",val%,n%) sub bin_ROL(val%,n%) if variable("bin_ROL")=0 then dim bin_ROL KGF_res% = dll_call2("bin_ROL",val%,n%) bin_ROL = KGF_res% end_sub
' ==== res% = dll_call2("bin_ROR",val%,n%) sub bin_ROR(val%,n%) if variable("bin_ROR")=0 then dim bin_ROR KGF_res% = dll_call2("bin_ROR",val%,n%) bin_ROR = KGF_res% end_sub
' ==== res% = dll_call2("bin_SHL",val%,n%) sub bin_SHL(val%,n%) if variable("bin_SHL")=0 then dim bin_SHL KGF_res% = dll_call2("bin_SHL",val%,n%) bin_SHL = KGF_res% end_sub
' ==== res% = dll_call2("bin_SHR",val%,n%) sub bin_SHR(val%,n%) if variable("bin_SHR")=0 then dim bin_SHR KGF_res% = dll_call2("bin_SHR",val%,n%) bin_SHR = KGF_res% end_sub
' ==== res% = dll_call2("bin_WROL",val%,n%) sub bin_WROL(val%,n%) if variable("bin_WROL")=0 then dim bin_WROL KGF_res% = dll_call2("bin_WROL",val%,n%) bin_WROL = KGF_res% end_sub
' ==== res% = dll_call2("bin_WROR",val%,n%) sub bin_WROR(val%,n%) if variable("bin_WROR")=0 then dim bin_WROR KGF_res% = dll_call2("bin_WROR",val%,n%) bin_WROR = KGF_res% end_sub
' ==== res% = dll_call2("bin_WSHL",val%,n%) sub bin_WSHL(val%,n%) if variable("bin_WSHL")=0 then dim bin_WSHL KGF_res% = dll_call2("bin_WSHL",val%,n%) bin_WSHL = KGF_res% end_sub
' ==== res% = dll_call2("bin_WSHR",val%,n%) sub bin_WSHR(val%,n%) if variable("bin_WSHR")=0 then dim bin_WSHR KGF_res% = dll_call2("bin_WSHR",val%,n%) bin_WSHR = KGF_res% end_sub ' ==== res% = dll_call2("bin_BROL",val%,n%) sub bin_BROL(val%,n%) if variable("bin_ROL")=0 then dim bin_BROL KGF_res% = dll_call2("bin_BROL",val%,n%) bin_BROL = KGF_res% end_sub
' ==== res% = dll_call2("bin_BROR",val%,n%) sub bin_BROR(val%,n%) if variable("bin_BROR")=0 then dim bin_BROR KGF_res% = dll_call2("bin_BROR",val%,n%) bin_BROR = KGF_res% end_sub
' ==== res% = dll_call2("bin_SHL",val%,n%) sub bin_BSHL(val%,n%) if variable("bin_BSHL")=0 then dim bin_BSHL KGF_res% = dll_call2("bin_BSHL",val%,n%) bin_BSHL = KGF_res% end_sub
' ==== res% = dll_call2("bin_BSHR",val%,n%) sub bin_BSHR(val%,n%) if variable("bin_BSHR")=0 then dim bin_BSHR KGF_res% = dll_call2("bin_BSHR",val%,n%) bin_BSHR = KGF_res% end_sub
' ==== res% = DLL_call1("ClipboardCopy",hnd%) sub ClipboardCopy(hnd%) if variable("CipboardCopy")=0 then dim ClipboardCopy KGF_res% = DLL_call1("ClipboardCopy",hnd%) ClipboardCopy = KGF_res% end_sub
' ==== res% = dll_call3("SearchListBox",hnd%,mode%,adr(crit$)) sub SearchListBox(hnd%,mode%,crit$) if variable("SearchListBox")=0 then dim SearchListBox dim KGF_c$ : KGF_c$ = crit$ KGF_res% = dll_call3("SearchListBox",hnd%,mode%,adr(crit$)) SearchListBox = KGF_res% end_sub
' ==== res% = dll_call2("SelectListBoxItem",hnd%,item%) sub SelectListBoxItem(hnd%,item%) if variable("SelectListBoxItem")=0 then dim SelectListBoxItem KGF_res% = dll_call2("SelectListBoxItem",hnd%,item%) SelectListBoxItem = KGF_res% end_sub
' ==== res% = dll_call2("SelectComboBoxItem",hnd%,item%) sub SelectComboBoxItem(hnd%,item%) if variable("SelectComboBoxItem")=0 then dim SelectComboBoxItem KGF_res% = dll_call2("SelectComboBoxItem",hnd%,item%) SelectComboBoxItem = KGF_res% end_sub
' ==== res% = DLL_call4("FolderSelect",adr(racine$),adr(dossier$),len(dossier$),mode%) sub FolderSelect(racine$,mode%) if variable("FolderSelect")=0 then dim FolderSelect if variable("FolderSelect$")=0 then dim FolderSelect$ FolderSelect$ = string$(255," ") KGF_res% = DLL_call4("FolderSelect",adr(racine$),adr(FolderSelect$),len(FolderSelect$),mode%) FolderSelect$ = trim$(FolderSelect$) FolderSelect = KGF_res% end_sub
' ==== res% = dll_call4("FileOpen",adr(racine$),adr(filtre$),adr(fichier$),len(fichier$)) sub FileOpen(racine$,filtre$) if variable("FileOpen")=0 then dim FileOpen if variable("FileOpen$")=0 then dim FileOpen$ FileOpen$ = string$(255," ") KGF_res% = dll_call4("FileOpen",adr(racine$),adr(filtre$),adr(FileOpen$),len(FileOpen$)) FileOpen$ = trim$(FileOpen$) FileOpen = KGF_res% end_sub
' ==== res% = dll_call4("FileCreate",adr(racine$),adr(filtre$),adr(fichier$),len(fichier$)) sub FileCreate(racine$,filtre$) if variable("FileCreate")=0 then dim FileCreate if variable("FileCreate$")=0 then dim FileCreate$ FileCreate$ = string$(255," ") KGF_res% = dll_call4("FileCreate",adr(racine$),adr(filtre$),adr(FileCreate$),len(FileCreate$)) FileCreate$ = trim$(FileCreate$) FileCreate = KGF_res% end_sub
' ==== res% = DLL_call2("WindowTopMost",hnd%,flag%) sub WindowTopMost(hnd%,flag%) KGF_res% = DLL_call2("WindowTopMost",hnd%,flag%) end_sub
' ==== res% = DLL_call1("RandomValue",maxi%) sub RandomValue(maxi%) if variable("RandomValue")=0 then dim RandomValue KGF_res% = DLL_call1("RandomValue",maxi%) RandomValue = KGF_res% end_sub
' ==== res% = DLL_call6("ValueListEditor",f%,obj%, p1%,p2%,p3%,p4%) sub ValueListEditor(f%,obj%, p1%,p2%,p3%,p4%) if variable("ValueListEditor")=0 then dim ValueListEditor KGF_res% = DLL_call6("ValueListEditor",f%,obj%, p1%,p2%,p3%,p4%) ValueListEditor = KGF_res% end_sub
' ==== res% = DLL_call6("MaskEdit",f%,obj%, p1%,p2%,p3%,p4%) sub MaskEdit(f%,obj%, p1%,p2%,p3%,p4%) if variable("MaskEdit")=0 then dim MaskEdit KGF_res% = DLL_call6("MaskEdit",f%,obj%, p1%,p2%,p3%,p4%) MaskEdit = KGF_res% end_sub
' ==== res% = dll_call1("ClickIt",typ%) sub ClickIt(typ%) KGF_res% = dll_call1("ClickIt",typ%) end_sub
' ==== res% = dll_call2("ClickSetHook",hnd%,hndpos%) sub ClickSetHook(hnd%,hndpos%) KGF_res% = dll_call2("ClickSetHook",hnd%,hndpos%) end_sub
' ==== res% = dll_call1("ClickClearHook",hnd%) sub ClickClearHook(hnd%,hndpos%) KGF_res% = dll_call1("ClickClearHook",hnd%) end_sub
' ==== res% = dll_call2("ClickSetLink",hnd_button%,typ%) sub ClickSetLink(hnd_button%,typ%) KGF_res% = dll_call2("ClickSetLink",hnd_button%,typ%) end_sub
' ==== res% = dll_call3("crypter",adr(pwd1$),adr(pwd2$),adr(fichier$)) sub crypter(pwd1$,pwd2$,fichier$,mode%) KGF_res% = dll_call4("crypter",adr(pwd1$),adr(pwd2$),adr(fichier$),mode%) end_sub
' ==== res% = dll_call1("effacer",,adr(fichier$)) sub effacer(fichier$) KGF_res% = dll_call1("effacer",adr(fichier$)) end_sub
' ==== res% = dll_call1("GetFileAttributes",adr(fichier$)) sub GetFileAttributes(fichier$) if variable("GetFileAttributes%")=0 then dim GetFileAttributes% KGF_res% = dll_call1("GetFileAttributes",adr(fichier$)) GetFileAttributes% = KGF_res% end_sub
' ==== res% = dll_call1("GetFileDate",adr(fichier$)) sub GetFileDate(fichier$) if variable("GetFileDate$")=0 then dim GetFileDate$ GetFileDate$ = string$(255," ") KGF_res% = dll_call2("GetFileDate",adr(fichier$),adr(GetFileDate$)) GetFileDate$ = trim$(GetFileDate$) end_sub
' ==== res% = dll_call0("GetVolumeList") sub GetVolumeList() KGF_res% = dll_call0("GetVolumeList") end_sub
' ==== res% = dll_call1("Histogramme",adr(fichier$)) sub Histogramme(fichier$) KGF_res% = dll_call1("Histogramme",adr(fichier$)) end_sub
' ==== res% = dll_call5("HistogrammeEX",adr(fichier$),abs_combo%,abs_copier%,abs_BMP%,abs_JPG%) sub HistogrammeEX(fichier$,abs_combo%,abs_copier%,abs_BMP%,abs_JPG%) KGF_res% = dll_call5("HistogrammeEX",adr(fichier$),abs_combo%,abs_copier%,abs_BMP%,abs_JPG%) end_sub
' ==== res% = dll_call3("IPCGetHandle",adr(recepteur$),len(recepteur$),id%) sub IPCGetHandle(recepteur$,id%) if variable("IPCGetHandle%")=0 then dim IPCGetHandle% KGF_res% = dll_call3("IPCGetHandle",adr(recepteur$),len(recepteur$),id%) IPCGetHandle% = KGF_res% end_sub
' ==== res% = DLL_call3("IPCSendMessage",adr(message$),len(message$),handle_boite%) sub IPCSendMessage(message$,hnd%) KGF_res% = DLL_call3("IPCSendMessage",adr(message$),len(message$),hnd%) end_sub
' ==== hnd% = DLL_call1("IsProgramRunning",adr(nom$)) sub IsProgramRunning(nom$) if variable("IsProgramRunning%")=0 then dim IsProgramRunning% IsProgramRunning% = DLL_call1("IsProgramRunning",adr(nom$)) end_sub
' ==== handle_programme% = dll_call2("LoadProgramMinimized",code%,handle_form%) sub LoadProgramMinimized(code%,handle_form%) if variable("LoadProgramMinimized%")=0 then dim LoadProgramMinimized% LoadProgramMinimized% = dll_call2("LoadProgramMinimized",code%,handle_form%) end_sub
' ==== res% = dll_call1("KillProcessByHandle",handle_programme%) sub KillProcessByHandle(handle_programme%) KGF_res% = dll_call1("KillProcessByHandle",handle_programme%) end_sub
' ==== res%=dll_call2("MousePosition",x%,y%) sub MousePosition(x%,y%) KGF_res%=dll_call2("MousePosition",x%,y%) end_sub
' ==== res%=dll_call2("MouseLeftClick",x%,y%) sub MouseLeftClick(x%,y%) KGF_res%=dll_call2("MouseLeftClick",x%,y%) end_sub
' ==== res%=dll_call2("MouseRightClick",x%,y%) sub MouseRightClick(x%,y%) KGF_res%=dll_call2("MouseRightClick",x%,y%) end_sub
' ==== res%=dll_call2("AbsoluteMousePosition",x%,y%) sub AbsoluteMousePosition(x%,y%) KGF_res%=dll_call2("AbsoluteMousePosition",x%,y%) end_sub
' ==== res%=dll_call2("AbsoluteMouseLeftClick",x%,y%) sub AbsoluteMouseLeftClick(x%,y%) KGF_res%=dll_call2("AbsoluteMouseLeftClick",x%,y%) end_sub
' ==== res%=dll_call2("AbsoluteMouseRightClick",x%,y%) sub AbsoluteMouseRightClick(x%,y%) KGF_res%=dll_call2("AbsoluteMouseRightClick",x%,y%) end_sub
' ==== res%=dll_call3("MouseWheel",x%,y%,d%) sub MouseWheel(x%,y%,d%) KGF_res%=dll_call3("MouseWheel",x%,y%,d%) end_sub
' ==== res%=dll_call3("AbsoluteMouseWheel",x%,y%,d%) sub AbsoluteMouseWheel(x%,y%,d%) KGF_res%=dll_call3("AbsoluteMouseWheel",x%,y%,d%) end_sub
' ==== res%=dll_call3("GetMousePosition",hnd%,adr(x%),adr(y%)) sub GetMousePosition(hnd%) if variable("GetMousePositionX%")=0 then dim GetMousePositionX% if variable("GetMousePositionY%")=0 then dim GetMousePositionY% KGF_res%=dll_call3("GetMousePosition",hnd%,adr(GetMousePositionX%),adr(GetMousePositionY%)) end_sub
' ==== res%=dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) sub GetAbsoluteMousePosition() if variable("GetAbsoluteMousePositionX%")=0 then dim GetAbsoluteMousePositionX% if variable("GetAbsoluteMousePositionY%")=0 then dim GetAbsoluteMousePositionY% KGF_res%=dll_call2("GetAbsoluteMousePosition",adr(GetAbsoluteMousePositionX%),adr(GetAbsoluteMousePositionY%)) end_sub
' ==== res%=dll_call6("IsPointInRectangle",xp%,yp%,xr%,yr%,wr%,hr%) sub IsPointInRectangle(xp%,yp%,xr%,yr%,wr%,hr%) if variable("IsPointInRectangle")=0 then dim IsPointInRectangle KGF_res%=dll_call6("IsPointInRectangle",xp%,yp%,xr%,yr%,wr%,hr%) IsPointInRectangle = KGF_res% end_sub
' ==== res% = dll_call5("CreatePlayer",hnd%,top%,lft%,w%,h%) sub CreatePlayer(hnd%,top%,lft%,w%,h%) KGF_res% = dll_call5("CreatePlayer",hnd%,top%,lft%,w%,h%) end_sub
' ==== res% = dll_call2("MovePlayer",top%,left%) sub MovePlayer(top%,lft%) KGF_res% = dll_call2("MovePlayer",top%,lft%) end_sub
' ==== res% = dll_call0("DeletePlayer") sub DeletePlayer() KGF_res% = dll_call0("DeletePlayer") end_sub
' ==== res% = dll_call1("LoadFileIntoPlayer",adr(nom$)) sub LoadFileIntoPlayer(nom$) KGF_res% = dll_call1("LoadFileIntoPlayer",adr(nom$)) end_sub
' ==== res% = dll_call0("PlayPlayer") sub PlayPlayer() KGF_res% = dll_call0("PlayPlayer") end_sub
' ==== res% = dll_call0("PausePlayer") sub PausePlayer() KGF_res% = dll_call0("PausePlayer") end_sub
' ==== res% = dll_call0("StopPlayer") sub StopPlayer() KGF_res% = dll_call0("StopPlayer") end_sub
' ==== res% = dll_call1("MutePlayer,mute%") sub MutePlayer() KGF_res% = dll_call1("MutePlayer",mute%) end_sub
' ==== res% = dll_call1("VolumePlayer,vol%") sub VolumePlayer() KGF_res% = dll_call1("VolumePlayer",vol%) end_sub
' ==== res% = DLL_call4("PrinterManager",f%,adr(phnd%),adr(chnd%),opt%) sub PrinterManagerStartDoc() : ' PrinterManager f%=1 if variable("PrinterManagerStartDoc")=0 then dim PrinterManagerStartDoc if variable("PrinterManagerPrinter%")=0 then dim PrinterManagerPrinter% if variable("PrinterManagerCanvas%")=0 then dim PrinterManagerCanvas% KGF_res% = DLL_call4("PrinterManager",1,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),0) PrinterManagerStartDoc = KGF_res% end_sub
sub PrinterManagerNewPage() : ' PrinterManager f%=2 if variable("PrinterManagerNewPage")=0 then dim PrinterManagerNewPage KGF_res% = DLL_call4("PrinterManager",2,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),0) PrinterManagerNewPage = KGF_res% end_sub
sub PrinterManagerEndDoc() : ' PrinterManager f%=3 if variable("PrinterManagerEndDoc")=0 then dim PrinterManagerEndDoc if variable("PrinterManagerPrinter%")=0 then dim PrinterManagerPrinter% if variable("PrinterManagerCanvas%")=0 then dim PrinterManagerCanvas% KGF_res% = DLL_call4("PrinterManager",3,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),0) PrinterManagerEndDoc = KGF_res% end_sub
sub PrinterManagerOrientation(opt%) : ' PrinterManager f%=4 if variable("PrinterManagerOrientation")=0 then dim PrinterManagerOrientation if variable("PrinterManagerPrinter%")=0 then dim PrinterManagerPrinter% if variable("PrinterManagerCanvas%")=0 then dim PrinterManagerCanvas% KGF_res% = DLL_call4("PrinterManager",4,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),opt%) PrinterManagerOrientation = KGF_res% end_sub
sub PrinterManagerCopies(opt%) : ' PrinterManager f%=5 if variable("PrinterManagerCopies")=0 then dim PrinterManagerCopies if variable("PrinterManagerPrinter%")=0 then dim PrinterManagerPrinter% if variable("PrinterManagerCanvas%")=0 then dim PrinterManagerCanvas% KGF_res% = DLL_call4("PrinterManager",5,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),opt%) PrinterManagerCopies = KGF_res% end_sub
sub PrinterManagerTitle(titre$) : ' PrinterManager f%=6 if variable("PrinterManagerTitle")=0 then dim PrinterManagerTitle if variable("PrinterManagerPrinter%")=0 then dim PrinterManagerPrinter% if variable("PrinterManagerCanvas%")=0 then dim PrinterManagerCanvas% KGF_res% = DLL_call4("PrinterManager",6,adr(PrinterManagerPrinter%),adr(titre$),len(titre$)) PrinterManagerTitle = KGF_res% end_sub
sub PrinterManagerReset(opt%) : ' PrinterManager f%=7 if variable("PrinterManagerReser")=0 then dim PrinterManagerReset if variable("PrinterManagerPrinter%")=0 then dim PrinterManagerPrinter% if variable("PrinterManagerCanvas%")=0 then dim PrinterManagerCanvas% KGF_res% = DLL_call4("PrinterManager",7,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),opt%) PrinterManagerReset = KGF_res% end_sub
' ==== res% = DLL_call6("PrinterPrintText",adr(txt$),adr(pol$),adr(attr$),coulsiz%,adr(x%),adr(y%)) sub PrinterPrintText(txt$,pol$,attr$,R%,G%,B%,siz%,x%,y%) if variable("PrinterPrintText")=0 then dim PrinterPrintText dim KGF_coulsiz% : KGF_coulsiz% = ((B%*256+G%)*256+R%)*256 + siz% KGF_res% = DLL_call6("PrinterPrintText",adr(txt$),adr(pol$),adr(attr$),KGF_coulsiz%,x%,y%) PrinterPrintText = KGF_res% free KGF_coulsiz% end_sub
' ==== res% = DLL_call6("PrinterDrawArc", x1%,y1%,x2%,y2%,alpha%,beta%) sub PrinterDrawArc(x1%,y1%,x2%,y2%,alpha%,beta%) if variable("PrinterDrawArc")=0 then dim PrinterDrawArc PrinterDrawArc = DLL_call6("PrinterDrawArc", x1%,y1%,x2%,y2%,alpha%,beta%) end_sub
' ==== res% = DLL_call6("PrinterFunction",f%,phnd%,chnd%,opt1%,opt2%,opt3%) sub PrinterFunctionText(txt$,opt%) : ' PrinterFunction f%=1 if variable("PrinterFunctionText")=0 then dim PrinterFunctionText KGF_res% = DLL_call6("PrinterFunction",1,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),adr(txt$),len(txt$),opt%) PrinterFunctionText = KGF_res% end_sub
sub PrinterFunctionForm(forme%,w%,h%,r%) : ' PrinterFunction f%=2 if variable("PrinterFunctionForm")=0 then dim PrinterFunctionForm KGF_res% = DLL_call6("PrinterFunction",2,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),forme%+256*r%,w%,h%) PrinterFunctionForm = KGF_res% end_sub
sub PrinterFunctionFlood(mode%,R%,G%,B%) : ' PrinterFunction f%=3 if variable("PrinterFunctionFlood")=0 then dim PrinterFunctionFlood dim KGF_rgb% : KGF_rbg% = (B%*256+G%)*256+R% KGF_res% = DLL_call6("PrinterFunction",3,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),mode%,KGF_rgb%,0) PrinterFunctionFlood = KGF_res% free KGF_rgb% end_sub
sub PrinterFunctionRelativePosition(dx%,dy%) : ' PrinterFunction f%=4 if variable("PrinterFunctionRelativePosition")=0 then dim PrinterFunctionRelativePosition KGF_res% = DLL_call6("PrinterFunction",4,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),1,dx%,dy%) PrinterFunctionRelativePosition = KGF_res% end_sub
sub PrinterFunctionAbsolutePosition(dx%,dy%) : ' PrinterFunction f%=4 if variable("PrinterFunctionAbsolutePosition")=0 then dim PrinterFunctionAbsolutePosition KGF_res% = DLL_call6("PrinterFunction",4,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),0,dx%,dy%) PrinterFunctionAbsolutePosition = KGF_res% end_sub
sub PrinterFunctionStyle(pol$,siz%,R%,G%,B%,gras%,ital%,sous%,barr%) : ' PrinterFunction f%=5 if variable("PrinterFunctionStyle")=0 then dim PrinterFunctionStyle dim KGF_c% : dim KGF_o% if (R%<0) or (G%<0) or (B%<0) KGF_c% = 0 - 1 else KGF_c% = (R%*256+G%)*256+B% end_if KGF_o% = siz% if gras%>0 then KGF_o% = KGF_o% + 256 if ital%>0 then KGF_o% = KGF_o% + 512 if sous%>0 then KGF_o% = KGF_o% + 1024 if barr%>0 then KGF_o% = KGF_o% + 2048 KGF_res% = DLL_call6("PrinterFunction",5,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),adr(pol$),KGF_c%,KGF_o%) PrinterFunctionStyle = KGF_res% free KGF_o% free KGF_c% end_sub
sub PrinterFunctionColor(colorf%,colorb%,penw%) : ' PrinterFunction f%=6 if variable("PrinterFunctionColor")=0 then dim PrinterFunctionColor KGF_res% = DLL_call6("PrinterFunction",6,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),colorf%,colorb%,penw%) PrinterFunctionStyle = KGF_res% end_sub
sub PrinterFunctionImage(nom$,w%,h%) : ' PrinterFunction f%=7 if variable("PrinterFunctionImage")=0 then dim PrinterFunctionImage KGF_res% = DLL_call6("PrinterFunction",7,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),adr(nom$),w%,h%) PrinterFunctionImage = KGF_res% end_sub
sub PrinterFunctionGetMetrics(code%) : ' PrinterFunction f%=8 if variable("PrinterFunctionGetMetrics%")=0 then dim PrinterFunctionGetMetrics% KGF_res% = DLL_call6("PrinterFunction",8,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),code%,0,0) PrinterFunctionGetMetrics% = KGF_res% end_sub
sub PrinterFunctionGetValues(code%) : ' PrinterFunction f%=9 if variable("PrinterFunctionGetvalues%")=0 then dim PrinterFunctionGetValues% KGF_res% = DLL_call6("PrinterFunction",9,adr(PrinterManagerPrinter%),adr(PrinterManagerCanvas%),code%,0,0) PrinterFunctionGetValues% = KGF_res% end_sub
' ==== res% = DLL_call0("GetPrinterCount") sub GetPrinterCount() if variable("GetPrinterCount%")=0 then dim GetPrinterCount% GetPrinterCount% = DLL_call0("GetPrinterCount") end_sub
' ==== res% = DLL_call2("SelectWindowsPrinter",adr(nom$),len(nom$)) sub SelectWindowsPrinter() if variable("SelectWindowsPrinter")=0 then dim SelectWindowsPrinter if variable("SelectWindowsPrinter$")=0 then dim SelectWindowsPrinter$ SelectWindowsPrinter$ = string$(255," ") KGF_res% = DLL_call2("SelectWindowsPrinter",adr(SelectWindowsPrinter$),255) SelectWindowsPrinter = KGF_res% SelectWindowsPrinter$ = trim$(SelectWindowsPrinter$) end_sub
' ==== res% = dll_call1("ScreenCopy",x%) sub ScreenCopy(mode%) KGF_res% = dll_call1("ScreenCopy",mode%) end_sub
' ==== res% = dll_call0("Rotate90") sub Rotate90() if variable("Rotate90")=0 then dim Rotate90 KGF_res% = dll_call0("Rotate90") Rotate90 = KGF_res% end_sub
' ==== res% = dll_call0("RotateM90") sub RotateM90() if variable("RotateM90")=0 then dim RotateM90 KGF_res% = dll_call0("RotateM90") RotateM90 = KGF_res% end_sub
' ==== res% = dll_call0("Rotate180") sub Rotate180() if variable("Rotate180")=0 then dim Rotate180 KGF_res% = dll_call0("Rotate180") Rotate180 = KGF_res% end_sub
' ==== res% = dll_call0("LoadPicture") sub LoadPicture() if variable("LoadPicture")=0 then dim LoadPicture KGF_res% = dll_call0("LoadPicture") LoadPicture = KGF_res% end_sub
' ==== res% = dll_call0("SavePicture") sub SavePicture() if variable("SavePicture")=0 then dim SavePicture KGF_res% = dll_call0("SavePicture") SavePicture = KGF_res% end_sub
' ==== res% = dll_call6("ModifyPicture",x%,y%,T%,R%,G%,B%) sub ModifyPicture(x%,y%,T%,R%,G%,B%) if variable("ModifyPicture")=0 then dim ModifyPicture KGF_res% = dll_call6("ModifyPicture",x%,y%,T%,R%,G%,B%) ModifyPicture = KGF_res% end_sub
' ==== res% = dll_call2("ResizePicture",h%,w%) sub ResizePicture(h%,w%) if variable("ResizePicture")=0 then dim ResizePicture KGF_res% = dll_call2("ResizePicture",h%,w%) ResizePicture = KGF_res% end_sub
' ==== res% = dll_call0("GetPictureHeight") sub GetPictureHeight() if variable("GetPictureHeight")=0 then dim GetPictureHeight KGF_res% = dll_call0("GetPictureHeight") GetPictureHeight = KGF_res% end_sub
' ==== res% = dll_call0("GetPictureWidth") sub GetPictureWidth() if variable("GetPictureWidth")=0 then dim GetPictureWidth KGF_res% = dll_call0("GetPictureWidth") GetPictureWidth = KGF_res% end_sub
' ==== res% = dll_call0("GetClipboardPictureWidth") sub GetClipboardPictureWidth() if variable("GetClipboardPictureWidth")=0 then dim GetClipboardPictureWidth KGF_res% = dll_call0("GetClipboardPictureWidth") GetClipboardPictureWidth = KGF_res% end_sub
' ==== res% = dll_call0("GetClipboardPictureHeight") sub GetClipboardPictureHeight() if variable("GetClipboardPictureHeight")=0 then dim GetClipboardPictureHeight KGF_res% = dll_call0("GetClipboardPictureHeight") GetClipboardPictureHeight = KGF_res% end_sub
' ==== res% = dll_call3("SetPictureFilter",R%,G%,B%) sub SetPictureFilter(R%,G%,B%) if variable("SetPictureFilter")=0 then dim SetPictureFilter KGF_res% = dll_call3("SetPictureFilter",R%,G%,B%) SetPictureFilter = KGF_res% end_sub
' ==== res% = dll_call0("SetPictureGrayScale") sub SetPictureGrayScale() if variable("SetPictureGrayScale")=0 then dim SetPictureGrayScale KGF_res% = dll_call0("SetPictureGrayScale") SetPictureGrayScale = KGF_res% end_sub
' ==== res% = dll_call1("SetPictureBrightness",d%) sub SetPictureBrightness() if variable("SetPictureBrightness")=0 then dim SetPictureBrightness KGF_res% = dll_call1("SetPictureBrightness",d%) SetPictureBrightness = KGF_res% end_sub
' ==== res% = dll_call1("SetPictureGamma",d%) sub SetPictureGamma() if variable("SetPictureGamma")=0 then dim SetPictureGamma KGF_res% = dll_call1("SetPictureGamma",d%) SetPictureGamma = KGF_res% end_sub
' ==== res% = dll_call4("CreatePictureGradientColor",adr(start$),adr(adresse$),adr(couleur_debut$),adr(couleur_fin$)) sub CreatePictureGradientColor(start$,lig%,col%,R1%,G1%,B1%,R2%,G2%,B2%) if variable("SetPictureGradientColor")=0 then dim SetPictureGradientColor dim KGF_s$ : KGF_s$ = upper$(left$(start$,1)) dim KGF_a$, KGF_c1$, KGF_c2$ if KGF_s$="L" KGF_a$ = str$(lig%) else if KGF_s$="C" KGF_a$ = str$(col%) else KGF_a$ = str$(lig%)+","+str$(col%) end_if end_if KGF_c1$ = str$(R1%)+","+str$(G1%)+","+str$(B1%) KGF_c2$ = str$(R2%)+","+str$(G2%)+","+str$(B2%) KGF_res% = dll_call4("CreatePictureGradientColor",adr(KGF_s$),adr(KGF_a$),adr(KGF_c1$),adr(KGF_c2$)) SetPictureGradientColor = KGF_res% free KGF_c2$ free KGF_c1$ free KGF_a$ free KGF_s$ end_sub
' ==== res% = dll_call1("SetImmediateMode",m%) sub SetImmediateMode(m%) if variable("SetImmediateMode")=0 then dim SetImmediateMode KGF_res% = dll_call1("SetImmediateMode",m%) SetImmediateMode = KGF_res% end_sub
' ==== res% = dll_call4("ExtractRectangleFromPicture",x0%,y0%,x1%,y1%) sub ExtractRectangleFromPicture(x0%,y0%,x1%,y1%) if variable("ExtractRectangleFromPicture")=0 then dim ExtractRectangleFromPicture KGF_res% = dll_call4("ExtractRectangleFromPicture",x0%,y0%,x1%,y1%) ExtractRectangleFromPicture = KGF_res% end_sub
' ==== res% = dll_call3("AnalyzeJPG",adr(jpg$),adr(larg%),adr(haut%)) sub AnalyzeJPG(jpg$) if variable("AnalyzeJPG")=0 then dim AnalyzeJPG if variable("AnalyzeJPGL%")=0 then dim AnalyzeJPGL% if variable("AnalyzeJPGH%")=0 then dim AnalyzeJPGH% KGF_res% = dll_call3("AnalyzeJPG",adr(jpg$),adr(AnalyzeJPGL%),adr(AnalyzeJPGH%)) AnalyzeJPG = KGF_res% end_sub
' ==== res% = dll_call3("AnalyzeImageFile",adr(jpg$),adr(larg%),adr(haut%)) sub AnalyzeImageFile(jpg$) if variable("AnalyzeImageFile")=0 then dim AnalyzeImageFile if variable("AnalyzeImageFileL%")=0 then dim AnalyzeImageFileL% if variable("AnalyzeImageFileH%")=0 then dim AnalyzeImageFileH% KGF_res% = dll_call3("AnalyzeImageFile",adr(jpg$),adr(AnalyzeImageFileL%),adr(AnalyzeImageFileH%)) AnalyzeImageFile = KGF_res% end_sub
' ==== res% = dll_call6("WriteTextOverPicture",hnd%,pos%,adr(text$),adr(font$),attrib%,coul%) sub WriteTextOverPicture(hnd%,x%,y%,texte$,font$,gras%,italique%,souligne%,barre%,siz%,angle%,courbe%,R%,G%,B%) if variable("WriteTextOverPicture")=0 then dim WriteTextOverPicture dim KGF_p% : KGF_p% = x% + y%*65536 dim KGF_a% if gras%>0 then KGF_a% = KGF_a% + 1 if italique%>0 then KGF_a% = KGF_a% + 2 if souligne%>0 then KGF_a% = KGF_a% + 4 if barre%>0 then KGF_a% = KGF_a% + 8 KGF_a% = KGF_a% + siz%*16 if courbe%>0 then KGF_a% = KGF_a% + 32768 KGF_a% = KGF_a% + angle%*65536 dim KGF_c% : KGF_c% = (B%*256+G%)*256+R% KGF_res% = dll_call6("WriteTextOverPicture",hnd%,KGF_p%,adr(texte$),adr(font$),KGF_a%,KGF_c%) WriteTextOverPicture = KGF_res% free KGF_c% free KGF_a% free KGF_p% end_sub
' ==== res% = dll_call4("ConfigureCurveWToP",xcentre%,ycentre%,delta%,facteur%) sub ConfigureCurveWToP(xcentre%,ycentre%,delta%,facteur%) KGF_res% = dll_call4("ConfigureCurveWToP",xcentre%,ycentre%,delta%,facteur%) end_sub
' ==== res% = dll_call1("LoadAnyImageFile",adr(nom$)) sub LoadAnyImageFile(nom$) KGF_res% = dll_call1("LoadAnyImageFile",adr(nom$)) end_sub
' ==== res% = dll_call1("SaveAnyImageFile",adr(nom$)) sub SaveAnyImageFile(nom$) KGF_res% = dll_call1("SaveAnyImageFile",adr(nom$)) end_sub
' ==== res% = DLL_call6("WindowEllipticHole",hnd%,mode%,top%,left%,width%,height%) sub WindowEllipticHole(hnd%,mode%,top%,left%,width%,height%) KGF_res% = DLL_call6("WindowEllipticHole",hnd%,mode%,top%,left%,width%,height%) end_sub
' ==== res% = DLL_call6("WindowRectangleHole",hnd%,mode%,top%,left%,width%,height%) sub WindowRectangleHole(hnd%,mode%,top%,left%,width%,height%) KGF_res% = DLL_call6("WindowRectangleHole",hnd%,mode%,top%,left%,width%,height%) end_sub
' ==== region2% = DLL_call3("WindowRegionHole",hnd%,mode%,adr(region1%)) sub WindowRegionHole(hnd%,mode%,region1%) if variable("WindowRegionHole%")=0 then dim WindowRegionHole% WindowRegionHole% = DLL_call3("WindowRegionHole",hnd%,mode%,adr(region1%)) end_sub
' ==== region2% = DLL_call5("WindowAddEllipticRegion",adr(region1%),top%,left%,width%,height%) sub WindowAddEllipticRegion(region1%,top%,left%,width%,height%) if variable("WindowAddEllipticRegion%")=0 then dim WindowAddEllipticRegion% WindowAddEllipticRegion% =DLL_call5("WindowAddEllipticRegion",adr(region1%),top%,left%,width%,height%) end_sub
' ==== region2% = DLL_call5("WindowAddRectangleRegion",adr(region1%),top%,left%,width%,height%) sub WindowAddRectangleRegion(region1%,top%,left%,width%,height%) if variable("WindowAddRectangleRegion%")=0 then dim WindowAddRectangleRegion% WindowAddRectangleRegion% =DLL_call5("WindowAddRectangleRegion",adr(region1%),top%,left%,width%,height%) end_sub
' ==== res% = DLL_call2("WindowRegionAsWindow",hnd%,adr(region%)) sub WindowRegionAsWindow(hnd%,region%) KGF_res% = DLL_call2("WindowRegionAsWindow",hnd%,adr(region%)) end_sub
' ==== region2% = DLL_call2("WindowGetWindowRegion",hnd%,adr(region1%)) sub WindowGetWindowRegion(hnd%,region1%) if variable("WindowGetWindowRegion%")=0 then dim WindowGetWindowRegion% WindowGetWindowRegion% = DLL_call2("WindowGetWindowRegion",hnd%,adr(region1%)) end_sub
' ==== res% = DLL_call2("WindowTranparency",hnd%,trans%) sub WindowTranparency(hnd%,trans%) KGF_res% = DLL_call2("WindowTranparency",hnd%,trans%) end_sub
' ==== res% = DLL_call3("SetFormParent",hnd_enfant%,hnd_parent%,flag%) sub SetFormParent(hnd_enfant%,hnd_parent%,flag%) if variable("SetFormParent%")=0 then dim SetFormParent% SetFormParent% = DLL_call3("SetFormParent",hnd_enfant%,hnd_parent%,flag%) end_sub
' ==== res% = dll_call2("AttachWindowToWindow",hnd_enfant%,hnd_parent%) sub AttachWindowToWindow(hnd_enfant%,hnd_parent%) KGF_res% = DLL_call2("AttachWindowToWindow",hnd_enfant%,hnd_parent%) end_sub
' ==== res% = DLL_call2("SetMinimizeMaximize",hnd%,mode%) sub SetMinimizeMaximize(hnd%,mode%) KGF_res% = DLL_call2("SetMinimizeMaximize",hnd%,mode%) end_sub
' ==== res% = DLL_call2("SetCloseBox",hnd%,mode%) sub SetCloseBox(hnd%,mode%) KGF_res% = DLL_call2("SetCloseBox",hnd%,mode%) end_sub
' ==== res% = DLL_call5("GetFormMetrics",hnd%,adr(gauche%),adr(haut%),adr(largeur%),adr(hauteur%)) sub GetFormMetrics(hnd%) if variable("GetFormMetricsL%")=0 then dim GetFormMetricsL% if variable("GetFormMetricsT%")=0 then dim GetFormMetricsT% if variable("GetFormMetricsW%")=0 then dim GetFormMetricsW% if variable("GetFormMetricsH%")=0 then dim GetFormMetricsH% KGF_res% = DLL_call5("GetFormMetrics",hnd%,adr(GetFormMetricsL%),adr(GetFormMetricsT%),adr(GetFormMetricsW%),adr(GetFormMetricsH%)) end_sub
' ==== res% = DLL_call6("ChangeWindowSize",hnd%,fonction%,haut%,gauche%,hauteur%,largeur%) sub ChangeWindowSize(hnd%,fonction%,haut%,gauche%,hauteur%,largeur%) if variable("ChangeWindowSize")=0 then dim ChangeWindowSize KGF_res% = DLL_call6("ChangeWindowSize",hnd%,fonction%,haut%,gauche%,hauteur%,largeur%) ChangeWindowSize = KGF_res% end_sub
' ==== res% = dll_call6("ShowMessageModal",adr(titre$),adr(text$), boutons%, adr(b1$), adr(b2$), adr(b3$)) sub ShowMessageModal(titre$,texte$, boutons%, b1$, b2$, b3$) if variable("ShowMessageModal")=0 then dim ShowMessageModal KGF_res% = dll_call6("ShowMessageModal",adr(titre$),adr(texte$), boutons%, adr(b1$), adr(b2$), adr(b3$)) ShowMessageModal = KGF_res% end_sub
' ==== res% = dll_call6("ShowMessageModalEX",adr(tit$),adr(mes$), adr(image$), boutons%, nopt%, adr(lib$)) sub ShowMessageModalEX(tit$,mes$,image$,boutons%,nopt%,b1$,b2$,b3$,opt$) if variable("ShowMessageModalEX")=0 then dim ShowMessageModalEX dim KGF_lib$ : KGF_lib$ = b1$+";"+b2$+";"+b3$+";"+opt$ KGF_res% = dll_call6("ShowMessageModalEX",adr(tit$),adr(mes$), adr(image$), boutons%, nopt%, adr(KGF_lib$)) ShowMessageModalEX = KGF_res% free KGF_lib$ end_sub
' ==== res% = DLL_call1("GetProcessWindowHandle",adr(exe$)) sub GetProcessWindowHandle(exe$) if variable("GetProcessWindowHandle%")=0 then dim GetProcessWindowHandle% GetProcessWindowHandle% = DLL_call1("GetProcessWindowHandle",adr(exe$)) end_sub
' ==== res% = dll_call0("GetActiveControl") sub GetActiveControl() if variable("GetActiveControl%")=0 then dim GetActiveControl% GetActiveControl% = dll_call0("GetActiveControl") end_sub
' ==== res% = dll_call0("GetActiveWindow") sub GetActiveWindow() if variable("GetActiveWindow%")=0 then dim GetActiveWindow% GetActiveWindow% = dll_call0("GetActiveWindow") end_sub
' ==== res% = dll_call1("GetActiveWindowTitle",adr(titre$)) sub GetActiveWindowTitle() if variable("GetActiveWindowTitle%")=0 then dim GetActiveWindowTitle% if variable("GetActiveWindowTitle$")=0 then dim GetActiveWindowTitle$ GetActiveWindowTitle$ = string$(255," ") GetActiveWindowTitle% = dll_call1("GetActiveWindowTitle",adr(GetActiveWindowTitle$)) GetActiveWindowTitle$ = trim$(GetActiveWindowTitle$) end_sub
' ==== hnd% = dll_call1("GetWindowModuleHandle",adr(nom$)) sub GetWindowModuleHandle(nom$) if variable("GetWindowModuleHandle%")=0 then dim GetWindowModuleHandle% GetWindowModuleHandle% = dll_call1("GetWindowModuleHandle",adr(nom$)) end_sub
' ==== res% = dll_call2("GetWindowTitle",hnd%,adr(titre$)) sub GetWindowTitle(hnd%) if variable("GetWindowTitle$")=0 then dim GetWindowTitle$ GetWindowTitle$ = string$(255," ") KGF_res% = dll_call2("GetWindowTitle",hnd%,adr(GetWindowTitle$)) GetWindowTitle$ = trim$(GetWindowTitle$) end_sub
' ==== res% = dll_call2("GetWindowByTitle",mode%,adr(titre$)) sub GetWindowByTitle(mode%,titre$) if variable("GetWindowByTitle%")=0 then dim GetWindowByTitle% GetWindowByTitle% = dll_call2("GetWindowByTitle",mode%,adr(titre$)) end_sub
' ==== res% = dll_call1("BringWindowToForeground",hnd%) sub BringWindowToForeground(hnd%) KGF_res% = dll_call1("BringWindowToForeground",hnd%) end_sub
' ==== res% = dll_call1("SpeakMode",mode%) sub SpeakMode(mode%) KGF_res% = dll_call1("SpeakMode",mode%) end_sub
' ==== res% = dll_call4("Speak",adr(txt$),volume%,vitesse%,langue%) sub Speak(txt$,volume%,vitesse%,langue%) KGF_res% = dll_call4("Speak",adr(txt$),volume%,vitesse%,langue%) end_sub
' ==== res% = dll_call2("CompareStr",adr(string1$),adr(string2$)) sub CompareStr(string1$,string2$) if variable("CompareStr")=0 then dim CompareStr KGF_res% = dll_call2("CompareStr",adr(string1$),adr(string2$)) CompareStr = KGF_res% end_sub
' ==== res% = dll_call2("CompareStrA",adr(string1$),adr(string2$)) sub CompareStrA(string1$,string2$) if variable("CompareStrA")=0 then dim CompareStrA KGF_res% = dll_call2("CompareStrA",adr(string1$),adr(string2$)) CompareStrA = KGF_res% end_sub
' ==== res% = dll_call3("StringOverString",adr(entree$),offset%,adr(sortie$)) sub StringOverString(entree$,offset%,sortie$) if variable("StringOverString$")=0 then dim StringOverString$ KGF_res% = dll_call3("StringOverString",adr(entree$),offset%,adr(sortie$)) StringOverString$ = KGF_s$ end_sub
' ==== res% = dll_call3("InString",adr(base$),adr(achercher$),offset%) sub InString(base$,achercher$,offset%) if variable("InString%")=0 then dim InString% InString% = dll_call3("InString",adr(base$),adr(achercher$),offset%) end_sub
' ==== res% = dll_call3("ItemIndexInString",adr(string$),adr(sep$),adr(item$)) sub ItemIndexInString(st$,sep$,item$) if variable("ItemIndexInString%")=0 then dim ItemIndexInString% ItemIndexInString% = dll_call3("ItemIndexInString",adr(st$),adr(sep$),adr(item$)) end_sub
' ==== res% = dll_call3("instr",adr(crit$),adr(chaine$),p%) sub instr(crit$,chaine$,p%) if variable("instr%")=0 then dim instr% instr% = dll_call3("instr",adr(crit$),adr(chaine$),p%) end_sub
' ==== res% = dll_call2("StartsWith",adr(chaine$),adr(debut$)) sub StartsWith(chaine$,debut$) if variable("StartsWith")=0 then dim StartsWith KGF_res% = dll_call2("StartsWith",adr(chaine$),adr(debut$)) StartsWith = KGF_res% end_sub
' ==== res% = dll_call2("EndsWith",adr(chaine$),adr(fin$)) sub EndsWith(chaine$,fin$) if variable("EndsWith")=0 then dim EndsWith KGF_res% = dll_call2("EndsWith",adr(chaine$),adr(fin$)) EndsWith = KGF_res% end_sub
' ==== res% = dll_call1("WBCreate",hnd%) sub WBCreate(hnd%) KGF_res% = dll_call1("WBCreate",hnd%) KGF_res% = dll_call4("WBLocate",300,300,400,300) end_sub
' ==== res% = dll_call4("WBLocate",left%,top%,width%,height%) sub WBLocate(lft%,tp%,wd%,hgt%) KGF_res% = dll_call4("WBLocate",lft%,tp%,wd%,hgt%) end_sub
' ==== res% = dll_call0("WBDelete") sub WBDelete() KGF_res% = dll_call0("WBDelete") end_sub
' ==== res% = dll_call1("WBUrl",adr(url$)) sub WBUrl(url$) KGF_res% = dll_call1("WBUrl",adr(url$)) end_sub
' ==== res% = dll_call2("SetBrowser",adr(name$),adr(path$)) sub SetBrowser(name$,path$) dim KGF_t$ : KGF_t$ = string$(255," ") KGF_res% = DLL_call2("GetShortName",adr(path$),adr(KGF_t$)) KGF_res% = dll_call2("SetBrowser",adr(name$),adr(KGF_t$)) free KGF_t$ end_sub
' ==== res% = dll_call2("AttachBrowserToWindow",hnd%,mode%) sub AttachBrowserToWindow(hnd%,mode%) KGF_res% = dll_call2("AttachBrowserToWindow",hnd%,mode%) end_sub
' ==== res% = dll_call2("LoadBrowserToWindow",hnd%,adr(url$)) sub LoadBrowserToWindow(hnd%,url$,mode%) if variable("LoadBrowserToWindow%")=0 then dim LoadBrowserToWindow% LoadBrowserToWindow% = dll_call3("LoadBrowserToWindow",hnd%,adr(url$),mode%) end_sub
' ==== res% = dll_call1("KillBrowser",hnd%) sub KillBrowser(hnd%) KGF_res% = dll_call1("KillBrowser",hnd%) end_sub
' ==== res% = dll_call1("DetachBrowserFromWindow",hnd%) sub DetachBrowserFromWindow(hnd%) KGF_res% = dll_call1("DetachBrowserFromWindow",hnd%) end_sub
' ==== res% = dll_call5("ZoomBrowser",hnd%,left%,top%,width%,height%) sub ZoomBrowser(hnd%,lft%,top%,width%,height%) KGF_res% = dll_call5("ZoomBrowser",hnd%,lft%,top%,width%,height%) end_sub
' ==== res% = dll_call2("SetBrowserUrl",hnd%,hnd1%,adr(url$),tab%) sub SetBrowserUrl(hnd%,hnd1%,url$,tab%) KGF_res% = dll_call4("SetBrowserUrl",hnd%,hnd1%,adr(url$),tab%) end_sub
' ==== res% = dll_call0("IsWin64") sub IsWin64() if variable("IsWin64")=0 then dim IsWin64 KGF_res% = dll_call0("IsWin64") IsWin64 = KGF_res% end_sub
' ==== res% = dll_call1("GetWindowsVersion",adr(vers$)) sub GetWindowsVersion() if variable("GetWindowsVersion$")=0 then dim GetWindowsVersion$ GetWindowsVersion$ = string$(255," ") KGF_res% = dll_call1("GetWindowsVersion",adr(GetWindowsVersion$)) GetWindowsVersion$ = trim$(GetWindowsVersion$) end_sub
' ==== res% = dll_call1("ExecuteVBS",hnd%) sub ExecuteVBS(hnd%) if variable("ExecuteVBS")=0 then dim ExecuteVBS KGF_res% = dll_call1("ExecuteVBS",hnd%) ExecuteVBS = KGF_res% end_sub
' ==== res% = dll_call1("LoadDLL",adr(dll$)) sub LoadDLL(dll$) if variable("LoadDLL%")=0 then dim LoadDLL% LoadDLL% = dll_call1("LoadDLL",adr(dll$)) end_sub
' ==== res% = dll_call1("UnLoadDLL",hnd%) sub UnloadDLL(hnd%) KGF_res% = dll_call1("UnLoadDLL",hnd%) end_sub
' ==== res% = dll_callx("CallDLLx",p1%,...,p6%) sub call_dll(dll%,fonct$,np%,p1%,p2%,p3%,p4%,p5%,p6%) if variable("call_dll%")=0 then dim call_dll% KGF_res% = dll_call2("TargetDLL",dll%,adr(fonct$)) if np%=0 then call_dll% = dll_call0("CallDLL0") if np%=1 then call_dll% = dll_call1("CallDLL1",p1%) if np%=2 then call_dll% = dll_call2("CallDLL2",p1%,p2%) if np%=3 then call_dll% = dll_call3("CallDLL3",p1%,p2%,p3%) if np%=4 then call_dll% = dll_call4("CallDLL4",p1%,p2%,p3%,p4%) if np%=5 then call_dll% = dll_call5("CallDLL5",p1%,p2%,p3%,p4%,p5%) if np%=6 then call_dll% = dll_call6("CallDLL6",p1%,p2%,p3%,P4%,p5%,p6%) end_sub
' ==== res% = dll_call2("GetWindowsVersionAndFamily",adr(vers$),adr(fam$)) sub GetWindowsVersionAndFamily() if variable("GetWindowsVersionAndFamilyV$")=0 then dim GetWindowsVersionAndFamilyV$ if variable("GetWindowsVersionAndFamilyF$")=0 then dim GetWindowsVersionAndFamilyF$ GetWindowsVersionAndFamilyV$ = string$(255," ") GetWindowsVersionAndFamilyF$ = string$(255," ") KGF_res% = dll_call2("GetWindowsVersionAndFamily",adr(GetWindowsVersionAndFamilyV$),adr(GetWindowsVersionAndFamilyF$)) GetWindowsVersionAndFamilyV$ = trim$(GetWindowsVersionAndFamilyV$) GetWindowsVersionAndFamilyF$ = trim$(GetWindowsVersionAndFamilyF$) end_sub
' ==== res% = dll_call2("GetFontName",hnd%,adr(name$)) sub GetFontName(hnd%) if variable("GetFontName$")=0 then dim GetFontName$ GetFontName$ = string$(255," ") KGF_res% = dll_call2("GetFontName",hnd%,adr(GetFontName$)) GetFontName$ = trim$(GetFontName$) end_sub
' ==== res% = DLL_call0("MIDI_Initialize") sub MIDI_Initialize() KGF_res% = DLL_call0("MIDI_Initialize") end_sub
' ==== res% = DLL_call0("MIDI_Stop") sub MIDI_Stop() KGF_res% = DLL_call0("MIDI_Stop") end_sub
' ==== res% = DLL_call3("MIDI_NoteOn",canal%,note%,volume%) sub MIDI_NoteOn(canal%,note%,volume%) if variable("MIDI_NoteOn%")=0 then dim MIDI_NoteOn% MIDI_NoteOn% = DLL_call3("MIDI_NoteOn",canal%,note%,volume%) end_sub
' ==== res% = DLL_call3("MIDI_NoteOff",canal%,note%,volume%) sub MIDI_NoteOff(canal%,note%,volume%) if variable("MIDI_NoteOff%")=0 then dim MIDI_NoteOff% MIDI_NoteOff% = DLL_call3("MIDI_NoteOff",canal%,note%,volume%) end_sub
' ==== res% = DLL_call2("MIDI_SetInstrument",canal%,instrument%) sub MIDI_SetInstrument(canal%,instrument%) if variable("MIDI_SetInstrument%")=0 then dim MIDI_SetInstrument% MIDI_SetInstrument% = DLL_call2("MIDI_SetInstrument",canal%,instrument%) end_sub
' ==== res% = DLL_call3("MIDI_Compile",canal%,nombre%,adr(notes$)) sub MIDI_Compile(canal%,nombre%,notes$) if variable("MIDI_Compile%")=0 then dim MIDI_Compile% dim KGF_n$ : KGF_n$ = notes$ MIDI_Compile% = DLL_call3("MIDI_Compile",canal%,nombre%,adr(KGF_n$)) free KGF_n$ end_sub
' ==== res% = DLL_call1("MIDI_Play",metronome%) sub MIDI_Play(metronome%) if variable("MIDI_Play%")=0 then dim MIDI_Play% MIDI_Play% = DLL_call1("MIDI_Play",metronome%) end_sub
' ==== res% = DLL_call1("MIDI_Reset",maxi%) sub MIDI_Reset(maxi%) if variable("MIDI_Reset%")=0 then dim MIDI_Reset% MIDI_Reset% = DLL_call1("MIDI_Reset",maxi%) end_sub
' ==== res% = DLL_call2("GetShortName",adr(long$),adr(court$)) sub GetShortName(long$) if variable("GetShortName%")=0 then dim GetShortName% if variable("GetShortName$")=0 then dim GetShortName$ GetShortName$ = string$(255," ") GetShortName% = DLL_call2("GetShortName",adr(long$),adr(GetShortName$)) GetShortName$ = trim$(GetShortName$) end_sub
' ==== res% = dll_call2("SendSingleChar",hnd%,adr(car$)) sub SendSingleChar(hnd%,car$) KGF_res% = dll_call2("SendSingleChar",hnd%,adr(car$)) pause 500 end_sub
' ==== res% = dll_call2("SendString",hnd%,adr(txt$)) sub SendString(hnd%,txt$) KGF_res% = dll_call2("SendString",hnd%,adr(txt$)) end_sub
' ==== res% = dll_call2("SendStringAsChars",hnd%,adr(txt$)) sub SendStringAsChars(hnd%,txt$) KGF_res% = dll_call2("SendStringAsChars",hnd%,adr(txt$)) end_sub
' ==== res% = dll_call2("SendStringAsText",hnd%,adr(txt$)) sub SendStringAsText(hnd%,txt$) KGF_res% = dll_call2("SendStringAsText",hnd%,adr(txt$)) end_sub
' ==== res% = dll_call2("SendSingleChar",hnd%,adr(car$)) sub SendChildSingleChar(hnd%,car$) KGF_res% = dll_call2("SendChildSingleChar",hnd%,adr(car$)) pause 500 end_sub
' ==== res% = dll_call2("SendString",hnd%,adr(txt$)) sub SendStringChild(hnd%,txt$) KGF_res% = dll_call2("SendStringChild",hnd%,adr(txt$)) end_sub
' ==== res% = dll_call2("SendStringAsChars",hnd%,adr(txt$)) sub SendStringChildAsChars(hnd%,txt$) KGF_res% = dll_call2("SendStringChildAsChars",hnd%,adr(txt$)) end_sub
' ==== res% = DLL_call1("SetSpeaker",mode%) sub SetSpeaker(mode%) KGF_res% = DLL_call1("SetSpeaker",mode%) end_sub
' ==== ' ==== ' ==== ' ==== ' ==== ' ====
' ==== FIN du programme #INCLUDE dépilé: C:\PANO\DLL\DLLs\KGF_SUB\KGF_SUB.bas #1 ====
|
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 20:49 | |
| et si dans SelecteurDeVoix, derrière "memo_n_temp%", tu mettais "width n_temp%,200" ? - Code:
-
sub SelecteurDeVoix(n_combo%,n_temp%,haut%,gauche%,large%) combo n_combo% : top n_combo%,haut% : left n_combo%,gauche% : width n_combo%,large% memo n_temp% : width n_temp%,500 : hide n_temp% ' *************** charger la liste des voix installées *********** SpeakVoices() : ' cette fonction crée automatiquement la variable SpeakVoices$ ' **************************************************************** item_add n_temp%,SpeakVoices$ : ' le memi contient la liste des voix for i%=1 to count(n_temp%) item_add n_combo%,item_read$(n_temp%,i%) next i% delete n_temp% end_sub
EDIT J'ai appliqué cette modif dans les modules publiés en page 5 !
Dernière édition par Klaus le Sam 6 Oct 2012 - 22:43, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 21:08 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 21:26 | |
| @Cosmos70: Je reprends tes programmes tels que tu les avais postés (j'ai juste modifié le chemin d'accès à la DLL): Le récepteur (qui n'a pas besoin de la DLL ni de KGF_SUB): - Code:
-
rem lanceur pour pagiciel caption 0,"EXÉCUTION DU PROGRAMME" :height 0,50 ' il faut un edit placé en -1234 de réception dim message_recu$ label reception EDIT 1:LEFT 1,-1234:TOP 1,-1234 ON_CHANGE 1,reception end ' ==============================================================================' reception: message "le text a changé" message_recu$ = text$(1) ' traitement: message message_recu$ terminate return
L'émetteur: - Code:
-
rem le programme de réception est déjà lancé manuellement avant dim dll$ :left 0,500:height 0,50 dll$ = "KGF.dll" KGF_initialize(dll$) envoi("ceci est un essai")
END sub envoi(mess$) dim_local i% , dest$ i% = 0 - 1234 dest$ = "EXÉCUTION DU PROGRAMME" :' caption du programme visé. IPCGetHandle(dest$,i%) : message ipcgethandle% wait 500 IPCSendMessage(mess$,IPCGetHandle%) end_sub ' charger KGF.dll #include "KGF_SUB.bas"
J'ai généré les dexu programmes en EXE. Je réduis TOUS les autres programmes dans la barre des tâches. Je lance manuellement le récepteur. Lorsque celui-ci démarre, le lance l'émetteur. Voici ce qui apparaît: Je clique sur le bouton, et voici le résultat: Je clique sur le bouton, et voici le résultat: Ce que tu peux faire: dans le programme récepteur, mets un TO_FOREGROUND 0 juste avant les commandes MESSAGE. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 21:32 | |
| @Ygeronimi: Voici le programme tel qu'il devrait marcher: - Code:
-
' Demo_SelecteurDeVoix.bas
label prononcer
KGF_initialize("KGF.dll")
dim i%
alpha 10 : top 10,10 : left 10,10 : caption 10,"Voix installées:" ' *************** création su sélecteur ************************** SelecteurDeVoix(11,12,10,100,200) ' **************************************************************** alpha 20 : top 20,40 : left 20,10 : caption 20,"Volume:" scroll_bar 21 : top 21,40 : left 21,100 : width 21,200 min 21,0 : max 21,100 : position 21,50 alpha 30 : top 30,70 : left 30,10 : caption 30,"Vitesse:" scroll_bar 31 : top 31,70 : left 31,100 : width 31,200 min 31,0 : max 31,20 : position 31,10 alpha 40 : top 40,100 : left 40,10 : caption 40,"Texte:" memo 41 : top 41,100 : left 41,100 : width 41,400 button 50 : top 50,200 : left 50,100 : caption 50,"Prononcer" on_click 50,prononcer
end
prononcer: if item_index(11)=0 message "Il faut sélectionner une langue" return end_if ' *************** prononcer le texte ***************************** Speak(text$(41),position(21),position(31)-10,item_index(11)) ' **************************************************************** return
sub SelecteurDeVoix(n_combo%,n_temp%,haut%,gauche%,large%) combo n_combo% : top n_combo%,haut% : left n_combo%,gauche% : width n_combo%,large% memo n_temp% : width n_temp%,500 : hide n_temp% ' *************** charger la liste des voix installées *********** SpeakVoices() : ' cette fonction crée automatiquement la variable SpeakVoices$ ' **************************************************************** item_add n_temp%,SpeakVoices$ : ' le memo contient la liste des voix for i%=1 to count(n_temp%) item_add n_combo%,item_read$(n_temp%,i%) next i% delete n_temp% end_sub
#INCLUDE "KGF_SUB.bas"
Dernière édition par Klaus le Sam 6 Oct 2012 - 22:42, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 21:43 | |
| Je suis bien d'accord avec toi, " tel qu'il devrait marcher" mais chez moi j'ai ce problème d'affichage dans le combo et les items qui fais que Pierre est affiché sur une cinquième ligne alors que la commande est sur la quatrième qui, elle, affiche la fin de l'item 3
que j'essaye désespèrement de remettre dans son item.
| |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 22:00 | |
| Pour le transfert de message., je vais essayer une autre solution. Le to_foreground 0 ne change rien. Le but est de pouvoir selon le cas, de lancer un programme selon son chemin, selon une sélection de code, ou selon le contenu d'un memo, sans toucher au fichier. Cet info, je vais l'insérer dans la 1erè ligne du code pour lancer le programme, le loader avec cet info, saura quoi faire.
C'est quand même curieux, cette fonction fonctionnait bien, même que je t'avais transmis le travail de 6 programmes bas qui communiquait ensemble sans problème. Tu es sûr que la méthode est valable pour tous les systèmes. Car en ayant la même chose, on n'a pas les mêmes résultats. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 22:09 | |
| @Ygeronimo: dans la procedure SelecteurDeVoix, enlève le "hide" pour le mémo, et le delete n_temp% en fin de procédure. Tu devrais voir ce que le mémo contient. Cela permettra peut-être d'y voir un peu plus clai. N'oublie pas d'ajouter top n_temp%,40 après la création du mémo, pour éviter une superposition. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 22:11 | |
| @Tous: J'ai élargi les possibilités de la fonction Speak, et KGF.dll passe à 1.67 06/10/2012 reconnaissance de tags XML dans le texte, pour la fonction Speak
On peut moduler la vitesse, le volume, la hauteur de voix, l'emphase et des silences en plein milieu du texte, à l'aide de balises XML. Uniquement KGF.dll et la doc associée change. KGF_SUB.bas et demo_KGF_SUB.bas restent inchangés. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 22:16 | |
| @Cosmos70: Pour répondre à ta question: oui, je suis sûr que cela marche partout. Cela ne doit pas dépendre du système.
Est-ce qu'il y aurait d'autres candidats à vouloir tester l'aspect de communication entre programmes ? Alors prenez les deux modules postés dans mon post d'aujourd'hui à 21h26 (là où il y a les 3 images d'écran), générez les deux programmes en EXE, réduisez tout dans la barre des tâches, lancez le premier programme, et lorsqu'il apparaît, lancez le deuxième. Vous devriez avoir la série des 3 messages qui sont visibles sur mes copies d'écran. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 22:19 | |
| heu ....dès que j' ai fini mon match de avec le combo | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 22:25 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 22:31 | |
| place un width n_temp%,500 derrière la déclaration du mémo ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 22:35 | |
| çà marche !!!! Voilà le code qui fonctionne avec Anna à sa place - Code:
-
' Demo_SelecteurDeVoix.bas
label prononcer
KGF_initialize("KGF.dll")
dim i%
alpha 10 : top 10,10 : left 10,10 : caption 10,"Voix installées:" ' *************** création su sélecteur ************************** SelecteurDeVoix(11,12,10,100,300) ' **************************************************************** alpha 20 : top 20,40 : left 20,10 : caption 20,"Volume:" scroll_bar 21 : top 21,40 : left 21,100 : width 21,200 min 21,0 : max 21,100 : position 21,50 alpha 30 : top 30,70 : left 30,10 : caption 30,"Vitesse:" scroll_bar 31 : top 31,70 : left 31,100 : width 31,200 min 31,0 : max 31,20 : position 31,10 alpha 40 : top 40,100 : left 40,10 : caption 40,"Texte:" memo 41 : top 41,100 : left 41,100 : width 41,400 button 50 : top 50,200 : left 50,100 : caption 50,"Prononcer" on_click 50,prononcer
end
prononcer: if item_index(11)=0 message "Il faut sélectionner une langue" return end_if ' *************** prononcer le texte ***************************** Speak(text$(41),position(21),position(31)-10,item_index(11)) ' **************************************************************** return
sub SelecteurDeVoix(n_combo%,n_temp%,haut%,gauche%,large%) combo n_combo% : top n_combo%,haut% : left n_combo%,gauche% : width n_combo%,large% memo n_temp% : width n_temp%,500 :hide n_temp% ' *************** charger la liste des voix installées *********** SpeakVoices() : ' cette fonction crée automatiquement la variable SpeakVoices$ ' **************************************************************** item_add n_temp%,SpeakVoices$ : ' le memo contient la liste des voix for i%=1 to count(n_temp%) item_add n_combo%,item_read$(n_temp%,i%) next i% delete n_temp% end_sub
#INCLUDE "KGF_SUB.bas" | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: test communication Sam 6 Oct 2012 - 22:48 | |
| Cela se passe comme tes captures message Handle et les deux autres message | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 22:49 | |
| Merci, Ygeronimi !
pour SpeakVoices: J'ai modifié toutes les occurrences de SelecteurDeVoix dans mes posts pour tenir compte des résultats de tes tests ! Quelle était la ligne qui posait problème ? Etait-elle vraiment si longue ? Ou alors, le mémo coupe peut-être la ligne globalement, avant de s'apercevoir qu'il y a des CR LF pour couper la chaîne en plusieurs lignes. C'est sûrement cela.
Donc, dans l'avenir, surdimensionner la largeur d'un mémo dans lequel il faut charger une chaîne multi-lignes !
pour communication entre programmes: Cela confirme ce que je pensais: cela marche partout. J'avais vérifié l'existence des API pour Vista et W7, mais on n'est jamais vraiment sûr. Mais tu me rassures. Il doit y avoir un autre problème chez Cosmos70. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 22:53 | |
| Disons que c'est un principe de précaution à prendre à moins que seule une partie de la ligne suffise et soit à la même place avec le même nombre de caractères et de réduire la ligne à la taille du mémo. mais bon c'est plus court de mettre un width plus grand la ligne : 3: Microsoft Anna - English (United States)était coupée comme ceci : 3: Microsoft Anna - English (United States)et "States)" prenait la place de l'item 4 (LH Pierre) tout en conservant la commande du coup en sélectionnant "LH Pierre" je sélectionnait l'item 5 qui n'avait aucune commande et me renvoyait la voix par défaut "Virginie" | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 23:09 | |
| En effet. Le sélecteur réagit par rapport à l'indice (item_index) du combo, et non sur le libellé. La 4ème ligne choisit la 4ème voix. Si tu cliques sur la cinquième ligne, c'est un numéro de voix non défini, et il prend d'office la voix par défaut.
Mais cela montre clairement que le découpage de la ligne (le word-wrap en anglais) se fait au début de item-add, en comparant la chaîne entière à la place disponible sur une ligne, SANS tenir compte des CR LF à l'intérieur de la chaîne. C'est compréhensible, mais c'est dommage, car pour éviter des dépassements, il faudrait analyser la chaîne en Panoramic et faire un item_add pour chaque sous-chaîne, alors que je me croyais malin d'avoir trouvé cette astuce du mémo pour éviter cela. Tant pis - on va faire avec. | |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 23:54 | |
| Je ne me rappelle plus pour un memo. Mais pour un list avec la fonction file_load, on lit quelque chose comme 1024 caractères sur une ligne. Mais on peut remplir plus de 65000 caractères par ligne pour un list, à condition de procédé à faire le système de sauvegarde et de lecture par celui des fichiers, avec file_open_read x. C'est le procédé que j'utilise pour pagiciel.
J'ai voulu faire l'essai du speak mais ça na pas marché, mais c'était juste pour voir,car j'ai autre chose à faire. Et c'est vraiment secondaire pour moi.
Dernière édition par cosmos70 le Dim 7 Oct 2012 - 8:19, édité 1 fois |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Oct 2012 - 5:27 | |
| @ Klaus,
Je vais me faire gronder mais bon...
Crois tu qu'il serait possible par dll d'ajouter un objet DateTimePiker dans un form panoramic ?
PS : je sais que c'est un objet win32 mais après je ne sais pas comment celà se passe dans w7 en 64 bits. | |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Dim 7 Oct 2012 - 9:00 | |
| J'ai modifier le programme d'envoi pour utiliser IPC.dll à la place: - Code:
-
execute "C:\PANO\loader_pagiciel.exe" wait 2000 dim dll$ ,handle%:left 0,500:height 0,50 dll_on "c:\PANO\DLL\DLLs\IPC.dll"
message "attendre la venu du caption 'EXÉCUTION DU PROGRAMME'" envoi("ceci est un essai0 ") message "le handle reçu est:"+ str$(handle%):' la réponse est '0' wait 10000 envoi("ceci est un essai1") message "le handle reçu est:"+str$(handle%):' la réponse est '0' END sub envoi(mess$) dim_local i% , dest$ , res% i% = 0 - 1234 dest$ = "EXÉCUTION DU PROGRAMME" :' caption du programme visé. handle% = dll_call3("IPCGetHandle",adr(dest$),len(dest$),i%) wait 100 res% = DLL_call3("IPCSendMessage",adr(mess$),len(mess$),handle%) end_sub Le résultat est le,même. - Spoiler:
- Klaus a écrit:
- Est-ce qu'il y aurait d'autres candidats à vouloir tester l'aspect de communication entre programmes ?
Là faut pas révé. Quand c'est pour moi, on ne teste pas. C'est habituel
|
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Oct 2012 - 14:06 | |
| Stop à la parano.... Cosmos70, j'ai répondu à l'appel pour tester dès que j'ai résolu mon propre souci. he...oui, je n'ai qu'un petit disque dur, pas de mémoire vive, et un processeur long à la détente donc je ne résolve qu'un problème à la fois... Et quand je lis un post je le lis entier...même les spoilers ! | |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Dim 7 Oct 2012 - 15:08 | |
| Tu as toi-même dis qu'avant on s'occupait du combo je crois, tu as parfaitement raison, et je fais pareil la plupart du temps. Je crois d'ailleurs qu'il faut être sur W7 et pas n'avoir que le "mode 32bits" (mauvais mot) pour avoir ce problème. C'est pas grave, la plupart du temps je contourne les problèmes. Seulement avant de le faire, j'airai aimé savoir si c'est moi qui suis en cause ou non. De toute manière ce soir je prend une décision sur la méthode, et une fois adoptée, je ne changerai rien. |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Oct 2012 - 15:25 | |
| je n'ai pas dit on, j'ai dit Je.
donc une fois que j'ai résolu, avec l'aide de Klaus, le Pb du Combo, j'ai testé la communication et j'en ai donné le résultat.
Apparemment le problème serait donc particulier à ton utilisation ou du moins à ton code source car parfois une simple "," suffit à détraquer tout le tsointsoin. | |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Dim 7 Oct 2012 - 16:48 | |
| Je viens de faire un essai avec mon EEEPC, et j'avais le même problème. Ce n'est pas la dll qui est en cause, mais la sub. En remplaçant la sub par un gosub et return, cela marche. C'est la version du 12 septembre, comme je vais partir pour la capital de Franche-Comté, j'ai pas le temps de voir avec la version d'octobre. De toute façon la dernière version est inutilisable pour Pagicel à cause d'un bug sur les tableaux
EDIT: c'est aussi ok pour W7 |
| | | Contenu sponsorisé
| Sujet: Re: Wrapper autour de KGF.dll par procédures | |
| |
| | | | Wrapper autour de KGF.dll par procédures | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |