Code: Select all
#PB_Event_DataReceived
It is already defined and I simply missused for this.
If I run
Code: Select all
Debug #PB_Event_DataReceived
But I can not find out where it comes from.
Code: Select all
#PB_Event_DataReceived
Code: Select all
Debug #PB_Event_DataReceived
Code: Select all
EnableExplicit
Enumeration CustomEvent #PB_Event_FirstCustomValue
#MyEvent_DataReceived
EndEnumeration
; ----
Procedure AllocateString(String.s) ; Result = Pointer
Protected *mem.string = AllocateStructure(String)
If *mem
*mem\s = String
EndIf
ProcedureReturn *mem
EndProcedure
Procedure.s FreeString(*mem.string) ; Result String
Protected r1.s
If *mem
r1 = *mem\s
FreeStructure(*mem)
EndIf
ProcedureReturn r1
EndProcedure
; ----
Procedure GetDataJS(JsonParameters$)
PostEvent(#MyEvent_DataReceived, EventWindow(), EventGadget(), 0, AllocateString(JsonParameters$))
ProcedureReturn #Null
EndProcedure
; ----
Define Html$, Result$
Html$ = ~"<input type=\"text\" id=\"userInput\" name=\"userInput\" value=\"Hello World\">\n"
OpenWindow(0, 100, 100, 400, 250, "Hello", #PB_Window_SystemMenu)
WebViewGadget(0, 0, 0, 400, 200, #PB_WebView_Debug)
SetGadgetItemText(0, #PB_WebView_HtmlCode, Html$)
ButtonGadget(1, 10, 210, 120, 25, "Get Data")
BindWebViewCallback(0, "getData", @GetDataJS())
Repeat
Select WaitWindowEvent()
Case #MyEvent_DataReceived
Result$ = FreeString(EventData())
Debug Result$
Case #PB_Event_Gadget
If EventGadget() = 1
WebViewExecuteScript(0, ~"window.getData(\"userInput\", document.getElementById(\"userInput\").value)")
EndIf
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
mk-soft wrote: Sun Jan 26, 2025 8:01 pm Not exists on macOS and Linux ...
Better #MyEvent_DataReceived
Code: Select all
EnableExplicit Enumeration CustomEvent #PB_Event_FirstCustomValue #MyEvent_DataReceived EndEnumeration ; ---- Procedure AllocateString(String.s) ; Result = Pointer Protected *mem.string = AllocateStructure(String) If *mem *mem\s = String EndIf ProcedureReturn *mem EndProcedure Procedure.s FreeString(*mem.string) ; Result String Protected r1.s If *mem r1 = *mem\s FreeStructure(*mem) EndIf ProcedureReturn r1 EndProcedure ; ---- Procedure GetDataJS(JsonParameters$) PostEvent(#MyEvent_DataReceived, EventWindow(), EventGadget(), 0, AllocateString(JsonParameters$)) ProcedureReturn #Null EndProcedure ; ---- Define Html$, Result$ Html$ = ~"<input type=\"text\" id=\"userInput\" name=\"userInput\" value=\"Hello World\">\n" OpenWindow(0, 100, 100, 400, 250, "Hello", #PB_Window_SystemMenu) WebViewGadget(0, 0, 0, 400, 200, #PB_WebView_Debug) SetGadgetItemText(0, #PB_WebView_HtmlCode, Html$) ButtonGadget(1, 10, 210, 120, 25, "Get Data") BindWebViewCallback(0, "getData", @GetDataJS()) Repeat Select WaitWindowEvent() Case #MyEvent_DataReceived Result$ = FreeString(EventData()) Debug Result$ Case #PB_Event_Gadget If EventGadget() = 1 WebViewExecuteScript(0, ~"window.getData(\"userInput\", document.getElementById(\"userInput\").value)") EndIf Case #PB_Event_CloseWindow Break EndSelect ForEver