October 17, 2021, 10:44:45

Author Topic: [bb] OSALib by boomboom [ 1+ years ago ]  (Read 3981 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] OSALib by boomboom [ 1+ years ago ]
« on: June 29, 2017, 00:28:40 »
Title : OSALib
Author : boomboom
Posted : 1+ years ago

Description : This small library just simply acts as an easy way to take advantage of the OSAKit Pro features <a href="http://www.osakit.com./" target="_blank">http://www.osakit.com.[/url] If anyone makes any changes for the better or finds any bugs then please repost it :)

If anyone has any comments on my coding style then I would love to hear them :)


Code :
Code: BlitzBasic
  1. ;- OSA KIT LIBRARY -------------------------------------------------------
  2. ;-------------------------------------------------------------------------
  3. ;Communication library for OSA Kit (http://www.osakit.com/).
  4. ;By Chris 'boomboom' Bate (me@chrisbate.com).
  5. ;Version 1.21
  6. ;
  7. ;Use the Public Functions
  8. ;Put the Update Function in your main loop, with your application title as the string.
  9. ;Currently suports 1 download (another download request will overwrite the last)
  10. ;Doesn't Support browser communication scripts
  11. ;
  12. ;Uses User32.decls
  13. ;
  14. ;If you make it better please rerelease it, or email it to me at the address above :)
  15.  
  16. ;Public
  17. Function OSA_Download(URL$)
  18.        
  19.         If URL <> "" Then
  20.                 OSA_DownloadingURL = URL
  21.                 OSA_DownloadPercent = 0
  22.                 OSA_DownloadingSomething = True
  23.                 OSA_DownloadStalledTimer = 0
  24.                 OSA_DownloadStalledLastPercent = 0
  25.                 OSA_CreateOutgoingMessage("DOWNLOAD",URL)
  26.         Else
  27.                 RuntimeError "OSA_Download | File not found on server"
  28.         End If
  29.        
  30. End Function
  31. Function OSA_GetPercent%()
  32.  
  33.         Return OSA_DownloadPercent
  34.  
  35. End Function
  36. Function OSA_GetDownloadLocation$()
  37.  
  38.         ;Local Variables -----
  39.         Local Location$
  40.         ;---------------------
  41.        
  42.         If OSA_DownloadLocation <> ""
  43.                 ;Reset Variables
  44.                 OSA_DownloadingSomething = False
  45.                 OSA_DownloadingURL =""
  46.                 Location = OSA_DownloadLocation
  47.                 OSA_DownloadLocation = ""
  48.                 Return Location
  49.         Else
  50.                 Return ""
  51.         End If
  52.  
  53. End Function
  54. Function OSA_Browse(URL$)
  55.  
  56.         If URL <> "" Then
  57.                 OSA_CreateOutgoingMessage("BROWSE",URL)
  58.         Else
  59.                 RuntimeError "OSA_Browse| Please Enter Valid URL"
  60.         End If
  61.  
  62. End Function
  63. Function OSA_BrowseNew(URL$)
  64.  
  65.         If URL <> "" Then
  66.                 OSA_CreateOutgoingMessage("BROWSENEW",URL)
  67.         Else
  68.                 RuntimeError "OSA_Browse| Please Enter Valid URL"
  69.         End If
  70.  
  71. End Function
  72. Function OSA_EmbedMe()
  73.  
  74.         OSA_CreateOutgoingMessage("EMBEDME")
  75.  
  76. End Function
  77. Function OSA_ReleaseMe()
  78.  
  79.         OSA_CreateOutgoingMessage("RELEASEME")
  80.  
  81. End Function
  82. Function OSA_ShowMe()
  83.  
  84.         OSA_CreateOutgoingMessage("SHOWME")
  85.  
  86. End Function
  87. Function OSA_HideMe()
  88.  
  89.         OSA_CreateOutgoingMessage("HIDEME")
  90.  
  91. End Function
  92.  
  93. Function OSA_UpdateOSA(NormalAppTitle$)
  94.  
  95.         ;Local Variables -----
  96.         Local tOSA_System.OSA_System ;Define OSA_System
  97.         Local tMsgOut.OSA_OutgoingMessage ;Define Outgoing Message Type
  98.         Local InMessage$
  99.         Local OutMessage$
  100.         ;---------------------
  101.        
  102.         ;Gather Message & Reset
  103.         InMessage = OSA_GetWindowText() : OSA_SetWindowText(NormalAppTitle)
  104.        
  105.         ;Return OSA_System Type
  106.         tOSA_System.OSA_System = First OSA_System
  107.        
  108.         ;Make if Null
  109.         If tOSA_System = Null And InMessage <> NormalAppTitle Then
  110.                 tOSA_System = New OSA_System
  111.                         tOSA_SystemID = Handle(tOSA_System)
  112.                         tOSA_SystemDefaultAppTitle = NormalAppTitle
  113.                         tOSA_SystemOSAhwnd = Int(InMessage)
  114.         End If
  115.        
  116.         ;Use if not Null
  117.         If tOSA_System <> Null
  118.                
  119.                 ;INCOMING
  120.                 Select OSA_ParseMessageCommand(InMessage)
  121.                        
  122.                         Case "DOWNLOADED"
  123.                                 OSA_DownloadLocation$ = OSA_ParseMessageParameter(InMessage)
  124.                        
  125.                         Case "PERCENT"
  126.                                 OSA_DownloadPercent = Int(OSA_ParseMessageParameter(InMessage))
  127.                        
  128.                 End Select
  129.                
  130.                 ;OUTGOING
  131.                 tMsgOut = First OSA_OutgoingMessage
  132.                 If tMsgOut <> Null
  133.                        
  134.                         ;Process Outgoing Message
  135.                         OutMessage = tMsgOutCommand
  136.                         If tMsgOutParameter <> "" Then OutMessage = OutMessage + "|" + tMsgOutParameter
  137.                        
  138.                         ;Send Message
  139.                         OSA_SetWindowText(OutMessage,tOSA_SystemOSAhwnd)
  140.                        
  141.                         ;Remove Message
  142.                         Delete tMsgOut
  143.                        
  144.                 Else
  145.                        
  146.                         ;Message System Idle? Update Checks
  147.                         If OSA_DelayedCheck > 20 Then
  148.                                
  149.                                 ;Updates File Download Percentage
  150.                                 If OSA_DownloadingSomething = True Then OSA_CreateOutgoingMessage("GETPERCENT")
  151.                                
  152.                                 ;Forces Destroy if OSAKit Destruction
  153.                                 If api_IsWindow(tOSA_SystemOSAhwnd) = False End
  154.                                
  155.                                 OSA_DelayedCheck = 0
  156.                         Else
  157.                                 OSA_DelayedCheck = OSA_DelayedCheck + 1
  158.                         End If
  159.                        
  160.                         ;Download Stalled? Restart Download
  161.                         If OSA_DownloadingSomething = True
  162.                                 If OSA_DownloadStalledTimer = 150
  163.                                        
  164.                                         If OSA_GetPercent() = OSA_DownloadStalledLastPercent Then OSA_Download(OSA_DownloadingURL)
  165.                                         If OSA_GetPercent() > OSA_DownloadStalledLastPercent Then OSA_DownloadStalledLastPercent = OSA_GetPercent()
  166.                                        
  167.                                         OSA_DownloadStalledTimer = 0
  168.                                 Else
  169.                                         OSA_DownloadStalledTimer = OSA_DownloadStalledTimer + 1
  170.                                 End If
  171.                         End If
  172.                        
  173.                 End If
  174.                
  175.         End If
  176.        
  177. End Function
  178.  
  179. ;Private
  180. Global OSA_DownloadingURL$
  181. Global OSA_DownloadPercent%
  182. Global OSA_DelayedCheck%
  183. Global OSA_DownloadLocation$
  184. Global OSA_DownloadingSomething%
  185.  
  186. Global OSA_DownloadStalledTimer%
  187. Global OSA_DownloadStalledLastPercent%
  188.  
  189. Type OSA_System
  190.  
  191.         Field ID%
  192.        
  193.         Field DefaultAppTitle$
  194.         Field OSAhwnd%
  195.  
  196. End Type
  197. Type OSA_OutgoingMessage
  198.  
  199.         Field ID%
  200.        
  201.         Field Command$
  202.         Field Parameter$
  203.  
  204. End Type
  205.  
  206. Function OSA_GetWindowText$(hwnd%=0)
  207.        
  208.         ;Local Variables -----
  209.         Local MessageBank% ;Bank for incoming data
  210.         Local length% ;Length of message (how many characters)
  211.         Local i% ;Standard loop varible
  212.         Local InMessage$ ;Message as string
  213.         ;---------------------
  214.  
  215.         If hwnd = 0 Then hwnd = SystemProperty("AppHWND")
  216.  
  217.         MessageBank = CreateBank(254)
  218.        
  219.         length = api_GetWindowText(hwnd,MessageBank,254)
  220.        
  221.         If length <> 0 Then
  222.                
  223.                 For i = 0 To length - 1
  224.                         InMessage = InMessage + Chr((PeekByte(MessageBank,i)))
  225.                 Next
  226.                
  227.                 FreeBank MessageBank
  228.                
  229.                 Return InMessage
  230.                
  231.         End If
  232.        
  233. End Function
  234. Function OSA_SetWindowText(OutMessage$,hwnd%=0)
  235.  
  236.         If hwnd = 0 Then hwnd = SystemProperty("AppHWND")
  237.  
  238.         api_SetWindowText(hwnd%, OutMessage$)
  239.        
  240. End Function
  241. Function OSA_CreateOutgoingMessage%(Command$,Parameter$="")
  242.        
  243.         ;Local Variables -----
  244.         Local tMsgOut.OSA_OutgoingMessage ;Define Outgoing Message Type
  245.         ;---------------------
  246.        
  247.         tMsgOut = New OSA_OutgoingMessage
  248.                 tMsgOutID = Handle(tMsgOut)
  249.                 tMsgOutCommand = Command
  250.                 tMsgOutParameter = Parameter
  251.        
  252.         Return tMsgOutID
  253.  
  254. End Function
  255. Function OSA_ParseMessageCommand$(Msg$)
  256.  
  257.         ;Local Variables -----
  258.         Local i% ;Standard loop variable.
  259.         Local Current$ ;Current character being parsed.
  260.         ;---------------------
  261.  
  262.         For i = 1 To Len(Msg)
  263.                 Current = Mid(Msg,i,1)
  264.                 If Current = "|" Then Return Left(Msg,i-1)
  265.         Next
  266.  
  267. End Function
  268. Function OSA_ParseMessageParameter$(Msg$)
  269.  
  270.         ;Local Variables -----
  271.         Local i% ;Standard loop variable.
  272.         Local Current$ ;Current character being parsed.
  273.         ;---------------------
  274.  
  275.         For i = 1 To Len(Msg)
  276.                 Current=Mid(Msg,i,1)
  277.                 If Current="|" Then Return Mid(Msg,i+1,Len(Msg))
  278.         Next
  279.  
  280. End Function
  281. ;=========================================================================
  282. ;=========================================================================


Comments :


Sphinx(Posted 1+ years ago)

 Thanks for sharing that Chris :)Oh and thanks for Ro too ;)


Offline sphinx

  • Full Member
  • ***
  • Posts: 207
    • Ancientsoft
Re: [bb] OSALib by boomboom [ 1+ years ago ]
« Reply #1 on: September 17, 2017, 10:09:34 »
Nice  8)
Kind regards,
Maher F. Farag
www.ancientsoft.com
www.osakit.com

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal