go-tg-screenshot-bot
327 строк · 9.3 Кб
1// Copyright 2010 The win Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// +build windows
6
7package win
8
9import (
10"syscall"
11"unsafe"
12)
13
14const (
15DOCHOSTUIDBLCLK_DEFAULT = 0
16DOCHOSTUIDBLCLK_SHOWPROPERTIES = 1
17DOCHOSTUIDBLCLK_SHOWCODE = 2
18)
19
20const (
21DOCHOSTUIFLAG_DIALOG = 0x1
22DOCHOSTUIFLAG_DISABLE_HELP_MENU = 0x2
23DOCHOSTUIFLAG_NO3DBORDER = 0x4
24DOCHOSTUIFLAG_SCROLL_NO = 0x8
25DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 0x10
26DOCHOSTUIFLAG_OPENNEWWIN = 0x20
27DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 0x40
28DOCHOSTUIFLAG_FLAT_SCROLLBAR = 0x80
29DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 0x100
30DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 0x200
31DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY = 0x400
32DOCHOSTUIFLAG_CODEPAGELINKEDFONTS = 0x800
33DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 = 0x1000
34DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 = 0x2000
35DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = 0x4000
36DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION = 0x10000
37DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION = 0x20000
38DOCHOSTUIFLAG_THEME = 0x40000
39DOCHOSTUIFLAG_NOTHEME = 0x80000
40DOCHOSTUIFLAG_NOPICS = 0x100000
41DOCHOSTUIFLAG_NO3DOUTERBORDER = 0x200000
42DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP = 0x400000
43DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK = 0x800000
44DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL = 0x1000000
45)
46
47// BrowserNavConstants
48const (
49NavOpenInNewWindow = 0x1
50NavNoHistory = 0x2
51NavNoReadFromCache = 0x4
52NavNoWriteToCache = 0x8
53NavAllowAutosearch = 0x10
54NavBrowserBar = 0x20
55NavHyperlink = 0x40
56NavEnforceRestricted = 0x80
57NavNewWindowsManaged = 0x0100
58NavUntrustedForDownload = 0x0200
59NavTrustedForActiveX = 0x0400
60NavOpenInNewTab = 0x0800
61NavOpenInBackgroundTab = 0x1000
62NavKeepWordWheelText = 0x2000
63NavVirtualTab = 0x4000
64NavBlockRedirectsXDomain = 0x8000
65NavOpenNewForegroundTab = 0x10000
66)
67
68var (
69CLSID_WebBrowser = CLSID{0x8856F961, 0x340A, 0x11D0, [8]byte{0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2}}
70DIID_DWebBrowserEvents2 = IID{0x34A715A0, 0x6587, 0x11D0, [8]byte{0x92, 0x4A, 0x00, 0x20, 0xAF, 0xC7, 0xAC, 0x4D}}
71IID_IWebBrowser2 = IID{0xD30C1661, 0xCDAF, 0x11D0, [8]byte{0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E}}
72IID_IDocHostUIHandler = IID{0xBD3F23C0, 0xD43E, 0x11CF, [8]byte{0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A}}
73IID_IOleInPlaceActiveObject = IID{0x00000117, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
74)
75
76type DWebBrowserEvents2Vtbl struct {
77QueryInterface uintptr
78AddRef uintptr
79Release uintptr
80GetTypeInfoCount uintptr
81GetTypeInfo uintptr
82GetIDsOfNames uintptr
83Invoke uintptr
84}
85
86type DWebBrowserEvents2 struct {
87LpVtbl *DWebBrowserEvents2Vtbl
88}
89
90type IWebBrowser2Vtbl struct {
91QueryInterface uintptr
92AddRef uintptr
93Release uintptr
94GetTypeInfoCount uintptr
95GetTypeInfo uintptr
96GetIDsOfNames uintptr
97Invoke uintptr
98GoBack uintptr
99GoForward uintptr
100GoHome uintptr
101GoSearch uintptr
102Navigate uintptr
103Refresh uintptr
104Refresh2 uintptr
105Stop uintptr
106Get_Application uintptr
107Get_Parent uintptr
108Get_Container uintptr
109Get_Document uintptr
110Get_TopLevelContainer uintptr
111Get_Type uintptr
112Get_Left uintptr
113Put_Left uintptr
114Get_Top uintptr
115Put_Top uintptr
116Get_Width uintptr
117Put_Width uintptr
118Get_Height uintptr
119Put_Height uintptr
120Get_LocationName uintptr
121Get_LocationURL uintptr
122Get_Busy uintptr
123Quit uintptr
124ClientToWindow uintptr
125PutProperty uintptr
126GetProperty uintptr
127Get_Name uintptr
128Get_HWND uintptr
129Get_FullName uintptr
130Get_Path uintptr
131Get_Visible uintptr
132Put_Visible uintptr
133Get_StatusBar uintptr
134Put_StatusBar uintptr
135Get_StatusText uintptr
136Put_StatusText uintptr
137Get_ToolBar uintptr
138Put_ToolBar uintptr
139Get_MenuBar uintptr
140Put_MenuBar uintptr
141Get_FullScreen uintptr
142Put_FullScreen uintptr
143Navigate2 uintptr
144QueryStatusWB uintptr
145ExecWB uintptr
146ShowBrowserBar uintptr
147Get_ReadyState uintptr
148Get_Offline uintptr
149Put_Offline uintptr
150Get_Silent uintptr
151Put_Silent uintptr
152Get_RegisterAsBrowser uintptr
153Put_RegisterAsBrowser uintptr
154Get_RegisterAsDropTarget uintptr
155Put_RegisterAsDropTarget uintptr
156Get_TheaterMode uintptr
157Put_TheaterMode uintptr
158Get_AddressBar uintptr
159Put_AddressBar uintptr
160Get_Resizable uintptr
161Put_Resizable uintptr
162}
163
164type IWebBrowser2 struct {
165LpVtbl *IWebBrowser2Vtbl
166}
167
168func (wb2 *IWebBrowser2) QueryInterface(riid REFIID, ppvObject *unsafe.Pointer) HRESULT {
169ret, _, _ := syscall.Syscall(wb2.LpVtbl.QueryInterface, 3,
170uintptr(unsafe.Pointer(wb2)),
171uintptr(unsafe.Pointer(riid)),
172uintptr(unsafe.Pointer(ppvObject)))
173
174return HRESULT(ret)
175}
176
177func (wb2 *IWebBrowser2) Release() HRESULT {
178ret, _, _ := syscall.Syscall(wb2.LpVtbl.Release, 1,
179uintptr(unsafe.Pointer(wb2)),
1800,
1810)
182
183return HRESULT(ret)
184}
185
186func (wb2 *IWebBrowser2) Refresh() HRESULT {
187ret, _, _ := syscall.Syscall(wb2.LpVtbl.Refresh, 1,
188uintptr(unsafe.Pointer(wb2)),
1890,
1900)
191
192return HRESULT(ret)
193}
194
195func (wb2 *IWebBrowser2) Put_Left(Left int32) HRESULT {
196ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Left, 2,
197uintptr(unsafe.Pointer(wb2)),
198uintptr(Left),
1990)
200
201return HRESULT(ret)
202}
203
204func (wb2 *IWebBrowser2) Put_Top(Top int32) HRESULT {
205ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Top, 2,
206uintptr(unsafe.Pointer(wb2)),
207uintptr(Top),
2080)
209
210return HRESULT(ret)
211}
212
213func (wb2 *IWebBrowser2) Put_Width(Width int32) HRESULT {
214ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Width, 2,
215uintptr(unsafe.Pointer(wb2)),
216uintptr(Width),
2170)
218
219return HRESULT(ret)
220}
221
222func (wb2 *IWebBrowser2) Put_Height(Height int32) HRESULT {
223ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Height, 2,
224uintptr(unsafe.Pointer(wb2)),
225uintptr(Height),
2260)
227
228return HRESULT(ret)
229}
230
231func (wb2 *IWebBrowser2) Get_LocationURL(pbstrLocationURL **uint16 /*BSTR*/) HRESULT {
232ret, _, _ := syscall.Syscall(wb2.LpVtbl.Get_LocationURL, 2,
233uintptr(unsafe.Pointer(wb2)),
234uintptr(unsafe.Pointer(pbstrLocationURL)),
2350)
236
237return HRESULT(ret)
238}
239
240func (wb2 *IWebBrowser2) Navigate2(URL *VAR_BSTR, Flags *VAR_I4, TargetFrameName *VAR_BSTR, PostData unsafe.Pointer, Headers *VAR_BSTR) HRESULT {
241ret, _, _ := syscall.Syscall6(wb2.LpVtbl.Navigate2, 6,
242uintptr(unsafe.Pointer(wb2)),
243uintptr(unsafe.Pointer(URL)),
244uintptr(unsafe.Pointer(Flags)),
245uintptr(unsafe.Pointer(TargetFrameName)),
246uintptr(PostData),
247uintptr(unsafe.Pointer(Headers)))
248
249return HRESULT(ret)
250}
251
252type IDocHostUIHandlerVtbl struct {
253QueryInterface uintptr
254AddRef uintptr
255Release uintptr
256ShowContextMenu uintptr
257GetHostInfo uintptr
258ShowUI uintptr
259HideUI uintptr
260UpdateUI uintptr
261EnableModeless uintptr
262OnDocWindowActivate uintptr
263OnFrameWindowActivate uintptr
264ResizeBorder uintptr
265TranslateAccelerator uintptr
266GetOptionKeyPath uintptr
267GetDropTarget uintptr
268GetExternal uintptr
269TranslateUrl uintptr
270FilterDataObject uintptr
271}
272
273type IDocHostUIHandler struct {
274LpVtbl *IDocHostUIHandlerVtbl
275}
276
277type DOCHOSTUIINFO struct {
278CbSize uint32
279DwFlags uint32
280DwDoubleClick uint32
281PchHostCss *uint16
282PchHostNS *uint16
283}
284
285type IOleInPlaceActiveObjectVtbl struct {
286QueryInterface uintptr
287AddRef uintptr
288Release uintptr
289GetWindow uintptr
290ContextSensitiveHelp uintptr
291TranslateAccelerator uintptr
292OnFrameWindowActivate uintptr
293OnDocWindowActivate uintptr
294ResizeBorder uintptr
295EnableModeless uintptr
296}
297
298type IOleInPlaceActiveObject struct {
299LpVtbl *IOleInPlaceActiveObjectVtbl
300}
301
302func (activeObj *IOleInPlaceActiveObject) Release() HRESULT {
303ret, _, _ := syscall.Syscall(activeObj.LpVtbl.Release, 1,
304uintptr(unsafe.Pointer(activeObj)),
3050,
3060)
307
308return HRESULT(ret)
309}
310
311func (activeObj *IOleInPlaceActiveObject) GetWindow(hWndPtr *HWND) HRESULT {
312ret, _, _ := syscall.Syscall(activeObj.LpVtbl.GetWindow, 2,
313uintptr(unsafe.Pointer(activeObj)),
314uintptr(unsafe.Pointer(hWndPtr)),
3150)
316
317return HRESULT(ret)
318}
319
320func (activeObj *IOleInPlaceActiveObject) TranslateAccelerator(msg *MSG) HRESULT {
321ret, _, _ := syscall.Syscall(activeObj.LpVtbl.TranslateAccelerator, 2,
322uintptr(unsafe.Pointer(activeObj)),
323uintptr(unsafe.Pointer(msg)),
3240)
325
326return HRESULT(ret)
327}
328