Seite 1 von 1

WebGadget strg+c und strg+v hinzufügen

Verfasst: 15.12.2015 23:56
von udg
nun habe ich ja soweit meine 2 Fenster am laufen. Dachte ich mir doch, STRG+C und STRG+V sind schnell zum WebGadget hinzugefügt aber dem ist natürlich mal wieder nicht so :(

Ich suche und lese seit Stunden und bekomme das einfach nicht gebacken.

Code: Alles auswählen

AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_C, #WebGadget)
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_V, #WebGadget)
Reicht das nicht aus um STRG+C und STRG+V zu aktivieren?
Das Beispiel unter diesem Link:
http://www.purebasic.fr/english/viewtop ... 12&t=48539

geht leider nicht?. Ich habe das Webgadget in einer Prozedur die erst per Button (siehe Code unten) das Fenster öffnet.
Trage ich nun alle Werte soweit ein (siehe Link oben) und schreibe in die Event Schleife folgendes ein:

Code: Alles auswählen

Case Asc("c")
            Debug "copy"
            WebObject\ExecWB(#OLECMDID_COPY,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
bekomme ich den Fehler zu WebObject:
The following variable doesn't have a 'Structure': Webobject

ja, weil das Webobjekt sich in der Prozedur befindet in Fenster 2 - #MainForm

??? Fragen über Fragen :shock:


Hab ich hinbekommen nun.
Und im nachhinein möchte ich oben nun die aktuelle URL anzeigen lassen.
Ein StringGadget erstellen und die aktuelle URL eintragen lassen, Wie kann ich das angehen?
Edit 2:
Habe den Code erweitert und die Änderungen übernommen. Nun läuft es wie ich es möchte.

Code: Alles auswählen

;
; Windows 7 ( win8 und win 10 ? )
; PureBasic v 5.3
; 
; WINDOWS ONLY
;
; öffnet Rahmenlose Fenster. Fenster 1 mit EditorGadget
; Fenster 2 WebGadget
;
; beide Fenster können nun unabhängig voneinander bewegt
; werden. kopieren von Text im WebGadget und einfügen
; im EditorGadget nun möglich
;
; STRG+C und STRG+V hinzugefügt
; aktuelle URL wird beim Browsen angezeigt
;
; Formatierung des EditorGadget beim einfügen mit STRG+V bleibt nun
; erhalten. Danke an Derren (http://www.purebasic.fr/german)
;
; Ich bin mir nicht 100% sicher ob alles wirklich Bug frei
; läuft. Danke für Verbesserungen. Bis jetzt war kein Absturz
; zu verzeichnen.
;
; Das WebGadget unterstützt HTML 5
;
; Line: 346 --> WebGadget UPDATE auf IE 11
; RegCreateKeyValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", GetFilePart(ProgramFilename()), "11001", #REG_DWORD, ".")
;
Global WebObject.IWebBrowser2

;{ Keyboard Shortcut Enumerations
Enumeration 1
  #OLECMDID_OPEN
  #OLECMDID_NEW
  #OLECMDID_SAVE
  #OLECMDID_SAVEAS
  #OLECMDID_SAVECOPYAS
  #OLECMDID_PRINT
  #OLECMDID_PRINTPREVIEW
  #OLECMDID_PAGESETUP
  #OLECMDID_SPELL
  #OLECMDID_PROPERTIES
  #OLECMDID_CUT
  #OLECMDID_COPY
  #OLECMDID_PASTE
  #OLECMDID_PASTESPECIAL
  #OLECMDID_UNDO
  #OLECMDID_REDO
  #OLECMDID_SELECTALL
  #OLECMDID_CLEARSELECTION
  #OLECMDID_ZOOM
  #OLECMDID_GETZOOMRANGE
  #OLECMDID_UPDATECOMMANDS
  #OLECMDID_REFRESH
  #OLECMDID_STOP
  #OLECMDID_HIDETOOLBARS
  #OLECMDID_SETPROGRESSMAX
  #OLECMDID_SETPROGRESSPOS
  #OLECMDID_SETPROGRESSTEXT
  #OLECMDID_SETTITLE
  #OLECMDID_SETDOWNLOADSTATE
  #OLECMDID_STOPDOWNLOAD
EndEnumeration

Enumeration 0
  #OLECMDEXECOPT_DODEFAULT
  #OLECMDEXECOPT_PROMPTUSER
  #OLECMDEXECOPT_DONTPROMPTUSER
  #OLECMDEXECOPT_SHOWHELP
EndEnumeration
;}
Enumeration
  ;Main Window
    #Window_0
    
  ;PopUp Window aus Prozedur  
    #MainForm

  ; Main Gadgets 
    #Btn_Exit
    #Image_Exit_Normal
    #Image_Exit_Red
    #Editor_Gadget
    #MausArea
    #Font_MausArea
    #Btn_Save
    #Font_Btn_Save
    #Font_Editor_Gadget
    #Btn_OpenBrowserGadget
    
    ;WebGadget
      #WebGadget
      #Btn_CloseWebGadget
      #Font_Btn_CloseWebGadget
      #Btn_Reload
      #Font_Btn_Reload
      #Btn_Nav_Back
      #Font_Btn_Nav_Back
      #Btn_Nav_Frwd
      #Font_Btn_Nav_Frwd
      #Show_Current_Url
      #Font_Current_Url
      #Btn_Start_Browsing
      #Font_Start_Browsing
      #Separater
EndEnumeration

;Included Images
DataSection
  Image_Exit_Normal:
  ; exit_normal.png
  ;{ Size = 328 bytes
  Data.l $474E5089,$0A1A0A0D,$0D000000,$52444849,$22000000,$17000000,$00000208,$3A959601,$0000001D,$59487009,$0E000073,$0E0000C3
  Data.l $6FC701C3,$000064A8,$4449FA00,$9C785441,$FFFFF963,$6012033F,$19B75081,$F9915418,$647970AA,$74582CF5,$06865162,$1DF61450
  Data.l $C0722860,$812C8721,$AC164CCF,$071228A2,$BD9F12FA,$9CEA8864,$50E12E8F,$7E589554,$519B0A3A,$E13BF3AA,$0763C6DE,$76129F1E
  Data.l $2CF41517,$ED344F2B,$4D8AAF9C,$781EA70A,$07A09040,$CF4B200F,$5D1B8740,$2F9624F4,$5A69DF9B,$33A18CBE,$610C4B0A,$00D403D7
  Data.l $3BF3924C,$62CAB0A3,$BCACB3D7,$EEA7BE6D,$4A8CA46D,$11240F58,$5380D560,$A8307E0F,$DE9190F5,$0E86B1C8,$6B708C76,$76F96580
  Data.l $17CF2A89,$E2190B6D,$11D5A3E7,$C1C6B454,$1B7B75D7,$D7310ED0,$20EC122A,$D9601ACD,$7E3C5BBD,$46507CFE,$912B7A04,$60910F14
  Data.l $C3A7300D,$A287130B,$40DAC4F9,$809435AA,$000D65E1,$754D2247,$528F5DE3,$00000000,$444E4549,$826042AE
  Image_Exit_Normal_End:
  ;}
  Image_Exit_Red:
  ; exit_red.png
  ;{ Size = 326 bytes
  Data.l $474E5089,$0A1A0A0D,$0D000000,$52444849,$22000000,$17000000,$00000208,$3A959601,$0000001D,$59487009,$0E000073,$0E0000C3
  Data.l $6FC701C3,$000064A8,$4449F800,$9C785441,$AEC33963,$580480CE,$03371420,$FE6457C3,$B23CB857,$3A2C167A,$034328B1,$92550A28
  Data.l $C5CCEE19,$812C8721,$AC164CCF,$221228A2,$28706F1B,$D1D13C33,$E3789740,$C57C691F,$A33609E3,$39D59FCE,$781D844F,$5DD84A7C
  Data.l $7323D054,$1D7BC6E5,$A4D8AF8D,$0781EA70,$F07A0904,$0CF4B200,$45D1B874,$CA95F18F,$B43B3AB3,$96AE187B,$C594C79C,$01A807AE
  Data.l $EACF2498,$8F6093B4,$67E595CC,$23710FFB,$7AC25465,$AB008920,$F07A9C06,$87AD4183,$8E46F48C,$63B07435,$2C035B84,$476FC5CB
  Data.l $2E5D54BE,$D67750CF,$ACAD157F,$50BED379,$8ED000FC,$481D2F87,$6B3483B0,$F8B76580,$1CB3BADD,$F4088CA0,$1E293196,$601AC122
  Data.l $70D7874E,$DE35FC6F,$9073AF10,$6EC18126,$B735000D,$24470847,$00009783,$45490000,$42AE444E
  Data.b $60,$82
  Image_Exit_Red_End:
  ;}
EndDataSection

;Image Plugins
  UsePNGImageDecoder()
  
Global Url.s="http://store.steampowered.com"
;{
Procedure RegConvertRegKeyToTopKeyAndKeyName(Key.s)
 
  Shared topKey,KeyName.s
 
  temp.s=StringField(Key,1,"\")
  temp=UCase(temp)
  Select temp
    Case "HKEY_CLASSES_ROOT"
      topKey=#HKEY_CLASSES_ROOT
    Case "HKEY_CURRENT_USER"
      topKey=#HKEY_CURRENT_USER
    Case "HKEY_LOCAL_MACHINE"
      topKey=#HKEY_LOCAL_MACHINE
    Case "HKEY_USERS"
      topKey=#HKEY_USERS
    Case "HKEY_CURRENT_CONFIG"
      topKey=#HKEY_CURRENT_CONFIG
  EndSelect
 
  PositionSlash=FindString(Key,"\",1)
  KeyName.s=Right(Key,(Len(Key)-PositionSlash))
 
EndProcedure

ProcedureDLL RegSetValue(Key.s, ValueName.s, Value.s, Type, ComputerName.s) ; Sets a Value
 
  ;Type can be #REG_SZ / #REG_DWORD / #REG_BINARY / #REG_EXPAND_SZ
  ;For REG_BINARY type use Hexa value as String
  ;Returns 1 if successful or 0 if it fails
 
  Shared RegWow64.l,RegEx,topKey,KeyName.s
  RegConvertRegKeyToTopKeyAndKeyName(Key)
 
  If ComputerName = "."
    If RegEx
      GetHandle = RegOpenKeyEx_(topKey,KeyName,0,#KEY_ALL_ACCESS|RegWow64,@hKey)
    Else
      GetHandle = RegOpenKey_(topKey,KeyName,@hKey)
    EndIf
  Else
    lReturnCode = RegConnectRegistry_(ComputerName,topKey,@lhRemoteRegistry)
    If RegEx
      GetHandle = RegOpenKeyEx_(lhRemoteRegistry,KeyName,0,#KEY_ALL_ACCESS|RegWow64,@hKey)
    Else
      GetHandle = RegOpenKey_(lhRemoteRegistry,KeyName,@hKey)
    EndIf
  EndIf
 
  If GetHandle = #ERROR_SUCCESS
    lpcbData = 255
    lpData.s = Space(255)
   
    Select Type
       
      Case #REG_EXPAND_SZ
        GetHandle = RegSetValueEx_(hKey, ValueName, 0, #REG_EXPAND_SZ, @Value, Len(Value) + 1)
       
      Case #REG_SZ
        GetHandle = RegSetValueEx_(hKey, ValueName, 0, #REG_SZ, @Value, Len(Value) + 1)
       
      Case #REG_DWORD
        lValue = Val(Value)
        GetHandle = RegSetValueEx_(hKey, ValueName, 0, #REG_DWORD, @lValue, 4)
       
      Case #REG_BINARY
        LenBuffer=Len(Value)/2
        *RegBuffer=AllocateMemory(LenBuffer)
        For n=0 To LenBuffer-1
          OctetHexa.s=Mid(Value,(n*2)+1,2)
          Octet=Val("$"+OctetHexa)
          PokeB(*RegBuffer+n,Octet)
        Next
        GetHandle= RegSetValueEx_(hKey,ValueName,0,#REG_BINARY,*RegBuffer,LenBuffer)
        FreeMemory(*RegBuffer)
       
    EndSelect
   
    RegCloseKey_(hKey)
    ergebnis = 1
    ProcedureReturn ergebnis
  Else
    RegCloseKey_(hKey)
    ergebnis = 0
    ProcedureReturn ergebnis
  EndIf
EndProcedure

ProcedureDLL RegCreateKey(Key.s, ComputerName.s)
 
  ;It create subkey if KeyPath don't exist
  ;Returns 1 if successful or 0 if it fails
 
  Shared RegWow64.l,RegEx,topKey,KeyName.s
 
  RegConvertRegKeyToTopKeyAndKeyName(Key) 
  lpSecurityAttributes.SECURITY_ATTRIBUTEs
 
  If ComputerName = "."
    If RegEx
      GetHandle = RegCreateKeyEx_(topKey,KeyName,0,0,#REG_OPTION_NON_VOLATILE,#KEY_ALL_ACCESS|RegWow64,@lpSecurityAttributes,@hNewKey,@GetHandle)
    Else
      GetHandle = RegCreateKey_(topKey,KeyName,@hNewKey)
    EndIf
  Else
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry)
    If RegEx
      GetHandle = RegCreateKeyEx_(lhRemoteRegistry,KeyName,0,0,#REG_OPTION_NON_VOLATILE,#KEY_ALL_ACCESS|RegWow64,@lpSecurityAttributes,@hNewKey,@GetHandle)
    Else
      GetHandle = RegCreateKey_(lhRemoteRegistry,KeyName,@hNewKey)
    EndIf
  EndIf
 
  If GetHandle = #ERROR_SUCCESS
    GetHandle = RegCloseKey_(hNewKey)
    CreateKey = #True
  Else
    CreateKey = #False
  EndIf
  ProcedureReturn CreateKey
EndProcedure

ProcedureDLL RegCreateKeyValue(Key.s,ValueName.s,Value.s,Type,ComputerName.s) ; Creates a Key and a Value in a Single Command
 
  ;Type can be #REG_SZ or #REG_DWORD
  ;Returns 1 if successful or 0 if it fails
 
  RegCreateKey(Key,ComputerName)
  ProcedureReturn RegSetValue(Key,ValueName,Value,Type,ComputerName)
EndProcedure
;- Read current URL
Procedure NavigationCallback(Gadget, NewUrl.s)
   
  If NewUrl <> Url
    SetGadgetText(#Show_Current_Url, NewUrl)
    Url = NewUrl 
  EndIf
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure MainFormShow()
  OpenWindow(#MainForm, 0, 0, 1024, 768,"WebGadget HTML5 compatible",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
  SetWindowColor(#MainForm, RGB(48, 103, 140))
  
  StringGadget(#Show_Current_Url, 130, 5, 500, 20, Url, #PB_String_BorderLess)
    SetGadgetColor(#Show_Current_Url, #PB_Gadget_FrontColor, RGB(243, 225, 208));TEXT FARBE
    SetGadgetColor(#Show_Current_Url, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TEXT Hintergrund FARBE
    SetGadgetFont(#Show_Current_Url, LoadFont(#Font_Current_Url, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
    
   WebGadget(#WebGadget, 0, 30, 1024, 768, url)   

  ;- Keyboard Shortcuts hinzufügen
     WebObject.IWebBrowser2 = GetWindowLongPtr_(GadgetID(#WebGadget),#GWLP_USERDATA)
     AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_X,Asc("x"))
     AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_C,Asc("c"))
     AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_V,Asc("v"))
     AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_A,Asc("a"))
     AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Z,Asc("z"))
     AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Y,Asc("y"))
     AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Shift|#PB_Shortcut_Z,Asc("y"))
     AddKeyboardShortcut(#MainForm, #PB_Shortcut_Return,Asc("Return"))
     SetGadgetAttribute(#WebGadget, #PB_Web_NavigationCallback, @NavigationCallback())
     
  ;- Btn Back
     TextGadget(#Btn_Nav_Back, 0, 4, 30, 20, "<",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
      SetGadgetFont(#Btn_Nav_Back, LoadFont(#Font_Btn_Nav_Back, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
      SetGadgetColor(#Btn_Nav_Back, #PB_Gadget_BackColor, RGB(48, 103, 140))  ;TEXT Hintergrund FARBE
      SetGadgetColor(#Btn_Nav_Back, #PB_Gadget_FrontColor, RGB(0, 0, 0))  ;TEXT FARBE
      
  ;- Separator
     TextGadget(#Separater, 31, 8, 1, 14, "")
      SetGadgetColor(#Separater, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TEXT Hintergrund FARBE  
      
  ;- Btn Forward
     TextGadget(#Btn_Nav_Frwd, 32, 4, 30, 20, ">",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
      SetGadgetFont(#Btn_Nav_Frwd, LoadFont(#Font_Btn_Nav_Frwd, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
      SetGadgetColor(#Btn_Nav_Frwd, #PB_Gadget_BackColor, RGB(48, 103, 140))  ;TEXT Hintergrund FARBE
      SetGadgetColor(#Btn_Nav_Frwd, #PB_Gadget_FrontColor, RGB(0, 0, 0))  ;TEXT FARBE
     
  ;- Btn Reload
     TextGadget(#Btn_Reload, 60, 4, 60, 20, "refresh",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
      SetGadgetFont(#Btn_Reload, LoadFont(#Font_Btn_Reload, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
      SetGadgetColor(#Btn_Reload, #PB_Gadget_BackColor, RGB(48, 103, 140))  ;TEXT Hintergrund FARBE
      SetGadgetColor(#Btn_Reload, #PB_Gadget_FrontColor, RGB(0, 0, 0))  ;TEXT FARBE
      
  ;- Btn Start Browsing 
     TextGadget(#Btn_Start_Browsing, 635, 4, 20, 20, ">>",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
      SetGadgetFont(#Btn_Start_Browsing, LoadFont(#Font_Start_Browsing, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
      SetGadgetColor(#Btn_Start_Browsing, #PB_Gadget_BackColor, RGB(48, 103, 140))  ;TEXT Hintergrund FARBE
      SetGadgetColor(#Btn_Start_Browsing, #PB_Gadget_FrontColor, RGB(0, 0, 0))  ;TEXT FARBE
      
        
  ;- Btn Close WEbGadget Window
     TextGadget(#Btn_CloseWebGadget, 948, 4, 60, 20, "close",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
      SetGadgetFont(#Btn_CloseWebGadget, LoadFont(#Font_Btn_CloseWebGadget, "Lucida", 10, #PB_Font_HighQuality))  ; Button Font
      SetGadgetColor(#Btn_CloseWebGadget, #PB_Gadget_BackColor, RGB(48, 103, 140))  ;TEXT Hintergrund FARBE
      SetGadgetColor(#Btn_CloseWebGadget, #PB_Gadget_FrontColor, RGB(0, 0, 0))  ;TEXT FARBE
  
       WebObject\put_Silent(#True)
       WebObject\put_Left(#Editor_Gadget)
 
EndProcedure

Procedure Start()
  RegCreateKeyValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", GetFilePart(ProgramFilename()), "11001", #REG_DWORD, ".")
  MainFormShow() 
EndProcedure
;}

; Kontextmenü für Editorgadget
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Protected result = #PB_ProcessPureBasicEvents
  Select uMsg
    Case #WM_CONTEXTMENU
      If GadgetID(#Editor_Gadget) = wParam
        DisplayPopupMenu(#Editor_Gadget, WindowID(#Window_0))
      EndIf
       
    ;- Beide Fenster unabhängig voneinander mit Maus verschieben   
       Case #WM_LBUTTONDOWN
           SendMessage_(hWnd, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
  EndSelect  
  ProcedureReturn result
EndProcedure

OpenWindow(#Window_0, 298, 150, 710, 535, "",#PB_Window_BorderLess);| #PB_Window_ScreenCentered
SetWindowColor(#Window_0, RGB(219, 219, 219))

; EXIT BUTTON NORMAL AND HOVER
  Define Exit_Normal = CatchImage(#Image_Exit_Normal, ?Image_Exit_Normal, ?Image_Exit_Normal_End - ?Image_Exit_Normal)
  Define Exit_Red = CatchImage(#Image_Exit_Red, ?Image_Exit_Red, ?Image_Exit_Red_End - ?Image_Exit_Red)
    br = ImageWidth(#Image_Exit_Normal)
    hh = ImageHeight(#Image_Exit_Red)
    ;  POSITION WEHRE TO PLACE ON SCREEN  
       CanvasGadget(#Btn_Exit, 676, -2, br, hh) 
       SetGadgetAttribute(#Btn_Exit, #PB_Canvas_Image, ImageID(#Image_Exit_Normal))
    
; Button WebGadget
  ButtonGadget(#Btn_OpenBrowserGadget, 300, 50, 100, 50, "open Browser",#BS_FLAT)

; Button Speichern
  TextGadget(#Btn_Save, 300, 440, 100, 50, "Text speichern",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)  
    SetGadgetFont(#Btn_Save, LoadFont(#Font_Btn_Save, "Lucida", 8, #PB_Font_HighQuality)) ; Button Font
    SetGadgetColor(#Btn_Save, #PB_Gadget_BackColor, RGB(178, 183, 184))  ;TEXT Hintergrund FARBE
    SetGadgetColor(#Btn_Save, #PB_Gadget_FrontColor, RGB(0, 0, 0));TEXT FARBE
    
; Editor Gadget    
  EditorGadget(#Editor_Gadget, 43, 150, 623, 250, #PB_Editor_WordWrap);,#PB_Editor_WordWrap
    SetGadgetText(#Editor_Gadget, "kopierten Website Text hier einfügen")
    SetGadgetFont(#Editor_Gadget, LoadFont(#Font_Editor_Gadget, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
    SetGadgetColor(#Editor_Gadget, #PB_Gadget_FrontColor, RGB(193, 0, 85));TEXT FARBE
  ; Entferne Rahmen um EditorGadget (Eingabefeld)
      SetWindowTheme_(GadgetID(#Editor_Gadget), @"", @"")
      SetWindowLongPtr_(GadgetID(#Editor_Gadget), #GWL_EXSTYLE, 0)
      SetWindowPos_(GadgetID(#Editor_Gadget), 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_FRAMECHANGED)
  
; Maus Area
  TextGadget(#MausArea, 0, 0, 676, 21, "   Haupt Fenster",#SS_CENTERIMAGE) ;x;y;länge;höhe,$340 = Value for Text Set vertically align
    SetGadgetColor(#MausArea, #PB_Gadget_FrontColor, RGB(246, 246, 246)) ;TEXT FARBE
    SetGadgetColor(#MausArea, #PB_Gadget_BackColor, RGB(48, 103, 140))  ;TEXT Hintergrund FARBE
    SetGadgetFont(#MausArea, LoadFont(#Font_MausArea, "Arial", 10, #PB_Font_HighQuality)) ; Button Font  
    
;- KontextMenü für EditorGadget deklarieren
      If CreatePopupMenu(#Editor_Gadget)
        MenuItem(1, "einfügen")
      EndIf
      SetWindowCallback(@WinCallback()) 
      
 
Repeat
  Event = WaitWindowEvent()
  EventGadget = EventGadget()
  EventType = EventType()

   ; Kontextmenü auf Editorgadget freischalten
      Select event
          Case #PB_Event_Menu
            Select EventMenu()
              Case 1
                SetGadgetText(#Editor_Gadget,GetClipboardText())
            EndSelect
      EndSelect
      
    ;Inhalt aus EditorGadget in Datei speichern  
      If Event=#PB_Event_Gadget
        If EventGadget()= #Btn_Save
          ; Eingabe auslesen
            Text$= GetGadgetText(#Editor_Gadget)
            
          ; Speicherdialog aufrufen  
            File$=SaveFileRequester("Text speichern", "C:\info.txt ", "TXT FILE(*.txt)|*.txt", 0)   
            
          ; schreibe Datei  
            If CreateFile(1, File$)
               WriteStringN(1,Text$, #PB_Ascii)
               CloseFile(1)
            EndIf  
        EndIf    
     EndIf
     
;- Button Funktionen    
  If Event = #PB_Event_Gadget
    Select EventGadget()
          
      ;- BTN WebGadget
          Case #Btn_OpenBrowserGadget
          Start()

      ;- BTN CloseWebGadget     
          Case #Btn_CloseWebGadget
            UpdateWindow_(WindowID(#Window_0))
            CloseWindow(#MainForm)
            
      ;- Web Navigation - Back - Forward - Reload 
          Case #Btn_Nav_Back
            SetGadgetState(#WebGadget, #PB_Web_Back)
          Case #Btn_Nav_Frwd
            SetGadgetState(#WebGadget, #PB_Web_Forward)
          Case #Btn_Reload
            SetGadgetState(#WebGadget, #PB_Web_Refresh)
          Case #Btn_Start_Browsing
            SetGadgetText(#Webgadget, GetGadgetText(#Show_Current_Url))
      ;- FUNKTION EXIT BUTTON    
          Case #Btn_Exit                 
            Select eventtype
              Case #PB_EventType_MouseEnter
                SetGadgetAttribute(#Btn_Exit, #PB_Canvas_Image, ImageID(#Image_Exit_Red))
                 Case #PB_EventType_MouseLeave
                   SetGadgetAttribute(#Btn_Exit, #PB_Canvas_Image, ImageID(#Image_Exit_Normal))
                   ;PROGRAM EXIT, IF CLICK ON EXIT BUTTON
                      Case #PB_EventType_LeftButtonDown
                      ;CLOSE ALL  
                        End
            EndSelect
        EndSelect
  EndIf

 ; KeyboardShortcuts
    Select Event
        
 ;-Begin Workaround für correctes Einfügen durch STRG+V ins EditorGadget
    ;dickes Danke an Derren       
     Case #PB_Event_Gadget
        If EventGadget()=#Editor_Gadget And EventType()=#PB_EventType_Focus
           If GetClipboardImage(#PB_Any)=0
             SetClipboardText(GetClipboardText())
          EndIf
       EndIf
;-End Workaround    
       
      Case #PB_Event_Menu
        Select EventMenu()
          Case 'x'
            WebObject\ExecWB(#OLECMDID_CUT,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
            
          Case 'c'
            WebObject\ExecWB(#OLECMDID_COPY,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
            
          Case 'v'
           SetGadgetText(#Editor_Gadget,GetClipboardText())
            
          Case 'a'
            WebObject\ExecWB(#OLECMDID_SELECTALL,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
            
          Case 'z'
            WebObject\ExecWB(#OLECMDID_UNDO,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
            
          Case 'y'
            WebObject\ExecWB(#OLECMDID_REDO,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
      EndSelect
    EndSelect  
 
  Until IsWindow(#Window_0)=0 And IsWindow(Fenster_ID)=0

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 00:23
von ts-soft
Mit EnableExplicit wäre das nicht passiert :wink:
Am anfang des Codes, ausserhalb jeder Procedure einfügen:

Code: Alles auswählen

Global WebObject.IWebBrowser2
Dann mal alle WebObject.IWebBrowser2=GetWindowLong_(GadgetID(#WebGadget),#GWL_USERDATA)
austauschen gegen:

Code: Alles auswählen

WebObject.IWebBrowser2=GetWindowLongPtr_(GadgetID(#WebGadget),#GWL_USERDATA)
bzw. einmal genügt die Zuweisung des WebGadgets!
und dies:

Code: Alles auswählen

  myBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA)
  myBrowser\put_Silent(#True)
  myBrowser\put_Left(0)
Austauschen gegen diese 2 Zeilen:

Code: Alles auswählen

WebObject\put_Silent(#True)
WebObject\put_Left(0)
Wenn man schon Code kopiert, sollte man wenigstens versuchen ihn zu verstehen :wink:

Ungetested, da ich gerade Linux verwende.

Gruß
Thomas

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 02:20
von udg
Danke Dir, funktioniert jetzt sehr gut.

Was mich noch aufhält:
wenn ich Text aus einer Webseite mit STRG+C und STRG+V in das EditorGadget einfüge wird die Schrift immer "schwarz" und im Format der Webseite eingefügt.
Tue ich es mit rechtsklick Maus über das Kontextmenü, passiert dies nicht und Rote Schrift bleibt rote Schrift.

Wie kann ich denn dies nun wieder hinbiegen?

Ich gebe doch schon an, welche Schrift und Farbe im EditorGadget verwendet werden soll . Wo muss man dies zusätzlich festlegen?


Wenn man schon Code kopiert, sollte man wenigstens versuchen ihn zu verstehen :wink:
wie soll ich sonst lernen und versuchen zu verstehen?

PS:
die URL wird jetzt richtig angezeigt im Browserfenster.

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 11:41
von edel
ts-soft hat geschrieben:

Code: Alles auswählen

WebObject.IWebBrowser2=GetWindowLongPtr_(GadgetID(#WebGadget),#GWL_USERDATA)
Wenn dann schon so :

Code: Alles auswählen

WebObject.IWebBrowser2 = GetWindowLongPtr_(GadgetID(#WebGadget),#GWLP_USERDATA)
:lol:

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 11:58
von NicTheQuick
Fred sollte 'GetWindowPtr_' abschaffen und nur noch 'GetWindowLongPtr_' zulassen. Und bei den Konstanten genauso. Dann kann nicht mehr so viel schief gehen.

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 12:37
von udg
Aha danke, ich kenne leider nicht den Unterschied, bin am lernen und funktioniert hat es auch.
Habe es geändert.

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 12:41
von NeoChris
@ NicTheQuick
GetWindowPtr_ abschaffen? Du meinst GetWindowLong_ :)
Aber abschaffen keine gute Idee sonst funktionieren viele Codes wieder nicht. Lieber Compiler Warnung anzeigen aber auch das ist sinnlos weil das nicht die aufgabe von pb ist sondern Windows.

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 12:45
von NicTheQuick
Na soweit ich verstanden habe, geht 'GetWindowLongPtr_()' unter 32- und 64-Bit Windows und 'GetWindowPtr_()' geht nur unter 32-Bit Windows.

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 12:49
von NeoChris
Du hast mich falsch verstanden ;)
Es gibt kein GetWindowPtr_ ! Lies mal meinen Beitrag nochmal durch. :)

Re: WebGadget strg+c und strg+v hinzufügen

Verfasst: 16.12.2015 12:52
von NicTheQuick
Natürlich. Danke.