Frage zu ActiveX für Webgadget aktivieren ohne die Meldung

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Frage zu ActiveX für Webgadget aktivieren ohne die Meldung

Beitrag von hjbremer »

Hallo, liebe Freunde

ich brauche mal Hilfe für das Webgadget

Habe das "FileSystemObject" für ein Javascript benutzt und nun nervt natürlich die doofe Meldung vom IE.
Natürlich kann ich unter
  • Sicherheit-Stufe anpassen, ActiveX-Steuerelemente + Plugins
    ActiveX-Steuerelemente ausführen, die nicht als sicher für Scripting markiert sind:
diese aktivieren, aber das gilt dann für alle IE Sitzungen.

Ich möchte aber dies nur für mein Programm tun, welches das Script im Webgadget ausführt.
also Prog starten, IE umstellen, Prog beenden, IE zurückstellen.

Anscheinend geht das über die Registry, aber ich habe null Ahnung wie man dort Änderungen vornimmt.
Und ohne fachlichen Rat möchte ich da nicht rumpfuschen. Die Beispiele hier im Forum, für das prinzipielle Vorgehen sind mir doch zu unsicher.

Via Google habe ich nur folgendes gefunden
  • ; HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones
    ;
    ; Zone 0 = Arbeitsplatz
    ; Zone 1 = Intranet
    ; Zone 2 = Vertrauenswürdige Sites
    ; Zone 3 = Internet
    ; Zone 4 = Eingeschränkte Sites
    ;
    ; Wertenamen als REG_DWORD:
    ; 1001 = Download von signierten ActiveX-Steuerelementen
    ; 1004 = Download von unsignierten ActiveX-Steuerelementen
    ; 1200 = ActiveX-Steuerelemente und Plugins ausführen
    ; 1201 = ActiveX-Steuerelemente initialisieren und ausführen, die nicht sicher sind
    ; 1405 = ActiveX-Steuerelemente ausführen, die für Scripting sicher sind
    ;
    ; aktivieren = 0
    ; deaktivieren = 3
    ; bestätigen = 1
aber leider kann ich nicht so wirklich was damit anfangen

wäre nett, wenn mir jemand einen Beispielcode posten würde.

Wenn es einen besseren Weg, als über die Registry, gibt, wäre das genial

--------------------------------------------------------------

Und hier ein Democode zum Testen des Scripts
dazu muß wenigstens in den Sicherheitseinstellungen vom IE "ActiveX-Steuerelemente ausführen" auf bestätigen bzw. aktiviert stehen.

Code: Alles auswählen

Enumeration 1
   #mapwindow
   #mapcontainer
   #mapwebgadget    
EndEnumeration

Procedure.s MakeHtmlCode()
   
   Protected html.s
   Protected *c.character
      
   ;Null Char im Memory zwischen Datazeilen gegen Return tauschen
   For *c = ?MapLabel To ?MapLabelEnd
      If *c\c = 0           
         *c\c = 13            
      EndIf   
   Next
   
   ;Script laden
   html = PeekS(?MapLabel, ?MapLabelEnd - ?MapLabel)
   
   ProcedureReturn html  
   
EndProcedure

Procedure Main()
   
   Protected event
   
   Protected flags = #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget
   
   OpenWindow(#mapwindow, 0, 0, 550, 500, "", flags)

   ContainerGadget(#mapcontainer, 0, 0, 550, 500, #PB_Container_BorderLess)  
      WebGadget(#mapwebgadget, 0, 0, 550, 500, "")
      ;browser.IWebBrowser2 = GetWindowLongPtr_(GadgetID(#mapwebgadget), #GWL_USERDATA)  
      ;If browser: browser\put_Silent(#True): EndIf
   CloseGadgetList()
   SetGadgetItemText(#mapwebgadget, #PB_Web_HtmlCode, MakeHtmlCode())

   Repeat : event = WaitWindowEvent()
      
   Until event = #PB_Event_CloseWindow

EndProcedure

Main()

DataSection
   MapLabel:   
   Data.s "<html>"
   Data.s "<head>"
   Data.s "<title>PurebasicTest</title>"
   Data.s ""
   Data.s "<script type='text/javascript'>"
   Data.s ""
   Data.s "function TextFile(flag, text){"
   Data.s ""
   Data.s "   // unter Sicherheit-Stufe anpassen, ActiveX-Steuerelemente + Plugins"
   Data.s "   // ActiveX-Steuerelemente ausführen, die nicht als sicher für Scripting markiert sind: aktivieren !!!"
   Data.s ""
   Data.s "      var fso = new ActiveXObject('Scripting.FileSystemObject')"
   Data.s "      var file"
   Data.s "      var filename = 'c:\\test.txt'"
   Data.s ""
   Data.s "      if (navigator.appName != 'Microsoft Internet Explorer') { return ''}   // kein Explorer, abbrechen"
   Data.s "      if ( flag == 1 ) {"
   Data.s "         text = ''"
   Data.s "         if ( !(fso.FileExists(filename)) ) { return text}        // nicht vorhanden, abbrechen"
   Data.s "         file = fso.OpenTextFile(filename)                        // öffnen"
   Data.s "         if ( !(file.AtEndOfStream) ) { text = file.ReadAll() }   // nicht leer, Dateiinhalt lesen"
   Data.s "         file.Close()                                             // schliessen"
   Data.s "         return text                                              // Dateiinhalt zurück"
   Data.s "      }"
   Data.s "      else if ( flag == 2 ) {"
   Data.s "         file = fso.CreateTextFile(filename, true)       // Datei erstellen"
   Data.s "         file.Write(text)                                // Text schreiben"
   Data.s "         file.Close()"
   Data.s "      }"
   Data.s "      delete fso; fso = 0"
   Data.s "   }"
   Data.s ""
   Data.s "function load(){"
   Data.s "      text = TextFile(1)"
   Data.s "      document.form.text.value = text"
   Data.s "   }"
   Data.s ""
   Data.s "function save(){"
   Data.s "      text = document.form.text.value"
   Data.s "      TextFile(2, text)"
   Data.s "   }"
   Data.s ""
   Data.s "</script>"
   Data.s "</head>"
   Data.s "<body>"
   Data.s ""
   Data.s "<form name='form'>"
   Data.s "  <textarea name='text' cols='30' rows='5'> hallo! </textarea><br>"
   Data.s "  <input type='button' value='Load!' onclick='load()'>"
   Data.s "  <input type='button' value='Save!' onclick='save()'>"
   Data.s "</form>"
   Data.s "</body>"
   Data.s "</HTML>"
   MapLabelEnd:
EndDataSection 
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer