Seite 1 von 1

WebGadget und Strg C V Delete Tab

Verfasst: 20.09.2009 09:53
von hjbremer
Das Strg C und Strg V im WebGadget nicht geht ist echt nervig.

Der einzige Code der dieses Manko behebt, den habe ich im englischen Forum gefunden und der ist von :praise: Sparkie. :praise:

Allerdings gehöre ich zu denen, die diese COM Geschichten in diesem Leben nicht mehr verstehen werden.
Also frag mich bitte keiner WIE, Warum, Weshalb.

Originalcode etwas angepasst.

Code: Alles auswählen

Procedure WebGadgetTasten(pbnr)

Select EventwParam()
  Case #VK_C, #VK_V, #VK_DELETE, #VK_TAB  
     CoInitialize_(0) 
     CoCreateInstance_(?CLSID_IOleInPlaceActiveObject, 0, 1, ?IID_IOleInPlaceActiveObject,@OleObject.IOleInPlaceActiveObject) 
     WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(pbnr), #GWL_USERDATA) 
     WebObject\QueryInterface(?IID_IOleInPlaceActiveObject, @OleObject) 
     web.MSG
     web\message = #WM_KEYDOWN 
     web\wParam  = EventwParam() 
     web\lParam  = EventlParam() 
     OleObject\TranslateAccelerator(@web) 
     OleObject\Release() 
     CoUninitialize_() 
EndSelect

DataSection 
;{00000117-0000-0000-C000-000000000046} 
IID_IOleInPlaceActiveObject: 
Data.l $00000117 
Data.w $0000, $0000 
Data.b $C0, $00, $00, $00, $00, $00, $00, $46 

;{00000320-0000-0000-C000-000000000046} 
CLSID_IOleInPlaceActiveObject: 
Data.l $00000320 
Data.w $0000, $0000 
Data.b $C0, $00, $00, $00, $00, $00, $00, $46 
EndDataSection

EndProcedure

; --------------------------------------------------

#webgadnr = 1

If OpenWindow(0, 0, 0, 700, 500, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar)  
  WebGadget(#webgadnr, 10, 10, 680, 480, "http://www.google.com/") 

  Repeat 
    event = WaitWindowEvent() 
    If event = #WM_KEYDOWN 
     If EventGadget() = #webgadnr 
        WebGadgetTasten(#webgadnr)
     EndIf 
    EndIf 
  Until event = #PB_Event_CloseWindow 

EndIf 

End 

Nur noch eine kleine Bemerkung zur Suchfunktion im neuen Forum: >_< >_< >_<

Edit: Wenn man das Ganze in ein Programm einbaut, kann es sein,
das die Abfrage "If EventGadget() = #webgadnr" wegfallen muß.
Return scheint aber nicht zu funktionieren, falls Return als Shortcut definiert wurde

Re: WebGadget und Strg C V Delete Tab

Verfasst: 22.09.2009 14:46
von .:M:.
Interessant, funktioniert sehr gut.
Es gibt eine einfachere und OS-unabhängige Möglichkeit, allerdings 'hackt' die manchmal, da GetGadgetItemText(#WebGagdet,#PB_Web_SelectedText)
nicht alles korrekt auslesen kann. Ich glaube es liegt am Javascript oder sonstigen Code im HTML - Ich habe es aber nicht genauer getestet.
Für reinen Text oder einfache Links geht es aber.
(Man sollte es so natürlich nur verwenden wenn man eigenen Code ins Webgadget parst und sicherstellen kann,
daß der selektierte Text auch ausgelesen wird.
Z.B. wenn man das Webgadget als UserInterface nutzt, oder zur Informationsdarstellung.)

Code: Alles auswählen

OpenWindow(0, 0, 0, 806, 606, ".:M:.", #PB_Window_SystemMenu)
WebGadget(1, 3, 3, 800, 600, "www.google.de")
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_C, 007) 
Repeat 
   Select WaitWindowEvent()
      Case #PB_Event_Menu
      Select EventMenu()
         Case 007 : ;*
         ClearClipboard() 
         ClipBoard$=GetGadgetItemText(1,#PB_Web_SelectedText)
         SetClipboardText(ClipBoard$)
      EndSelect
   EndSelect
Until WaitWindowEvent() = #PB_Event_CloseWindow
* Ich muß ein Scherzkeks sein ;-)

Re: WebGadget und Strg C V Delete Tab

Verfasst: 26.06.2010 14:57
von Nino
hjbremer hat geschrieben:Das Strg C und Strg V im WebGadget nicht geht ist echt nervig.

Der einzige Code der dieses Manko behebt, den habe ich im englischen Forum gefunden und der ist von :praise: Sparkie. :praise:

Allerdings gehöre ich zu denen, die diese COM Geschichten in diesem Leben nicht mehr verstehen werden.
Also frag mich bitte keiner WIE, Warum, Weshalb.

Originalcode etwas angepasst.
Ein Link zum Originalcode wäre guter Stil dessen Autor gegenüber -- und man könnte dann bei Bedarf Sparkie auch direkt dazu fragen.

Grüße, Nino

Re: WebGadget und Strg C V Delete Tab

Verfasst: 26.06.2010 17:38
von Vera
Nino hat geschrieben:Ein Link zum Originalcode wäre guter Stil
Ein Nachreichen statt Bemängeln, wäre ein guter Teamgeist gegenüber dem Forum und ein Dankeschön an hjbremer, der uns immer wieder an seinen Ergebnissen und Arbeiten teilhaben läßt.

Danke @hjbremer :)

Sparkie's Code ist hier: PB4.10b2 Webgadget, Delete/Ctrl-V etc ignored? (2007)
im Bereich Bug-Reports, wo eh' nicht weiterdiskutiert wird

und eine ähnlich Problemlösung von Sparkie gibt's nochmal hier: Catching the mouse-up on a web gadget? (2004)

Grüße ~ Vera

Re: WebGadget und Strg C V Delete Tab

Verfasst: 26.06.2010 22:15
von Nino
Vera hat geschrieben:
Nino hat geschrieben:Ein Link zum Originalcode wäre guter Stil
Nachreichen statt Bemängeln,
Du bist ja putzig. :lol: