├── LICENCE ├── README.md ├── alltests.bat ├── commctrl ├── commctrl.go └── commctrl_test.go ├── dde ├── dde.go ├── dde_test.go └── ddeml.go ├── lzexpand ├── lzexpand.go └── lzexpand_test.go ├── mmsystem ├── mmsystem.go └── mmsystem_test.go ├── nb30 ├── nb30.go └── nb30_test.go ├── ole2 ├── objbase.go ├── ole2.go ├── ole2_test.go └── oleauto.go ├── returnError ├── commctrl │ ├── commctrl.go │ └── commctrl_test.go ├── dde │ ├── dde.go │ ├── dde_test.go │ └── ddeml.go ├── lzexpand │ ├── lzexpand.go │ └── lzexpand_test.go ├── mmsystem │ ├── mmsystem.go │ └── mmsystem_test.go ├── nb30 │ ├── nb30.go │ └── nb30_test.go ├── ole2 │ ├── objbase.go │ ├── ole2.go │ ├── ole2_test.go │ └── oleauto.go ├── shellapi │ ├── shellapi.go │ └── shellapi_test.go ├── winbase │ ├── winbase.go │ └── winbase_test.go ├── wincon │ ├── wincom_test.go │ └── wincon.go ├── windows.go ├── windows_test.go ├── wingdi │ ├── wingdi.go │ └── wingdi_test.go ├── winnetwk │ ├── winnetwk.go │ └── winnetwk_test.go ├── winnls │ ├── winnls.go │ └── winnls_test.go ├── winreg │ ├── winreg.go │ └── winreg_test.go ├── winsock │ ├── winsock.go │ └── winsock_test.go ├── winsock2 │ ├── winsock2.go │ └── winsock2_test.go ├── winsvc │ ├── winsvc.go │ └── winsvc_test.go └── winuser │ ├── winuser.go │ └── winuser_test.go ├── shellapi ├── shellapi.go └── shellapi_test.go ├── types ├── types.go └── types_test.go ├── winbase ├── winbase.go └── winbase_test.go ├── wincon ├── wincom_test.go └── wincon.go ├── windows.go ├── windows_test.go ├── wingdi ├── wingdi.go └── wingdi_test.go ├── winnetwk ├── winnetwk.go └── winnetwk_test.go ├── winnls ├── winnls.go └── winnls_test.go ├── winreg ├── winreg.go └── winreg_test.go ├── winsock ├── winsock.go └── winsock_test.go ├── winsock2 ├── winsock2.go └── winsock2_test.go ├── winsvc ├── winsvc.go └── winsvc_test.go └── winuser ├── winuser.go └── winuser_test.go /LICENCE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are 5 | met: 6 | 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above 10 | copyright notice, this list of conditions and the following disclaimer 11 | in the documentation and/or other materials provided with the 12 | distribution. 13 | * Neither the name of the copyright owner nor the names of its 14 | contributors may be used to endorse or promote products derived from 15 | this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## *outside-windows*: Win32 API definitions for the Go language *(PRERELEASE)* 2 | 3 | #### Fire off quick questions to [@tHinqa](http://twitter.com/tHinqa) on Twitter 4 | 5 | #### Covered by the same licence conditions as Go is 6 | 7 | ### For use with [*outside*](https://github.com/tHinqa/outside) 8 | 9 | ### Based on naming and definitions in the Windows SDK 10 | 11 | To use, include: 12 | 13 | ```go 14 | 15 | import . "github.com/tHinqa/outside-windows/types" 16 | 17 | ``` 18 | 19 | and 20 | 21 | ```go 22 | 23 | import windows "github.com/tHinqa/outside-windows" 24 | ``` 25 | 26 | or 27 | 28 | ```go 29 | 30 | import windows "github.com/tHinqa/outside-windows/returnError" 31 | ``` 32 | 33 | or any combination of 34 | 35 | ```go 36 | 37 | import "github.com/tHinqa/outside-windows/winbase" 38 | import "github.com/tHinqa/outside-windows/winuser" 39 | import "github.com/tHinqa/outside-windows/commctrl" 40 | import "github.com/tHinqa/outside-windows/dde" 41 | import "github.com/tHinqa/outside-windows/mmsystem" 42 | import "github.com/tHinqa/outside-windows/nb30" 43 | import "github.com/tHinqa/outside-windows/ole2" 44 | import "github.com/tHinqa/outside-windows/shellapi" 45 | import "github.com/tHinqa/outside-windows/wincon" 46 | import "github.com/tHinqa/outside-windows/wingdi" 47 | import "github.com/tHinqa/outside-windows/winnetwk" 48 | import "github.com/tHinqa/outside-windows/winnls" 49 | import "github.com/tHinqa/outside-windows/winreg" 50 | import "github.com/tHinqa/outside-windows/winsock" 51 | import "github.com/tHinqa/outside-windows/winsock2" 52 | import "github.com/tHinqa/outside-windows/winsvc" 53 | import "github.com/tHinqa/outside-windows/types" 54 | import "github.com/tHinqa/outside-windows/returnError/winbase" 55 | import "github.com/tHinqa/outside-windows/returnError/winuser" 56 | import "github.com/tHinqa/outside-windows/returnError/commctrl" 57 | import "github.com/tHinqa/outside-windows/returnError/dde" 58 | import "github.com/tHinqa/outside-windows/returnError/mmsystem" 59 | import "github.com/tHinqa/outside-windows/returnError/nb30" 60 | import "github.com/tHinqa/outside-windows/returnError/ole2" 61 | import "github.com/tHinqa/outside-windows/returnError/shellapi" 62 | import "github.com/tHinqa/outside-windows/returnError/wincon" 63 | import "github.com/tHinqa/outside-windows/returnError/wingdi" 64 | import "github.com/tHinqa/outside-windows/returnError/winnetwk" 65 | import "github.com/tHinqa/outside-windows/returnError/winnls" 66 | import "github.com/tHinqa/outside-windows/returnError/winreg" 67 | import "github.com/tHinqa/outside-windows/returnError/winsock" 68 | import "github.com/tHinqa/outside-windows/returnError/winsock2" 69 | import "github.com/tHinqa/outside-windows/returnError/winsvc" 70 | import "github.com/tHinqa/outside-windows/returnError/types" 71 | ``` 72 | -------------------------------------------------------------------------------- /alltests.bat: -------------------------------------------------------------------------------- 1 | @go test -i . .\commctrl .\dde .\lzexpand .\mmsystem .\nb30 .\ole2 .\returnError .\shellapi .\types .\winbase .\wincon .\wingdi .\winnetwk .\winnls .\winreg .\winsock .\winsock2 .\winsvc .\winuser .\returnError\commctrl .\returnError\dde .\returnError\lzexpand .\returnError\mmsystem .\returnError\nb30 .\returnError\ole2 .\returnError\shellapi .\returnError\winbase .\returnError\wincon .\returnError\wingdi .\returnError\winnetwk .\returnError\winnls .\returnError\winreg .\returnError\winsock .\returnError\winsock2 .\returnError\winsvc .\returnError\winuser 2 | @go test . .\commctrl .\dde .\lzexpand .\mmsystem .\nb30 .\ole2 .\returnError .\shellapi .\types .\winbase .\wincon .\wingdi .\winnetwk .\winnls .\winreg .\winsock .\winsock2 .\winsvc .\winuser .\returnError\commctrl .\returnError\dde .\returnError\lzexpand .\returnError\mmsystem .\returnError\nb30 .\returnError\ole2 .\returnError\shellapi .\returnError\winbase .\returnError\wincon .\returnError\wingdi .\returnError\winnetwk .\returnError\winnls .\returnError\winreg .\returnError\winsock .\returnError\winsock2 .\returnError\winsvc .\returnError\winuser -------------------------------------------------------------------------------- /commctrl/commctrl.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package commctrl provides API definitions for accessing 5 | //comctl32.dll. 6 | package commctrl 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | . "github.com/tHinqa/outside/types" 11 | T "github.com/tHinqa/outside-windows/types" 12 | _ "github.com/tHinqa/outside/win32/comctl32" 13 | ) 14 | 15 | var ( 16 | InitMUILanguage func(uiLang T.LANGID) 17 | 18 | GetMUILanguage func() T.LANGID 19 | 20 | InitCommonControls func() 21 | 22 | InitCommonControlsEx func(*T.INITCOMMONCONTROLSEX) T.BOOL 23 | 24 | ImageList_Create func( 25 | x, y int, flags T.UINT, initial, grow int) T.HIMAGELIST 26 | 27 | ImageList_Destroy func(iml T.HIMAGELIST) T.BOOL 28 | 29 | ImageList_GetImageCount func(iml T.HIMAGELIST) int 30 | 31 | ImageList_SetImageCount func( 32 | iml T.HIMAGELIST, newCount T.UINT) T.BOOL 33 | 34 | ImageList_Add func( 35 | iml T.HIMAGELIST, image T.HBITMAP, mask T.HBITMAP) int 36 | 37 | ImageList_ReplaceIcon func( 38 | iml T.HIMAGELIST, i int, icon T.HICON) int 39 | 40 | ImageList_SetBkColor func( 41 | iml T.HIMAGELIST, clrBk T.COLORREF) T.COLORREF 42 | 43 | ImageList_GetBkColor func(iml T.HIMAGELIST) T.COLORREF 44 | 45 | ImageList_SetOverlayImage func( 46 | iml T.HIMAGELIST, T.Image, Overlay int) T.BOOL 47 | 48 | ImageList_Draw func( 49 | iml T.HIMAGELIST, i int, dst T.HDC, x, y int, style T.UINT) T.BOOL 50 | 51 | ImageList_Replace func( 52 | iml T.HIMAGELIST, i int, image T.HBITMAP, mask T.HBITMAP) T.BOOL 53 | 54 | ImageList_AddMasked func( 55 | iml T.HIMAGELIST, image T.HBITMAP, mask T.COLORREF) int 56 | 57 | ImageList_DrawEx func( 58 | iml T.HIMAGELIST, 59 | i int, 60 | dst T.HDC, 61 | x, y, dx, dy int, 62 | bk, fg T.COLORREF, 63 | style T.UINT) T.BOOL 64 | 65 | ImageList_DrawIndirect func( 66 | imldp *T.IMAGELISTDRAWPARAMS) T.BOOL 67 | 68 | ImageList_Remove func(iml T.HIMAGELIST, i int) T.BOOL 69 | 70 | ImageList_GetIcon func( 71 | himl T.HIMAGELIST, i int, flags T.UINT) T.HICON 72 | 73 | ImageList_LoadImage func( 74 | i T.HINSTANCE, 75 | bmp VString, 76 | cx, grow int, 77 | mask T.COLORREF, 78 | typ, flags T.UINT) T.HIMAGELIST 79 | 80 | ImageList_BeginDrag func( 81 | imlTrack T.HIMAGELIST, Track, xHotspot, yHotspot int) T.BOOL 82 | 83 | ImageList_EndDrag func() 84 | 85 | ImageList_DragEnter func(lock T.HWND, x, y int) T.BOOL 86 | 87 | ImageList_DragLeave func(lock T.HWND) T.BOOL 88 | 89 | ImageList_DragMove func(x, y int) T.BOOL 90 | 91 | ImageList_SetDragCursorImage func( 92 | imlDrag T.HIMAGELIST, drag, xHotspot, yHotspot int) T.BOOL 93 | 94 | ImageList_DragShowNolock func(show T.BOOL) T.BOOL 95 | 96 | ImageList_GetDragImage func( 97 | pt, hotspot *T.POINT) T.HIMAGELIST 98 | 99 | ImageList_Read func(stm *T.STREAM) T.HIMAGELIST 100 | 101 | ImageList_Write func(iml T.HIMAGELIST, stm *T.STREAM) T.BOOL 102 | 103 | ImageList_ReadEx func( 104 | flags T.DWORD, stm *T.STREAM, riid T.REFIID, v **T.VOID) T.HRESULT 105 | 106 | ImageList_WriteEx func( 107 | iml T.HIMAGELIST, flags T.DWORD, stm *T.STREAM) T.HRESULT 108 | 109 | ImageList_GetIconSize func(iml T.HIMAGELIST, x, y *int) T.BOOL 110 | 111 | ImageList_SetIconSize func(iml T.HIMAGELIST, x, y int) T.BOOL 112 | 113 | ImageList_GetImageInfo func( 114 | iml T.HIMAGELIST, i int, imageInfo *T.IMAGEINFO) T.BOOL 115 | 116 | ImageList_Merge func(iml1 T.HIMAGELIST, 117 | i1 int, iml2 T.HIMAGELIST, i2, x, y int) T.HIMAGELIST 118 | 119 | ImageList_Duplicate func(iml T.HIMAGELIST) T.HIMAGELIST 120 | 121 | ImageList_Copy func(dst T.HIMAGELIST, iDst int, 122 | src T.HIMAGELIST, iSrc int, flags T.UINT) T.BOOL 123 | 124 | CreateToolbarEx func( 125 | wnd T.HWND, 126 | s T.DWORD, 127 | id T.UINT, 128 | bitmaps int, 129 | bmInst T.HINSTANCE, 130 | bmID T.UINT_PTR, 131 | buttons *T.TBBUTTON, 132 | numButtons, 133 | xButton, 134 | yButton, 135 | xBitmap, 136 | yBitmap int, 137 | structSize T.UINT) T.HWND 138 | 139 | CreateMappedBitmap func( 140 | instance T.HINSTANCE, 141 | bitmap T.INT_PTR, 142 | flags T.UINT, 143 | colorMap *T.COLORMAP, 144 | NumMaps int) T.HBITMAP 145 | 146 | DrawStatusText func( 147 | dc T.HDC, rc *T.RECT, text VString, flags T.UINT) 148 | 149 | CreateStatusWindow func( 150 | style T.LONG, text VString, parent T.HWND, id T.UINT) T.HWND 151 | 152 | MenuHelp func( 153 | msg T.UINT, 154 | wParam T.WPARAM, 155 | lParam T.LPARAM, 156 | mainMenu T.HMENU, 157 | inst T.HINSTANCE, 158 | status T.HWND, 159 | ids *T.UINT) 160 | 161 | ShowHideMenuCtl func(wnd T.HWND, flags T.UINT_PTR, info *T.INT) T.BOOL 162 | 163 | GetEffectiveClientRect func(wnd T.HWND, rc *T.RECT, info *T.INT) 164 | 165 | MakeDragList func(lb T.HWND) T.BOOL 166 | 167 | DrawInsert func(parent, lb T.HWND, item int) 168 | 169 | LBItemFromPt func(lb T.HWND, pt T.POINT, autoScroll T.BOOL) int 170 | 171 | CreateUpDownControl func( 172 | style T.DWORD, 173 | x, y, cx, cy int, 174 | parent T.HWND, 175 | id int, 176 | inst T.HINSTANCE, 177 | buddy T.HWND, 178 | upper, lower, pos int) T.HWND 179 | 180 | DSA_Create func(item , itemGrow int) T.HDSA 181 | 182 | DSA_Destroy func(dsa T.HDSA) T.BOOL 183 | 184 | DSA_DestroyCallback func( 185 | dsa T.HDSA, cb *T.FNDSAENUMCALLBACK, data *T.VOID) 186 | 187 | DSA_GetItemPtr func(dsa T.HDSA, i int) *T.VOID 188 | 189 | DSA_InsertItem func(dsa T.HDSA, i int, pitem *T.VOID) int 190 | 191 | DPA_Create func(itemGrow int) T.HDPA 192 | 193 | DPA_Destroy func(dpa T.HDPA) T.BOOL 194 | 195 | DPA_DeletePtr func(dpa T.HDPA, i int) *T.VOID 196 | 197 | DPA_DeleteAllPtrs func(dpa T.HDPA) T.BOOL 198 | 199 | DPA_EnumCallback func( 200 | dpa T.HDPA, cb *T.FNDPAENUMCALLBACK, data *T.VOID) 201 | 202 | DPA_DestroyCallback func( 203 | dpa T.HDPA, cb *T.FNDPAENUMCALLBACK, data *T.VOID) 204 | 205 | DPA_SetPtr func(dpa T.HDPA, i int, p *T.VOID) T.BOOL 206 | 207 | DPA_InsertPtr func(dpa T.HDPA, i int, p *T.VOID) int 208 | 209 | DPA_GetPtr func(dpa T.HDPA, i T.INT_PTR) *T.VOID 210 | 211 | DPA_Sort func( 212 | dpa T.HDPA, compare *T.FNDPACOMPARE, lParam T.LPARAM) T.BOOL 213 | 214 | DPA_Search func( 215 | dpa T.HDPA, 216 | find *T.VOID, 217 | start int, 218 | compare *T.FNDPACOMPARE, 219 | lParam T.LPARAM, 220 | options T.UINT) int 221 | 222 | Str_SetPtrW func( 223 | ps *T.WString, //TODO(t):This gets free'd !!! 224 | s T.WString) T.BOOL 225 | 226 | //Was named _TrackMouseEvent and TrackMouseEvent 227 | //clashes with winuser.TrackMouseEvent 228 | TrackMouseEvent_ func( 229 | EventTrack *T.TRACKMOUSEEVENT) T.BOOL 230 | 231 | FlatSB_EnableScrollBar func(T.HWND, int, T.UINT) T.BOOL 232 | 233 | FlatSB_ShowScrollBar func(w T.HWND, code int, f T.BOOL) T.BOOL 234 | 235 | FlatSB_GetScrollRange func(w T.HWND, code int, s, e *T.INT) T.BOOL 236 | 237 | FlatSB_GetScrollInfo func( 238 | w T.HWND, code int, si *T.SCROLLINFO) T.BOOL 239 | 240 | FlatSB_GetScrollPos func(w T.HWND, code int) int 241 | 242 | FlatSB_GetScrollProp func(w T.HWND, propIndex int, p *T.INT) T.BOOL 243 | 244 | FlatSB_SetScrollPos func( 245 | w T.HWND, code, pos int, fRedraw T.BOOL) int 246 | 247 | FlatSB_SetScrollInfo func( 248 | w T.HWND, code int, si *T.SCROLLINFO, fRedraw T.BOOL) int 249 | 250 | FlatSB_SetScrollRange func( 251 | w T.HWND, code, min, max int, fRedraw T.BOOL) int 252 | 253 | FlatSB_SetScrollProp func( 254 | w T.HWND, index T.UINT, newValue T.INT_PTR, f T.BOOL) T.BOOL 255 | 256 | InitializeFlatSB func(T.HWND) T.BOOL 257 | 258 | UninitializeFlatSB func(T.HWND) T.HRESULT 259 | 260 | SetWindowSubclass func( 261 | Wnd T.HWND, 262 | Subclass T.SUBCLASSPROC, 263 | IdSubclass T.UINT_PTR, 264 | RefData T.DWORD_PTR) T.BOOL 265 | 266 | GetWindowSubclass func( 267 | Wnd T.HWND, 268 | Subclass T.SUBCLASSPROC, 269 | IdSubclass T.UINT_PTR, 270 | RefData *T.DWORD_PTR) T.BOOL 271 | 272 | RemoveWindowSubclass func( 273 | hWnd T.HWND, 274 | Subclass T.SUBCLASSPROC, 275 | IdSubclass T.UINT_PTR) T.BOOL 276 | 277 | DefSubclassProc func( 278 | Wnd T.HWND, 279 | Msg T.UINT, 280 | WParam T.WPARAM, 281 | LParam T.LPARAM) T.LRESULT 282 | 283 | DrawShadowText func( 284 | dc T.HDC, 285 | Text T.WString, 286 | c T.UINT, 287 | rc *T.RECT, 288 | Flags T.DWORD, 289 | clrText, clrShadow T.COLORREF, 290 | xOffset, yOffset int) int 291 | ) 292 | 293 | /* 294 | func ImageList_AddIcon(iml T.HIMAGELIST, icon T.HICON) int { 295 | return ImageList_ReplaceIcon(iml, -1, icon) 296 | } 297 | 298 | func ImageList_RemoveAll(iml T.HIMAGELIST) T.BOOL { 299 | return ImageList_Remove(iml, -1) 300 | } 301 | 302 | func ImageList_ExtractIcon(hi int, iml T.HIMAGELIST, i int) T.HICON { 303 | return ImageList_GetIcon(iml, i, 0) 304 | } 305 | 306 | func ImageList_LoadBitmap(i T.HINSTANCE, bmp VString, cx, T.Grow int, T.Mask T.COLORREF) { 307 | var IMAGE_BITMAP T.UINT = 0 //TODO(t):FIX 308 | ImageList_LoadImage(i, bmp, cx, Grow, Mask, IMAGE_BITMAP, 0) 309 | } 310 | 311 | #ifdef _WIN64 312 | T.BOOL FlatSB_GetScrollPropPtr func(T.HWND, int propIndex, T.PINT_PTR); 313 | #else 314 | #define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp 315 | #endif 316 | #define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp 317 | */ 318 | 319 | //TODO(t):Not on XP 320 | //{"ImageList_ReadEx", &ImageList_ReadEx}, 321 | //{"GetWindowSubclass", &GetWindowSubclass}, 322 | 323 | //TODO(t): Where 324 | //{"DrawShadowText", &DrawShadowText}, 325 | //{"ImageList_WriteEx", &ImageList_WriteEx}, 326 | 327 | var CommCtrlANSIApis = outside.Apis{ 328 | {"CreateStatusWindowA", &CreateStatusWindow}, 329 | {"DrawStatusTextA", &DrawStatusText}, 330 | } 331 | 332 | var CommCtrlUnicodeApis = outside.Apis{ 333 | {"CreateStatusWindowW", &CreateStatusWindow}, 334 | {"DrawStatusTextW", &DrawStatusText}, 335 | } 336 | 337 | var CommCtrlApis = outside.Apis{ 338 | {"CreateMappedBitmap", &CreateMappedBitmap}, 339 | {"CreateToolbarEx", &CreateToolbarEx}, 340 | {"CreateUpDownControl", &CreateUpDownControl}, 341 | {"DefSubclassProc", &DefSubclassProc}, 342 | {"DPA_Create", &DPA_Create}, 343 | {"DPA_DeleteAllPtrs", &DPA_DeleteAllPtrs}, 344 | {"DPA_DeletePtr", &DPA_DeletePtr}, 345 | {"DPA_Destroy", &DPA_Destroy}, 346 | {"DPA_DestroyCallback", &DPA_DestroyCallback}, 347 | {"DPA_EnumCallback", &DPA_EnumCallback}, 348 | {"DPA_GetPtr", &DPA_GetPtr}, 349 | {"DPA_InsertPtr", &DPA_InsertPtr}, 350 | {"DPA_Search", &DPA_Search}, 351 | {"DPA_SetPtr", &DPA_SetPtr}, 352 | {"DPA_Sort", &DPA_Sort}, 353 | {"DrawInsert", &DrawInsert}, 354 | {"DSA_Create", &DSA_Create}, 355 | {"DSA_Destroy", &DSA_Destroy}, 356 | {"DSA_DestroyCallback", &DSA_DestroyCallback}, 357 | {"DSA_GetItemPtr", &DSA_GetItemPtr}, 358 | {"DSA_InsertItem", &DSA_InsertItem}, 359 | {"FlatSB_EnableScrollBar", &FlatSB_EnableScrollBar}, 360 | {"FlatSB_GetScrollInfo", &FlatSB_GetScrollInfo}, 361 | {"FlatSB_GetScrollPos", &FlatSB_GetScrollPos}, 362 | {"FlatSB_GetScrollProp", &FlatSB_GetScrollProp}, 363 | {"FlatSB_GetScrollRange", &FlatSB_GetScrollRange}, 364 | {"FlatSB_SetScrollInfo", &FlatSB_SetScrollInfo}, 365 | {"FlatSB_SetScrollPos", &FlatSB_SetScrollPos}, 366 | {"FlatSB_SetScrollProp", &FlatSB_SetScrollProp}, 367 | {"FlatSB_SetScrollRange", &FlatSB_SetScrollRange}, 368 | {"FlatSB_ShowScrollBar", &FlatSB_ShowScrollBar}, 369 | {"GetEffectiveClientRect", &GetEffectiveClientRect}, 370 | {"GetMUILanguage", &GetMUILanguage}, 371 | {"ImageList_Add", &ImageList_Add}, 372 | {"ImageList_AddMasked", &ImageList_AddMasked}, 373 | {"ImageList_BeginDrag", &ImageList_BeginDrag}, 374 | {"ImageList_Copy", &ImageList_Copy}, 375 | {"ImageList_Create", &ImageList_Create}, 376 | {"ImageList_Destroy", &ImageList_Destroy}, 377 | {"ImageList_DragEnter", &ImageList_DragEnter}, 378 | {"ImageList_DragLeave", &ImageList_DragLeave}, 379 | {"ImageList_DragMove", &ImageList_DragMove}, 380 | {"ImageList_DragShowNolock", &ImageList_DragShowNolock}, 381 | {"ImageList_Draw", &ImageList_Draw}, 382 | {"ImageList_DrawEx", &ImageList_DrawEx}, 383 | {"ImageList_DrawIndirect", &ImageList_DrawIndirect}, 384 | {"ImageList_Duplicate", &ImageList_Duplicate}, 385 | {"ImageList_EndDrag", &ImageList_EndDrag}, 386 | {"ImageList_GetBkColor", &ImageList_GetBkColor}, 387 | {"ImageList_GetDragImage", &ImageList_GetDragImage}, 388 | {"ImageList_GetIcon", &ImageList_GetIcon}, 389 | {"ImageList_GetIconSize", &ImageList_GetIconSize}, 390 | {"ImageList_GetImageCount", &ImageList_GetImageCount}, 391 | {"ImageList_GetImageInfo", &ImageList_GetImageInfo}, 392 | {"ImageList_LoadImage", &ImageList_LoadImage}, 393 | {"ImageList_Merge", &ImageList_Merge}, 394 | {"ImageList_Read", &ImageList_Read}, 395 | {"ImageList_Remove", &ImageList_Remove}, 396 | {"ImageList_Replace", &ImageList_Replace}, 397 | {"ImageList_ReplaceIcon", &ImageList_ReplaceIcon}, 398 | {"ImageList_SetBkColor", &ImageList_SetBkColor}, 399 | {"ImageList_SetDragCursorImage", &ImageList_SetDragCursorImage}, 400 | {"ImageList_SetIconSize", &ImageList_SetIconSize}, 401 | {"ImageList_SetImageCount", &ImageList_SetImageCount}, 402 | {"ImageList_SetOverlayImage", &ImageList_SetOverlayImage}, 403 | {"ImageList_Write", &ImageList_Write}, 404 | {"InitCommonControls", &InitCommonControls}, 405 | {"InitCommonControlsEx", &InitCommonControlsEx}, 406 | {"InitializeFlatSB", &InitializeFlatSB}, 407 | {"InitMUILanguage", &InitMUILanguage}, 408 | {"LBItemFromPt", &LBItemFromPt}, 409 | {"MakeDragList", &MakeDragList}, 410 | {"MenuHelp", &MenuHelp}, 411 | {"RemoveWindowSubclass", &RemoveWindowSubclass}, 412 | {"SetWindowSubclass", &SetWindowSubclass}, 413 | {"ShowHideMenuCtl", &ShowHideMenuCtl}, 414 | {"Str_SetPtrW", &Str_SetPtrW}, 415 | {"_TrackMouseEvent", &TrackMouseEvent_}, 416 | {"UninitializeFlatSB", &UninitializeFlatSB}, 417 | } 418 | -------------------------------------------------------------------------------- /commctrl/commctrl_test.go: -------------------------------------------------------------------------------- 1 | package commctrl 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(CommCtrlApis) 8 | AddApis(CommCtrlANSIApis) 9 | AddApis(CommCtrlUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /dde/dde.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package dde provides API definitions for accessing dde 5 | //functions of user32.dll. 6 | package dde 7 | 8 | import ( 9 | . "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | _ "github.com/tHinqa/outside/win32/user32" 12 | ) 13 | 14 | var ( 15 | DdeSetQualityOfService func( 16 | Client T.HWND, 17 | QosNew *T.SECURITY_QUALITY_OF_SERVICE, 18 | QosPrev *T.SECURITY_QUALITY_OF_SERVICE) T.BOOL 19 | 20 | ImpersonateDdeClientWindow func( 21 | Client T.HWND, 22 | Server T.HWND) T.BOOL 23 | 24 | PackDDElParam func( 25 | Msg T.UINT, 26 | Lo T.UINT_PTR, 27 | Hi T.UINT_PTR) T.LPARAM 28 | 29 | UnpackDDElParam func( 30 | Msg T.UINT, 31 | LParam T.LPARAM, 32 | Lo *T.UINT_PTR, 33 | Hi *T.UINT_PTR) T.BOOL 34 | 35 | FreeDDElParam func( 36 | Msg T.UINT, 37 | LParam T.LPARAM) T.BOOL 38 | 39 | ReuseDDElParam func( 40 | LParam T.LPARAM, 41 | In T.UINT, 42 | Out T.UINT, 43 | Lo T.UINT_PTR, 44 | Hi T.UINT_PTR) T.LPARAM 45 | ) 46 | 47 | var DdeANSIApis = Apis{ 48 | {"DdeCreateStringHandleA", &DdeCreateStringHandle}, 49 | {"DdeInitializeA", &DdeInitialize}, 50 | {"DdeQueryStringA", &DdeQueryString}, 51 | } 52 | 53 | var DdeUnicodeApis = Apis{ 54 | {"DdeCreateStringHandleW", &DdeCreateStringHandle}, 55 | {"DdeInitializeW", &DdeInitialize}, 56 | {"DdeQueryStringW", &DdeQueryString}, 57 | } 58 | 59 | var DdeApis = Apis{ 60 | {"DdeAbandonTransaction", &DdeAbandonTransaction}, 61 | {"DdeAccessData", &DdeAccessData}, 62 | {"DdeAddData", &DdeAddData}, 63 | {"DdeClientTransaction", &DdeClientTransaction}, 64 | {"DdeCmpStringHandles", &DdeCmpStringHandles}, 65 | {"DdeConnect", &DdeConnect}, 66 | {"DdeConnectList", &DdeConnectList}, 67 | {"DdeCreateDataHandle", &DdeCreateDataHandle}, 68 | {"DdeDisconnect", &DdeDisconnect}, 69 | {"DdeDisconnectList", &DdeDisconnectList}, 70 | {"DdeEnableCallback", &DdeEnableCallback}, 71 | {"DdeFreeDataHandle", &DdeFreeDataHandle}, 72 | {"DdeFreeStringHandle", &DdeFreeStringHandle}, 73 | {"DdeGetData", &DdeGetData}, 74 | {"DdeGetLastError", &DdeGetLastError}, 75 | {"DdeImpersonateClient", &DdeImpersonateClient}, 76 | {"DdeKeepStringHandle", &DdeKeepStringHandle}, 77 | {"DdeNameService", &DdeNameService}, 78 | {"DdePostAdvise", &DdePostAdvise}, 79 | {"DdeQueryConvInfo", &DdeQueryConvInfo}, 80 | {"DdeQueryNextServer", &DdeQueryNextServer}, 81 | {"DdeReconnect", &DdeReconnect}, 82 | {"DdeSetQualityOfService", &DdeSetQualityOfService}, 83 | {"DdeSetUserHandle", &DdeSetUserHandle}, 84 | {"DdeUnaccessData", &DdeUnaccessData}, 85 | {"DdeUninitialize", &DdeUninitialize}, 86 | {"FreeDDElParam", &FreeDDElParam}, 87 | {"ImpersonateDdeClientWindow", &ImpersonateDdeClientWindow}, 88 | {"PackDDElParam", &PackDDElParam}, 89 | {"ReuseDDElParam", &ReuseDDElParam}, 90 | {"UnpackDDElParam", &UnpackDDElParam}, 91 | } 92 | -------------------------------------------------------------------------------- /dde/dde_test.go: -------------------------------------------------------------------------------- 1 | package dde 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(DdeApis) 8 | AddApis(DdeANSIApis) 9 | AddApis(DdeUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /dde/ddeml.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | package dde 5 | 6 | import ( 7 | . "github.com/tHinqa/outside-windows/types" 8 | . "github.com/tHinqa/outside/types" 9 | _ "github.com/tHinqa/outside/win32/user32" 10 | ) 11 | 12 | var ( 13 | DdeInitialize func( 14 | Inst *DWORD, 15 | Callback *FNCALLBACK, 16 | Cmd DWORD, 17 | Res DWORD) UINT 18 | 19 | DdeUninitialize func(Inst DWORD) BOOL 20 | 21 | DdeConnectList func( 22 | Inst DWORD, 23 | Service HSZ, 24 | Topic HSZ, 25 | ConvList HCONVLIST, 26 | CC *CONVCONTEXT) HCONVLIST 27 | 28 | DdeQueryNextServer func( 29 | ConvList HCONVLIST, ConvPrev HCONV) HCONV 30 | 31 | DdeDisconnectList func(ConvList HCONVLIST) BOOL 32 | 33 | DdeConnect func( 34 | Inst DWORD, 35 | Service HSZ, 36 | Topic HSZ, 37 | CC *CONVCONTEXT) HCONV 38 | 39 | DdeDisconnect func(Conv HCONV) BOOL 40 | 41 | DdeReconnect func(Conv HCONV) HCONV 42 | 43 | DdeQueryConvInfo func( 44 | Conv HCONV, 45 | Transaction DWORD, 46 | ConvInfo *CONVINFO) UINT 47 | 48 | DdeSetUserHandle func( 49 | Conv HCONV, Id DWORD, User DWORD_PTR) BOOL 50 | 51 | DdeAbandonTransaction func( 52 | Inst DWORD, Conv HCONV, Transaction DWORD) BOOL 53 | 54 | DdePostAdvise func( 55 | Inst DWORD, Topic HSZ, Item HSZ) BOOL 56 | 57 | DdeEnableCallback func( 58 | Inst DWORD, Conv HCONV, Cmd UINT) BOOL 59 | 60 | DdeImpersonateClient func(Conv HCONV) BOOL 61 | 62 | DdeNameService func( 63 | Inst DWORD, S1 HSZ, S2 HSZ, Cmd UINT) HDDEDATA 64 | 65 | DdeClientTransaction func( 66 | Data *BYTE, 67 | cData DWORD, 68 | Conv HCONV, 69 | Item HSZ, 70 | Fmt UINT, 71 | Type UINT, 72 | Timeout DWORD, 73 | Result *DWORD) HDDEDATA 74 | 75 | DdeCreateDataHandle func( 76 | Inst DWORD, 77 | Src *BYTE, 78 | C DWORD, 79 | Off DWORD, 80 | Item HSZ, 81 | Fmt UINT, 82 | Cmd UINT) HDDEDATA 83 | 84 | DdeAddData func( 85 | Data HDDEDATA, 86 | Src *BYTE, 87 | C DWORD, 88 | Off DWORD) HDDEDATA 89 | 90 | DdeGetData func( 91 | Data HDDEDATA, 92 | Dst *BYTE, 93 | Max DWORD, 94 | Off DWORD) DWORD 95 | 96 | DdeAccessData func( 97 | Data HDDEDATA, DataSize *DWORD) *BYTE 98 | 99 | DdeUnaccessData func(Data HDDEDATA) BOOL 100 | 101 | DdeFreeDataHandle func(Data HDDEDATA) BOOL 102 | 103 | DdeGetLastError func(Inst DWORD) UINT 104 | 105 | DdeCreateStringHandle func( 106 | Inst DWORD, S VString, CodePage int) HSZ 107 | 108 | DdeQueryString func( 109 | Inst DWORD, 110 | S HSZ, 111 | OS OVString, 112 | hMax DWORD, 113 | CodePage int) DWORD 114 | 115 | DdeFreeStringHandle func(Inst DWORD, S HSZ) BOOL 116 | 117 | DdeKeepStringHandle func(Inst DWORD, S HSZ) BOOL 118 | 119 | DdeCmpStringHandles func(S1 HSZ, S2 HSZ) int 120 | ) 121 | -------------------------------------------------------------------------------- /lzexpand/lzexpand.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package lzexpand provides API definitions for accessing 5 | //the lz functions in kernel32.dll. 6 | package lzexpand 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/kernel32" 13 | ) 14 | 15 | var ( 16 | LZStart func() T.INT 17 | 18 | LZDone func() T.VOID 19 | 20 | CopyLZFile func(T.INT, T.INT) T.LONG 21 | 22 | LZCopy func(T.INT, T.INT) T.LONG 23 | 24 | LZInit func(T.INT) T.INT 25 | 26 | GetExpandedName func(VString, OVString) T.INT 27 | 28 | LZOpenFile func(OVString, *T.OFSTRUCT, T.WORD) T.INT 29 | 30 | LZSeek func(T.INT, T.LONG, T.INT) T.LONG 31 | 32 | LZRead func(T.INT, T.AString, T.INT) T.INT 33 | 34 | LZClose func(T.INT) T.VOID 35 | ) 36 | 37 | var LZExpandANSIApis = outside.Apis{ 38 | {"GetExpandedNameA", &GetExpandedName}, 39 | {"LZOpenFileA", &LZOpenFile}, 40 | } 41 | 42 | var LZExpandUnicodeApis = outside.Apis{ 43 | {"GetExpandedNameW", &GetExpandedName}, 44 | {"LZOpenFileW", &LZOpenFile}, 45 | } 46 | 47 | var LZExpandApis = outside.Apis{ 48 | {"CopyLZFile", &CopyLZFile}, 49 | {"LZClose", &LZClose}, 50 | {"LZCopy", &LZCopy}, 51 | {"LZDone", &LZDone}, 52 | {"LZInit", &LZInit}, 53 | {"LZRead", &LZRead}, 54 | {"LZSeek", &LZSeek}, 55 | {"LZStart", &LZStart}, 56 | } 57 | -------------------------------------------------------------------------------- /lzexpand/lzexpand_test.go: -------------------------------------------------------------------------------- 1 | package lzexpand 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(LZExpandApis) 8 | AddApis(LZExpandANSIApis) 9 | AddApis(LZExpandUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /mmsystem/mmsystem_test.go: -------------------------------------------------------------------------------- 1 | package mmsystem 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(MMSystemApis) 8 | AddApis(MMSystemANSIApis) 9 | AddApis(MMSystemUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /nb30/nb30.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package netbios provides the API definition for accessing 5 | //netbios in netapi32.dll. 6 | package nb30 7 | 8 | //TODO(t): on 7/8 there is a netbios.dll with ep Netbios too 9 | 10 | import ( 11 | . "github.com/tHinqa/outside" 12 | T "github.com/tHinqa/outside-windows/types" 13 | _ "github.com/tHinqa/outside/win32/netapi32" 14 | ) 15 | 16 | var ( 17 | Netbios func(pncb *T.NCB) T.UCHAR 18 | ) 19 | 20 | var Nb30Apis = Apis{{"Netbios", &Netbios}} 21 | -------------------------------------------------------------------------------- /nb30/nb30_test.go: -------------------------------------------------------------------------------- 1 | package nb30 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(Nb30Apis) 8 | } 9 | -------------------------------------------------------------------------------- /ole2/ole2.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | package ole2 5 | 6 | import ( 7 | . "github.com/tHinqa/outside" 8 | T "github.com/tHinqa/outside-windows/types" 9 | _ "github.com/tHinqa/outside/win32/ole32" 10 | ) 11 | 12 | var ( 13 | CreateDataAdviseHolder func(daHolder **T.IDataAdviseHolder) 14 | 15 | OleBuildVersion func() T.DWORD 16 | 17 | ReadClassStg func(stg *T.IStorage, clsId *T.CLSID) 18 | 19 | WriteClassStg func(stg *T.IStorage, clsId T.REFCLSID) 20 | 21 | ReadClassStm func(stm *T.IStream, clsId *T.CLSID) 22 | 23 | WriteClassStm func(stm *T.IStream, clsId T.REFCLSID) 24 | 25 | WriteFmtUserTypeStg func( 26 | stg *T.IStorage, 27 | cf T.CLIPFORMAT, 28 | userType *T.OLESTR) 29 | 30 | ReadFmtUserTypeStg func( 31 | stg *T.IStorage, 32 | cf *T.CLIPFORMAT, 33 | userType **T.OLESTR) 34 | 35 | OleInitialize func(pvReserved *T.VOID) 36 | 37 | OleUninitialize func() 38 | 39 | OleQueryLinkFromData func(srcDataObject *T.IDataObject) 40 | 41 | OleQueryCreateFromData func(srcDataObject *T.IDataObject) 42 | 43 | OleCreate func( 44 | rClsId T.REFCLSID, 45 | riid T.REFIID, 46 | renderopt T.DWORD, 47 | formatEtc *T.FORMATETC, 48 | clientSite *T.IOleClientSite, 49 | stg *T.IStorage, 50 | obj **T.VOID) 51 | 52 | OleCreateEx func( 53 | rClsId T.REFCLSID, 54 | riid T.REFIID, 55 | flags T.DWORD, 56 | renderopt T.DWORD, 57 | formats T.ULONG, 58 | advf *T.DWORD, 59 | formatEtc *T.FORMATETC, 60 | adviseSink *T.IAdviseSink, 61 | connection *T.DWORD, 62 | clientSite *T.IOleClientSite, 63 | stg *T.IStorage, 64 | obj **T.VOID) 65 | 66 | OleCreateFromData func( 67 | srcDataObj *T.IDataObject, 68 | riid T.REFIID, 69 | renderopt T.DWORD, 70 | formatEtc *T.FORMATETC, 71 | clientSite *T.IOleClientSite, 72 | stg *T.IStorage, 73 | obj **T.VOID) 74 | 75 | OleCreateFromDataEx func( 76 | srcDataObj *T.IDataObject, 77 | riid T.REFIID, 78 | flags T.DWORD, 79 | renderopt T.DWORD, 80 | formats T.ULONG, 81 | advf *T.DWORD, 82 | formatEtc *T.FORMATETC, 83 | adviseSink *T.IAdviseSink, 84 | connection *T.DWORD, 85 | clientSite *T.IOleClientSite, 86 | stg *T.IStorage, 87 | obj **T.VOID) 88 | 89 | OleCreateLinkFromData func( 90 | srcDataObj *T.IDataObject, 91 | riid T.REFIID, 92 | renderopt T.DWORD, 93 | formatEtc *T.FORMATETC, 94 | clientSite *T.IOleClientSite, 95 | stg *T.IStorage, 96 | obj **T.VOID) 97 | 98 | OleCreateLinkFromDataEx func( 99 | srcDataObj *T.IDataObject, 100 | riid T.REFIID, 101 | flags T.DWORD, 102 | renderopt T.DWORD, 103 | formats T.ULONG, 104 | advf *T.DWORD, 105 | formatEtc *T.FORMATETC, 106 | adviseSink *T.IAdviseSink, 107 | connection *T.DWORD, 108 | clientSite *T.IOleClientSite, 109 | stg *T.IStorage, 110 | obj **T.VOID) 111 | 112 | OleCreateStaticFromData func( 113 | srcDataObj *T.IDataObject, 114 | riid T.REFIID, 115 | renderopt T.DWORD, 116 | formatEtc *T.FORMATETC, 117 | clientSite *T.IOleClientSite, 118 | stg *T.IStorage, 119 | obj **T.VOID) 120 | 121 | OleCreateLink func( 122 | pmkLinkSrc *T.IMoniker, 123 | riid T.REFIID, 124 | renderopt T.DWORD, 125 | formatEtc *T.FORMATETC, 126 | clientSite *T.IOleClientSite, 127 | stg *T.IStorage, 128 | obj **T.VOID) 129 | 130 | OleCreateLinkEx func( 131 | pmkLinkSrc *T.IMoniker, 132 | riid T.REFIID, 133 | flags T.DWORD, 134 | renderopt T.DWORD, 135 | formats T.ULONG, 136 | advf *T.DWORD, 137 | formatEtc *T.FORMATETC, 138 | adviseSink *T.IAdviseSink, 139 | connection *T.DWORD, 140 | clientSite *T.IOleClientSite, 141 | stg *T.IStorage, 142 | obj **T.VOID) 143 | 144 | OleCreateLinkToFile func( 145 | fileName *T.OLESTR, 146 | riid T.REFIID, 147 | renderopt T.DWORD, 148 | formatEtc *T.FORMATETC, 149 | clientSite *T.IOleClientSite, 150 | stg *T.IStorage, 151 | obj **T.VOID) 152 | 153 | OleCreateLinkToFileEx func( 154 | lpszFileName *T.OLESTR, 155 | riid T.REFIID, 156 | flags T.DWORD, 157 | renderopt T.DWORD, 158 | formats T.ULONG, 159 | advf *T.DWORD, 160 | formatEtc *T.FORMATETC, 161 | adviseSink *T.IAdviseSink, 162 | connection *T.DWORD, 163 | clientSite *T.IOleClientSite, 164 | stg *T.IStorage, 165 | obj **T.VOID) 166 | 167 | OleCreateFromFile func( 168 | clsId T.REFCLSID, 169 | fileName *T.OLESTR, 170 | riid T.REFIID, 171 | renderopt T.DWORD, 172 | formatEtc *T.FORMATETC, 173 | clientSite *T.IOleClientSite, 174 | stg *T.IStorage, 175 | obj **T.VOID) 176 | 177 | OleCreateFromFileEx func( 178 | rClsId T.REFCLSID, 179 | fileName *T.OLESTR, 180 | riid T.REFIID, 181 | flags T.DWORD, 182 | renderopt T.DWORD, 183 | formats T.ULONG, 184 | advf *T.DWORD, 185 | formatEtc *T.FORMATETC, 186 | adviseSink *T.IAdviseSink, 187 | connection *T.DWORD, 188 | clientSite *T.IOleClientSite, 189 | stg *T.IStorage, 190 | obj **T.VOID) 191 | 192 | OleLoad func( 193 | stg *T.IStorage, 194 | riid T.REFIID, 195 | clientSite *T.IOleClientSite, 196 | obj **T.VOID) 197 | 198 | OleSave func( 199 | ps *T.IPersistStorage, 200 | stg *T.IStorage, 201 | sameAsLoad T.BOOL) 202 | 203 | OleLoadFromStream func( 204 | stm *T.STREAM, 205 | riidInterface T.REFIID, 206 | obj **T.VOID) 207 | 208 | OleSaveToStream func( 209 | ps *T.IPersistStream, stm *T.STREAM) 210 | 211 | OleSetContainedObject func( 212 | unknown *T.IUnknown, contained T.BOOL) 213 | 214 | OleNoteObjectVisible func( 215 | unknown *T.IUnknown, Visible T.BOOL) 216 | 217 | RegisterDragDrop func( 218 | wnd T.HWND, dropTarget *T.IDropTarget) 219 | 220 | RevokeDragDrop func(wnd T.HWND) 221 | 222 | DoDragDrop func( 223 | dataObj *T.IDataObject, 224 | dropSource *T.IDropSource, 225 | okEffects T.DWORD, 226 | effect *T.DWORD) 227 | 228 | OleSetClipboard func(dataObj *T.IDataObject) 229 | 230 | OleGetClipboard func(dataObj **T.IDataObject) 231 | 232 | OleFlushClipboard func() 233 | 234 | OleIsCurrentClipboard func(dataObj *T.IDataObject) 235 | 236 | OleCreateMenuDescriptor func( 237 | menuCombined T.HMENU, 238 | menuWidths *T.OLEMENUGROUPWIDTHS) T.HOLEMENU 239 | 240 | OleSetMenuDescriptor func( 241 | olemenu T.HOLEMENU, 242 | wndFrame T.HWND, 243 | wndActiveObject T.HWND, 244 | frame *T.IOleInPlaceFrame, 245 | activeObj *T.IOleInPlaceActiveObject) 246 | 247 | OleDestroyMenuDescriptor func(olemenu T.HOLEMENU) 248 | 249 | OleTranslateAccelerator func( 250 | frame *T.IOleInPlaceFrame, 251 | frameInfo *T.OLEINPLACEFRAMEINFO, 252 | msg *T.MSG) 253 | 254 | OleDuplicateData func( 255 | src T.HANDLE, format T.CLIPFORMAT, flags T.UINT) T.HANDLE 256 | 257 | OleDraw func( 258 | unknown *T.IUnknown, 259 | aspect T.DWORD, 260 | dcDraw T.HDC, 261 | rcBounds *T.RECT) 262 | 263 | OleRun func(unknown *T.IUnknown) 264 | 265 | OleIsRunning func(object *T.IOleObject) T.BOOL 266 | 267 | OleLockRunning func( 268 | unknown *T.IUnknown, 269 | lock T.BOOL, 270 | lastUnlockCloses T.BOOL) 271 | 272 | ReleaseStgMedium func(*T.STGMEDIUM) 273 | 274 | CreateOleAdviseHolder func(oaHolder **T.IOleAdviseHolder) 275 | 276 | OleCreateDefaultHandler func( 277 | clsId T.REFCLSID, 278 | unkOuter *T.IUnknown, 279 | riid T.REFIID, 280 | obj **T.VOID) 281 | 282 | OleCreateEmbeddingHelper func( 283 | clsId T.REFCLSID, 284 | unkOuter *T.IUnknown, 285 | flags T.DWORD, 286 | cf *T.IClassFactory, 287 | riid T.REFIID, 288 | obj **T.VOID) 289 | 290 | IsAccelerator func( 291 | accel T.HACCEL, 292 | accelEntries int, 293 | msg *T.MSG, 294 | cmd *T.WORD) T.BOOL 295 | 296 | OleGetIconOfFile func( 297 | path *T.OLESTR, useFileAsLabel T.BOOL) T.HGLOBAL 298 | 299 | OleGetIconOfClass func( 300 | rClsId T.REFCLSID, 301 | label *T.OLESTR, 302 | useTypeAsLabel T.BOOL) T.HGLOBAL 303 | 304 | OleMetafilePictFromIconAndLabel func( 305 | icon T.HICON, 306 | label *T.OLESTR, 307 | sourceFile *T.OLESTR, 308 | iconIndex T.UINT) T.HGLOBAL 309 | 310 | OleRegGetUserType func( 311 | clsId T.REFCLSID, 312 | formOfType T.DWORD, 313 | userType **T.OLESTR) 314 | 315 | OleRegGetMiscStatus func( 316 | clsId T.REFCLSID, aspect T.DWORD, status *T.DWORD) 317 | 318 | OleRegEnumFormatEtc func( 319 | clsId T.REFCLSID, 320 | direction T.DWORD, 321 | enum **T.IEnumFORMATETC) 322 | 323 | OleRegEnumVerbs func(clsId T.REFCLSID, enum **T.IEnumOLEVERB) 324 | 325 | OleConvertOLESTREAMToIStorage func( 326 | olestream *T.OLESTREAM, 327 | stg *T.IStorage, 328 | td *T.DVTARGETDEVICE) 329 | 330 | OleConvertIStorageToOLESTREAM func( 331 | stg *T.IStorage, Olestream *T.OLESTREAM) 332 | 333 | GetHGlobalFromILockBytes func( 334 | kByt *T.ILockBytes, global *T.HGLOBAL) 335 | 336 | CreateILockBytesOnHGlobal func( 337 | global T.HGLOBAL, 338 | deleteOnRelease T.BOOL, 339 | kByt **T.ILockBytes) 340 | 341 | GetHGlobalFromStream func(stm *T.STREAM, global *T.HGLOBAL) 342 | 343 | CreateStreamOnHGlobal func( 344 | global T.HGLOBAL, 345 | deleteOnRelease T.BOOL, 346 | stm **T.STREAM) 347 | 348 | OleDoAutoConvert func(stg *T.IStorage, clsidNew *T.CLSID) 349 | 350 | OleGetAutoConvert func( 351 | clsIdOld T.REFCLSID, clsidNew *T.CLSID) 352 | 353 | OleSetAutoConvert func( 354 | clsIdOld T.REFCLSID, clsIdNew T.REFCLSID) 355 | 356 | GetConvertStg func(stg *T.IStorage) 357 | 358 | SetConvertStg func(stg *T.IStorage, convert T.BOOL) 359 | 360 | OleConvertIStorageToOLESTREAMEx func( 361 | stg *T.IStorage, 362 | format T.CLIPFORMAT, 363 | width T.LONG, 364 | height T.LONG, 365 | size T.DWORD, 366 | medium *T.STGMEDIUM, 367 | olestm *T.OLESTREAM) 368 | 369 | OleConvertOLESTREAMToIStorageEx func( 370 | olestm *T.OLESTREAM, 371 | stg *T.IStorage, 372 | format *T.CLIPFORMAT, 373 | width *T.LONG, 374 | height *T.LONG, 375 | size *T.DWORD, 376 | medium *T.STGMEDIUM) 377 | ) 378 | 379 | var Ole2Apis = Apis{ 380 | {"CreateDataAdviseHolder", &CreateDataAdviseHolder}, 381 | {"CreateILockBytesOnHGlobal", &CreateILockBytesOnHGlobal}, 382 | {"CreateOleAdviseHolder", &CreateOleAdviseHolder}, 383 | {"CreateStreamOnHGlobal", &CreateStreamOnHGlobal}, 384 | {"DoDragDrop", &DoDragDrop}, 385 | {"GetConvertStg", &GetConvertStg}, 386 | {"GetHGlobalFromILockBytes", &GetHGlobalFromILockBytes}, 387 | {"GetHGlobalFromStream", &GetHGlobalFromStream}, 388 | {"IsAccelerator", &IsAccelerator}, 389 | {"OleBuildVersion", &OleBuildVersion}, 390 | {"OleConvertIStorageToOLESTREAM", &OleConvertIStorageToOLESTREAM}, 391 | {"OleConvertIStorageToOLESTREAMEx", &OleConvertIStorageToOLESTREAMEx}, 392 | {"OleConvertOLESTREAMToIStorage", &OleConvertOLESTREAMToIStorage}, 393 | {"OleConvertOLESTREAMToIStorageEx", &OleConvertOLESTREAMToIStorageEx}, 394 | {"OleCreate", &OleCreate}, 395 | {"OleCreateDefaultHandler", &OleCreateDefaultHandler}, 396 | {"OleCreateEmbeddingHelper", &OleCreateEmbeddingHelper}, 397 | {"OleCreateEx", &OleCreateEx}, 398 | {"OleCreateFromData", &OleCreateFromData}, 399 | {"OleCreateFromDataEx", &OleCreateFromDataEx}, 400 | {"OleCreateFromFile", &OleCreateFromFile}, 401 | {"OleCreateFromFileEx", &OleCreateFromFileEx}, 402 | {"OleCreateLink", &OleCreateLink}, 403 | {"OleCreateLinkEx", &OleCreateLinkEx}, 404 | {"OleCreateLinkFromData", &OleCreateLinkFromData}, 405 | {"OleCreateLinkFromDataEx", &OleCreateLinkFromDataEx}, 406 | {"OleCreateLinkToFile", &OleCreateLinkToFile}, 407 | {"OleCreateLinkToFileEx", &OleCreateLinkToFileEx}, 408 | {"OleCreateMenuDescriptor", &OleCreateMenuDescriptor}, 409 | {"OleCreateStaticFromData", &OleCreateStaticFromData}, 410 | {"OleDestroyMenuDescriptor", &OleDestroyMenuDescriptor}, 411 | {"OleDoAutoConvert", &OleDoAutoConvert}, 412 | {"OleDraw", &OleDraw}, 413 | {"OleDuplicateData", &OleDuplicateData}, 414 | {"OleFlushClipboard", &OleFlushClipboard}, 415 | {"OleGetAutoConvert", &OleGetAutoConvert}, 416 | {"OleGetClipboard", &OleGetClipboard}, 417 | {"OleGetIconOfClass", &OleGetIconOfClass}, 418 | {"OleGetIconOfFile", &OleGetIconOfFile}, 419 | {"OleInitialize", &OleInitialize}, 420 | {"OleIsCurrentClipboard", &OleIsCurrentClipboard}, 421 | {"OleIsRunning", &OleIsRunning}, 422 | {"OleLoad", &OleLoad}, 423 | {"OleLoadFromStream", &OleLoadFromStream}, 424 | {"OleLockRunning", &OleLockRunning}, 425 | {"OleMetafilePictFromIconAndLabel", &OleMetafilePictFromIconAndLabel}, 426 | {"OleNoteObjectVisible", &OleNoteObjectVisible}, 427 | {"OleQueryCreateFromData", &OleQueryCreateFromData}, 428 | {"OleQueryLinkFromData", &OleQueryLinkFromData}, 429 | {"OleRegEnumFormatEtc", &OleRegEnumFormatEtc}, 430 | {"OleRegEnumVerbs", &OleRegEnumVerbs}, 431 | {"OleRegGetMiscStatus", &OleRegGetMiscStatus}, 432 | {"OleRegGetUserType", &OleRegGetUserType}, 433 | {"OleRun", &OleRun}, 434 | {"OleSave", &OleSave}, 435 | {"OleSaveToStream", &OleSaveToStream}, 436 | {"OleSetAutoConvert", &OleSetAutoConvert}, 437 | {"OleSetClipboard", &OleSetClipboard}, 438 | {"OleSetContainedObject", &OleSetContainedObject}, 439 | {"OleSetMenuDescriptor", &OleSetMenuDescriptor}, 440 | {"OleTranslateAccelerator", &OleTranslateAccelerator}, 441 | {"OleUninitialize", &OleUninitialize}, 442 | {"ReadClassStg", &ReadClassStg}, 443 | {"ReadClassStm", &ReadClassStm}, 444 | {"ReadFmtUserTypeStg", &ReadFmtUserTypeStg}, 445 | {"RegisterDragDrop", &RegisterDragDrop}, 446 | {"ReleaseStgMedium", &ReleaseStgMedium}, 447 | {"RevokeDragDrop", &RevokeDragDrop}, 448 | {"SetConvertStg", &SetConvertStg}, 449 | {"WriteClassStg", &WriteClassStg}, 450 | {"WriteClassStm", &WriteClassStm}, 451 | {"WriteFmtUserTypeStg", &WriteFmtUserTypeStg}, 452 | } 453 | -------------------------------------------------------------------------------- /ole2/ole2_test.go: -------------------------------------------------------------------------------- 1 | package ole2 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(Ole2Apis) 8 | AddApis(ObjBaseApis) 9 | AddApis(OleAutoApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/commctrl/commctrl.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package commctrl provides API definitions for accessing 5 | //comctl32.dll. 6 | package commctrl 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | . "github.com/tHinqa/outside/types" 11 | T "github.com/tHinqa/outside-windows/types" 12 | _ "github.com/tHinqa/outside/win32/comctl32" 13 | ) 14 | 15 | var ( 16 | InitMUILanguage func(uiLang T.LANGID) 17 | 18 | GetMUILanguage func() (T.LANGID, error) 19 | 20 | InitCommonControls func() 21 | 22 | InitCommonControlsEx func(*T.INITCOMMONCONTROLSEX) (T.BOOL, error) 23 | 24 | ImageList_Create func( 25 | x, y int, flags T.UINT, initial, grow int) (T.HIMAGELIST, error) 26 | 27 | ImageList_Destroy func(iml T.HIMAGELIST) (T.BOOL, error) 28 | 29 | ImageList_GetImageCount func(iml T.HIMAGELIST) (int, error) 30 | 31 | ImageList_SetImageCount func( 32 | iml T.HIMAGELIST, newCount T.UINT) (T.BOOL, error) 33 | 34 | ImageList_Add func( 35 | iml T.HIMAGELIST, image T.HBITMAP, mask T.HBITMAP) (int, error) 36 | 37 | ImageList_ReplaceIcon func( 38 | iml T.HIMAGELIST, i int, icon T.HICON) (int, error) 39 | 40 | ImageList_SetBkColor func( 41 | iml T.HIMAGELIST, clrBk T.COLORREF) (T.COLORREF, error) 42 | 43 | ImageList_GetBkColor func(iml T.HIMAGELIST) (T.COLORREF, error) 44 | 45 | ImageList_SetOverlayImage func( 46 | iml T.HIMAGELIST, T.Image, Overlay int) (T.BOOL, error) 47 | 48 | ImageList_Draw func( 49 | iml T.HIMAGELIST, i int, dst T.HDC, x, y int, style T.UINT) (T.BOOL, error) 50 | 51 | ImageList_Replace func( 52 | iml T.HIMAGELIST, i int, image T.HBITMAP, mask T.HBITMAP) (T.BOOL, error) 53 | 54 | ImageList_AddMasked func( 55 | iml T.HIMAGELIST, image T.HBITMAP, mask T.COLORREF) (int, error) 56 | 57 | ImageList_DrawEx func( 58 | iml T.HIMAGELIST, 59 | i int, 60 | dst T.HDC, 61 | x, y, dx, dy int, 62 | bk, fg T.COLORREF, 63 | style T.UINT) (T.BOOL, error) 64 | 65 | ImageList_DrawIndirect func( 66 | imldp *T.IMAGELISTDRAWPARAMS) (T.BOOL, error) 67 | 68 | ImageList_Remove func(iml T.HIMAGELIST, i int) (T.BOOL, error) 69 | 70 | ImageList_GetIcon func( 71 | himl T.HIMAGELIST, i int, flags T.UINT) (T.HICON, error) 72 | 73 | ImageList_LoadImage func( 74 | i T.HINSTANCE, 75 | bmp VString, 76 | cx, grow int, 77 | mask T.COLORREF, 78 | typ, flags T.UINT) (T.HIMAGELIST, error) 79 | 80 | ImageList_BeginDrag func( 81 | imlTrack T.HIMAGELIST, Track, xHotspot, yHotspot int) (T.BOOL, error) 82 | 83 | ImageList_EndDrag func() 84 | 85 | ImageList_DragEnter func(lock T.HWND, x, y int) (T.BOOL, error) 86 | 87 | ImageList_DragLeave func(lock T.HWND) (T.BOOL, error) 88 | 89 | ImageList_DragMove func(x, y int) (T.BOOL, error) 90 | 91 | ImageList_SetDragCursorImage func( 92 | imlDrag T.HIMAGELIST, drag, xHotspot, yHotspot int) (T.BOOL, error) 93 | 94 | ImageList_DragShowNolock func(show T.BOOL) (T.BOOL, error) 95 | 96 | ImageList_GetDragImage func( 97 | pt, hotspot *T.POINT) (T.HIMAGELIST, error) 98 | 99 | ImageList_Read func(stm *T.STREAM) (T.HIMAGELIST, error) 100 | 101 | ImageList_Write func(iml T.HIMAGELIST, stm *T.STREAM) (T.BOOL, error) 102 | 103 | ImageList_ReadEx func( 104 | flags T.DWORD, stm *T.STREAM, riid T.REFIID, v **T.VOID) (T.HRESULT, error) 105 | 106 | ImageList_WriteEx func( 107 | iml T.HIMAGELIST, flags T.DWORD, stm *T.STREAM) (T.HRESULT, error) 108 | 109 | ImageList_GetIconSize func(iml T.HIMAGELIST, x, y *int) (T.BOOL, error) 110 | 111 | ImageList_SetIconSize func(iml T.HIMAGELIST, x, y int) (T.BOOL, error) 112 | 113 | ImageList_GetImageInfo func( 114 | iml T.HIMAGELIST, i int, imageInfo *T.IMAGEINFO) (T.BOOL, error) 115 | 116 | ImageList_Merge func(iml1 T.HIMAGELIST, 117 | i1 int, iml2 T.HIMAGELIST, i2, x, y int) (T.HIMAGELIST, error) 118 | 119 | ImageList_Duplicate func(iml T.HIMAGELIST) (T.HIMAGELIST, error) 120 | 121 | ImageList_Copy func(dst T.HIMAGELIST, iDst int, 122 | src T.HIMAGELIST, iSrc int, flags T.UINT) (T.BOOL, error) 123 | 124 | CreateToolbarEx func( 125 | wnd T.HWND, 126 | s T.DWORD, 127 | id T.UINT, 128 | bitmaps int, 129 | bmInst T.HINSTANCE, 130 | bmID T.UINT_PTR, 131 | buttons *T.TBBUTTON, 132 | numButtons, 133 | xButton, 134 | yButton, 135 | xBitmap, 136 | yBitmap int, 137 | structSize T.UINT) (T.HWND, error) 138 | 139 | CreateMappedBitmap func( 140 | instance T.HINSTANCE, 141 | bitmap T.INT_PTR, 142 | flags T.UINT, 143 | colorMap *T.COLORMAP, 144 | NumMaps int) (T.HBITMAP, error) 145 | 146 | DrawStatusText func( 147 | dc T.HDC, rc *T.RECT, text VString, flags T.UINT) 148 | 149 | CreateStatusWindow func( 150 | style T.LONG, text VString, parent T.HWND, id T.UINT) (T.HWND, error) 151 | 152 | MenuHelp func( 153 | msg T.UINT, 154 | wParam T.WPARAM, 155 | lParam T.LPARAM, 156 | mainMenu T.HMENU, 157 | inst T.HINSTANCE, 158 | status T.HWND, 159 | ids *T.UINT) 160 | 161 | ShowHideMenuCtl func(wnd T.HWND, flags T.UINT_PTR, info *T.INT) (T.BOOL, error) 162 | 163 | GetEffectiveClientRect func(wnd T.HWND, rc *T.RECT, info *T.INT) 164 | 165 | MakeDragList func(lb T.HWND) (T.BOOL, error) 166 | 167 | DrawInsert func(parent, lb T.HWND, item int) 168 | 169 | LBItemFromPt func(lb T.HWND, pt T.POINT, autoScroll T.BOOL) (int, error) 170 | 171 | CreateUpDownControl func( 172 | style T.DWORD, 173 | x, y, cx, cy int, 174 | parent T.HWND, 175 | id int, 176 | inst T.HINSTANCE, 177 | buddy T.HWND, 178 | upper, lower, pos int) (T.HWND, error) 179 | 180 | DSA_Create func(item , itemGrow int) (T.HDSA, error) 181 | 182 | DSA_Destroy func(dsa T.HDSA) (T.BOOL, error) 183 | 184 | DSA_DestroyCallback func( 185 | dsa T.HDSA, cb *T.FNDSAENUMCALLBACK, data *T.VOID) 186 | 187 | DSA_GetItemPtr func(dsa T.HDSA, i int) (*T.VOID, error) 188 | 189 | DSA_InsertItem func(dsa T.HDSA, i int, pitem *T.VOID) (int, error) 190 | 191 | DPA_Create func(itemGrow int) (T.HDPA, error) 192 | 193 | DPA_Destroy func(dpa T.HDPA) (T.BOOL, error) 194 | 195 | DPA_DeletePtr func(dpa T.HDPA, i int) (*T.VOID, error) 196 | 197 | DPA_DeleteAllPtrs func(dpa T.HDPA) (T.BOOL, error) 198 | 199 | DPA_EnumCallback func( 200 | dpa T.HDPA, cb *T.FNDPAENUMCALLBACK, data *T.VOID) 201 | 202 | DPA_DestroyCallback func( 203 | dpa T.HDPA, cb *T.FNDPAENUMCALLBACK, data *T.VOID) 204 | 205 | DPA_SetPtr func(dpa T.HDPA, i int, p *T.VOID) (T.BOOL, error) 206 | 207 | DPA_InsertPtr func(dpa T.HDPA, i int, p *T.VOID) (int, error) 208 | 209 | DPA_GetPtr func(dpa T.HDPA, i T.INT_PTR) (*T.VOID, error) 210 | 211 | DPA_Sort func( 212 | dpa T.HDPA, compare *T.FNDPACOMPARE, lParam T.LPARAM) (T.BOOL, error) 213 | 214 | DPA_Search func( 215 | dpa T.HDPA, 216 | find *T.VOID, 217 | start int, 218 | compare *T.FNDPACOMPARE, 219 | lParam T.LPARAM, 220 | options T.UINT) (int, error) 221 | 222 | Str_SetPtrW func( 223 | ps *T.WString, //TODO(t):This gets free'd !!! 224 | s T.WString) (T.BOOL, error) 225 | 226 | //Was named _TrackMouseEvent and TrackMouseEvent 227 | //clashes with winuser.TrackMouseEvent 228 | TrackMouseEvent_ func( 229 | EventTrack *T.TRACKMOUSEEVENT) (T.BOOL, error) 230 | 231 | FlatSB_EnableScrollBar func(T.HWND, int, T.UINT) (T.BOOL, error) 232 | 233 | FlatSB_ShowScrollBar func(w T.HWND, code int, f T.BOOL) (T.BOOL, error) 234 | 235 | FlatSB_GetScrollRange func(w T.HWND, code int, s, e *T.INT) (T.BOOL, error) 236 | 237 | FlatSB_GetScrollInfo func( 238 | w T.HWND, code int, si *T.SCROLLINFO) (T.BOOL, error) 239 | 240 | FlatSB_GetScrollPos func(w T.HWND, code int) (int, error) 241 | 242 | FlatSB_GetScrollProp func(w T.HWND, propIndex int, p *T.INT) (T.BOOL, error) 243 | 244 | FlatSB_SetScrollPos func( 245 | w T.HWND, code, pos int, fRedraw T.BOOL) (int, error) 246 | 247 | FlatSB_SetScrollInfo func( 248 | w T.HWND, code int, si *T.SCROLLINFO, fRedraw T.BOOL) (int, error) 249 | 250 | FlatSB_SetScrollRange func( 251 | w T.HWND, code, min, max int, fRedraw T.BOOL) (int, error) 252 | 253 | FlatSB_SetScrollProp func( 254 | w T.HWND, index T.UINT, newValue T.INT_PTR, f T.BOOL) (T.BOOL, error) 255 | 256 | InitializeFlatSB func(T.HWND) (T.BOOL, error) 257 | 258 | UninitializeFlatSB func(T.HWND) (T.HRESULT, error) 259 | 260 | SetWindowSubclass func( 261 | Wnd T.HWND, 262 | Subclass T.SUBCLASSPROC, 263 | IdSubclass T.UINT_PTR, 264 | RefData T.DWORD_PTR) (T.BOOL, error) 265 | 266 | GetWindowSubclass func( 267 | Wnd T.HWND, 268 | Subclass T.SUBCLASSPROC, 269 | IdSubclass T.UINT_PTR, 270 | RefData *T.DWORD_PTR) (T.BOOL, error) 271 | 272 | RemoveWindowSubclass func( 273 | hWnd T.HWND, 274 | Subclass T.SUBCLASSPROC, 275 | IdSubclass T.UINT_PTR) (T.BOOL, error) 276 | 277 | DefSubclassProc func( 278 | Wnd T.HWND, 279 | Msg T.UINT, 280 | WParam T.WPARAM, 281 | LParam T.LPARAM) (T.LRESULT, error) 282 | 283 | DrawShadowText func( 284 | dc T.HDC, 285 | Text T.WString, 286 | c T.UINT, 287 | rc *T.RECT, 288 | Flags T.DWORD, 289 | clrText, clrShadow T.COLORREF, 290 | xOffset, yOffset int) (int, error) 291 | ) 292 | 293 | /* 294 | func ImageList_AddIcon(iml T.HIMAGELIST, icon T.HICON) int { 295 | return ImageList_ReplaceIcon(iml, -1, icon) 296 | } 297 | 298 | func ImageList_RemoveAll(iml T.HIMAGELIST) T.BOOL { 299 | return ImageList_Remove(iml, -1) 300 | } 301 | 302 | func ImageList_ExtractIcon(hi int, iml T.HIMAGELIST, i int) T.HICON { 303 | return ImageList_GetIcon(iml, i, 0) 304 | } 305 | 306 | func ImageList_LoadBitmap(i T.HINSTANCE, bmp VString, cx, T.Grow int, T.Mask T.COLORREF) { 307 | var IMAGE_BITMAP T.UINT = 0 //TODO(t):FIX 308 | ImageList_LoadImage(i, bmp, cx, Grow, Mask, IMAGE_BITMAP, 0) 309 | } 310 | 311 | #ifdef _WIN64 312 | T.BOOL FlatSB_GetScrollPropPtr func(T.HWND, int propIndex, T.PINT_PTR); 313 | #else 314 | #define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp 315 | #endif 316 | #define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp 317 | */ 318 | 319 | //TODO(t):Not on XP 320 | //{"ImageList_ReadEx", &ImageList_ReadEx}, 321 | //{"GetWindowSubclass", &GetWindowSubclass}, 322 | 323 | //TODO(t): Where 324 | //{"DrawShadowText", &DrawShadowText}, 325 | //{"ImageList_WriteEx", &ImageList_WriteEx}, 326 | 327 | var CommCtrlANSIApis = outside.Apis{ 328 | {"CreateStatusWindowA", &CreateStatusWindow}, 329 | {"DrawStatusTextA", &DrawStatusText}, 330 | } 331 | 332 | var CommCtrlUnicodeApis = outside.Apis{ 333 | {"CreateStatusWindowW", &CreateStatusWindow}, 334 | {"DrawStatusTextW", &DrawStatusText}, 335 | } 336 | 337 | var CommCtrlApis = outside.Apis{ 338 | {"CreateMappedBitmap", &CreateMappedBitmap}, 339 | {"CreateToolbarEx", &CreateToolbarEx}, 340 | {"CreateUpDownControl", &CreateUpDownControl}, 341 | {"DefSubclassProc", &DefSubclassProc}, 342 | {"DPA_Create", &DPA_Create}, 343 | {"DPA_DeleteAllPtrs", &DPA_DeleteAllPtrs}, 344 | {"DPA_DeletePtr", &DPA_DeletePtr}, 345 | {"DPA_Destroy", &DPA_Destroy}, 346 | {"DPA_DestroyCallback", &DPA_DestroyCallback}, 347 | {"DPA_EnumCallback", &DPA_EnumCallback}, 348 | {"DPA_GetPtr", &DPA_GetPtr}, 349 | {"DPA_InsertPtr", &DPA_InsertPtr}, 350 | {"DPA_Search", &DPA_Search}, 351 | {"DPA_SetPtr", &DPA_SetPtr}, 352 | {"DPA_Sort", &DPA_Sort}, 353 | {"DrawInsert", &DrawInsert}, 354 | {"DSA_Create", &DSA_Create}, 355 | {"DSA_Destroy", &DSA_Destroy}, 356 | {"DSA_DestroyCallback", &DSA_DestroyCallback}, 357 | {"DSA_GetItemPtr", &DSA_GetItemPtr}, 358 | {"DSA_InsertItem", &DSA_InsertItem}, 359 | {"FlatSB_EnableScrollBar", &FlatSB_EnableScrollBar}, 360 | {"FlatSB_GetScrollInfo", &FlatSB_GetScrollInfo}, 361 | {"FlatSB_GetScrollPos", &FlatSB_GetScrollPos}, 362 | {"FlatSB_GetScrollProp", &FlatSB_GetScrollProp}, 363 | {"FlatSB_GetScrollRange", &FlatSB_GetScrollRange}, 364 | {"FlatSB_SetScrollInfo", &FlatSB_SetScrollInfo}, 365 | {"FlatSB_SetScrollPos", &FlatSB_SetScrollPos}, 366 | {"FlatSB_SetScrollProp", &FlatSB_SetScrollProp}, 367 | {"FlatSB_SetScrollRange", &FlatSB_SetScrollRange}, 368 | {"FlatSB_ShowScrollBar", &FlatSB_ShowScrollBar}, 369 | {"GetEffectiveClientRect", &GetEffectiveClientRect}, 370 | {"GetMUILanguage", &GetMUILanguage}, 371 | {"ImageList_Add", &ImageList_Add}, 372 | {"ImageList_AddMasked", &ImageList_AddMasked}, 373 | {"ImageList_BeginDrag", &ImageList_BeginDrag}, 374 | {"ImageList_Copy", &ImageList_Copy}, 375 | {"ImageList_Create", &ImageList_Create}, 376 | {"ImageList_Destroy", &ImageList_Destroy}, 377 | {"ImageList_DragEnter", &ImageList_DragEnter}, 378 | {"ImageList_DragLeave", &ImageList_DragLeave}, 379 | {"ImageList_DragMove", &ImageList_DragMove}, 380 | {"ImageList_DragShowNolock", &ImageList_DragShowNolock}, 381 | {"ImageList_Draw", &ImageList_Draw}, 382 | {"ImageList_DrawEx", &ImageList_DrawEx}, 383 | {"ImageList_DrawIndirect", &ImageList_DrawIndirect}, 384 | {"ImageList_Duplicate", &ImageList_Duplicate}, 385 | {"ImageList_EndDrag", &ImageList_EndDrag}, 386 | {"ImageList_GetBkColor", &ImageList_GetBkColor}, 387 | {"ImageList_GetDragImage", &ImageList_GetDragImage}, 388 | {"ImageList_GetIcon", &ImageList_GetIcon}, 389 | {"ImageList_GetIconSize", &ImageList_GetIconSize}, 390 | {"ImageList_GetImageCount", &ImageList_GetImageCount}, 391 | {"ImageList_GetImageInfo", &ImageList_GetImageInfo}, 392 | {"ImageList_LoadImage", &ImageList_LoadImage}, 393 | {"ImageList_Merge", &ImageList_Merge}, 394 | {"ImageList_Read", &ImageList_Read}, 395 | {"ImageList_Remove", &ImageList_Remove}, 396 | {"ImageList_Replace", &ImageList_Replace}, 397 | {"ImageList_ReplaceIcon", &ImageList_ReplaceIcon}, 398 | {"ImageList_SetBkColor", &ImageList_SetBkColor}, 399 | {"ImageList_SetDragCursorImage", &ImageList_SetDragCursorImage}, 400 | {"ImageList_SetIconSize", &ImageList_SetIconSize}, 401 | {"ImageList_SetImageCount", &ImageList_SetImageCount}, 402 | {"ImageList_SetOverlayImage", &ImageList_SetOverlayImage}, 403 | {"ImageList_Write", &ImageList_Write}, 404 | {"InitCommonControls", &InitCommonControls}, 405 | {"InitCommonControlsEx", &InitCommonControlsEx}, 406 | {"InitializeFlatSB", &InitializeFlatSB}, 407 | {"InitMUILanguage", &InitMUILanguage}, 408 | {"LBItemFromPt", &LBItemFromPt}, 409 | {"MakeDragList", &MakeDragList}, 410 | {"MenuHelp", &MenuHelp}, 411 | {"RemoveWindowSubclass", &RemoveWindowSubclass}, 412 | {"SetWindowSubclass", &SetWindowSubclass}, 413 | {"ShowHideMenuCtl", &ShowHideMenuCtl}, 414 | {"Str_SetPtrW", &Str_SetPtrW}, 415 | {"_TrackMouseEvent", &TrackMouseEvent_}, 416 | {"UninitializeFlatSB", &UninitializeFlatSB}, 417 | } 418 | -------------------------------------------------------------------------------- /returnError/commctrl/commctrl_test.go: -------------------------------------------------------------------------------- 1 | package commctrl 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(CommCtrlApis) 8 | AddApis(CommCtrlANSIApis) 9 | AddApis(CommCtrlUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/dde/dde.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package dde provides API definitions for accessing dde 5 | //functions of user32.dll. 6 | package dde 7 | 8 | import ( 9 | . "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | _ "github.com/tHinqa/outside/win32/user32" 12 | ) 13 | 14 | var ( 15 | DdeSetQualityOfService func( 16 | Client T.HWND, 17 | QosNew *T.SECURITY_QUALITY_OF_SERVICE, 18 | QosPrev *T.SECURITY_QUALITY_OF_SERVICE) (T.BOOL, error) 19 | 20 | ImpersonateDdeClientWindow func( 21 | Client T.HWND, 22 | Server T.HWND) (T.BOOL, error) 23 | 24 | PackDDElParam func( 25 | Msg T.UINT, 26 | Lo T.UINT_PTR, 27 | Hi T.UINT_PTR) (T.LPARAM, error) 28 | 29 | UnpackDDElParam func( 30 | Msg T.UINT, 31 | LParam T.LPARAM, 32 | Lo *T.UINT_PTR, 33 | Hi *T.UINT_PTR) (T.BOOL, error) 34 | 35 | FreeDDElParam func( 36 | Msg T.UINT, 37 | LParam T.LPARAM) (T.BOOL, error) 38 | 39 | ReuseDDElParam func( 40 | LParam T.LPARAM, 41 | In T.UINT, 42 | Out T.UINT, 43 | Lo T.UINT_PTR, 44 | Hi T.UINT_PTR) (T.LPARAM, error) 45 | ) 46 | 47 | var DdeANSIApis = Apis{ 48 | {"DdeCreateStringHandleA", &DdeCreateStringHandle}, 49 | {"DdeInitializeA", &DdeInitialize}, 50 | {"DdeQueryStringA", &DdeQueryString}, 51 | } 52 | 53 | var DdeUnicodeApis = Apis{ 54 | {"DdeCreateStringHandleW", &DdeCreateStringHandle}, 55 | {"DdeInitializeW", &DdeInitialize}, 56 | {"DdeQueryStringW", &DdeQueryString}, 57 | } 58 | 59 | var DdeApis = Apis{ 60 | {"DdeAbandonTransaction", &DdeAbandonTransaction}, 61 | {"DdeAccessData", &DdeAccessData}, 62 | {"DdeAddData", &DdeAddData}, 63 | {"DdeClientTransaction", &DdeClientTransaction}, 64 | {"DdeCmpStringHandles", &DdeCmpStringHandles}, 65 | {"DdeConnect", &DdeConnect}, 66 | {"DdeConnectList", &DdeConnectList}, 67 | {"DdeCreateDataHandle", &DdeCreateDataHandle}, 68 | {"DdeDisconnect", &DdeDisconnect}, 69 | {"DdeDisconnectList", &DdeDisconnectList}, 70 | {"DdeEnableCallback", &DdeEnableCallback}, 71 | {"DdeFreeDataHandle", &DdeFreeDataHandle}, 72 | {"DdeFreeStringHandle", &DdeFreeStringHandle}, 73 | {"DdeGetData", &DdeGetData}, 74 | {"DdeGetLastError", &DdeGetLastError}, 75 | {"DdeImpersonateClient", &DdeImpersonateClient}, 76 | {"DdeKeepStringHandle", &DdeKeepStringHandle}, 77 | {"DdeNameService", &DdeNameService}, 78 | {"DdePostAdvise", &DdePostAdvise}, 79 | {"DdeQueryConvInfo", &DdeQueryConvInfo}, 80 | {"DdeQueryNextServer", &DdeQueryNextServer}, 81 | {"DdeReconnect", &DdeReconnect}, 82 | {"DdeSetQualityOfService", &DdeSetQualityOfService}, 83 | {"DdeSetUserHandle", &DdeSetUserHandle}, 84 | {"DdeUnaccessData", &DdeUnaccessData}, 85 | {"DdeUninitialize", &DdeUninitialize}, 86 | {"FreeDDElParam", &FreeDDElParam}, 87 | {"ImpersonateDdeClientWindow", &ImpersonateDdeClientWindow}, 88 | {"PackDDElParam", &PackDDElParam}, 89 | {"ReuseDDElParam", &ReuseDDElParam}, 90 | {"UnpackDDElParam", &UnpackDDElParam}, 91 | } 92 | -------------------------------------------------------------------------------- /returnError/dde/dde_test.go: -------------------------------------------------------------------------------- 1 | package dde 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(DdeApis) 8 | AddApis(DdeANSIApis) 9 | AddApis(DdeUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/dde/ddeml.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | package dde 5 | 6 | import ( 7 | . "github.com/tHinqa/outside-windows/types" 8 | . "github.com/tHinqa/outside/types" 9 | _ "github.com/tHinqa/outside/win32/user32" 10 | ) 11 | 12 | var ( 13 | DdeInitialize func( 14 | Inst *DWORD, 15 | Callback *FNCALLBACK, 16 | Cmd DWORD, 17 | Res DWORD) (UINT, error) 18 | 19 | DdeUninitialize func(Inst DWORD) (BOOL, error) 20 | 21 | DdeConnectList func( 22 | Inst DWORD, 23 | Service HSZ, 24 | Topic HSZ, 25 | ConvList HCONVLIST, 26 | CC *CONVCONTEXT) (HCONVLIST, error) 27 | 28 | DdeQueryNextServer func( 29 | ConvList HCONVLIST, ConvPrev HCONV) (HCONV, error) 30 | 31 | DdeDisconnectList func(ConvList HCONVLIST) (BOOL, error) 32 | 33 | DdeConnect func( 34 | Inst DWORD, 35 | Service HSZ, 36 | Topic HSZ, 37 | CC *CONVCONTEXT) (HCONV, error) 38 | 39 | DdeDisconnect func(Conv HCONV) (BOOL, error) 40 | 41 | DdeReconnect func(Conv HCONV) (HCONV, error) 42 | 43 | DdeQueryConvInfo func( 44 | Conv HCONV, 45 | Transaction DWORD, 46 | ConvInfo *CONVINFO) (UINT, error) 47 | 48 | DdeSetUserHandle func( 49 | Conv HCONV, Id DWORD, User DWORD_PTR) (BOOL, error) 50 | 51 | DdeAbandonTransaction func( 52 | Inst DWORD, Conv HCONV, Transaction DWORD) (BOOL, error) 53 | 54 | DdePostAdvise func( 55 | Inst DWORD, Topic HSZ, Item HSZ) (BOOL, error) 56 | 57 | DdeEnableCallback func( 58 | Inst DWORD, Conv HCONV, Cmd UINT) (BOOL, error) 59 | 60 | DdeImpersonateClient func(Conv HCONV) (BOOL, error) 61 | 62 | DdeNameService func( 63 | Inst DWORD, S1 HSZ, S2 HSZ, Cmd UINT) (HDDEDATA, error) 64 | 65 | DdeClientTransaction func( 66 | Data *BYTE, 67 | cData DWORD, 68 | Conv HCONV, 69 | Item HSZ, 70 | Fmt UINT, 71 | Type UINT, 72 | Timeout DWORD, 73 | Result *DWORD) (HDDEDATA, error) 74 | 75 | DdeCreateDataHandle func( 76 | Inst DWORD, 77 | Src *BYTE, 78 | C DWORD, 79 | Off DWORD, 80 | Item HSZ, 81 | Fmt UINT, 82 | Cmd UINT) (HDDEDATA, error) 83 | 84 | DdeAddData func( 85 | Data HDDEDATA, 86 | Src *BYTE, 87 | C DWORD, 88 | Off DWORD) (HDDEDATA, error) 89 | 90 | DdeGetData func( 91 | Data HDDEDATA, 92 | Dst *BYTE, 93 | Max DWORD, 94 | Off DWORD) (DWORD, error) 95 | 96 | DdeAccessData func( 97 | Data HDDEDATA, DataSize *DWORD) (*BYTE, error) 98 | 99 | DdeUnaccessData func(Data HDDEDATA) (BOOL, error) 100 | 101 | DdeFreeDataHandle func(Data HDDEDATA) (BOOL, error) 102 | 103 | DdeGetLastError func(Inst DWORD) (UINT, error) 104 | 105 | DdeCreateStringHandle func( 106 | Inst DWORD, S VString, CodePage int) (HSZ, error) 107 | 108 | DdeQueryString func( 109 | Inst DWORD, 110 | S HSZ, 111 | OS OVString, 112 | hMax DWORD, 113 | CodePage int) (DWORD, error) 114 | 115 | DdeFreeStringHandle func(Inst DWORD, S HSZ) (BOOL, error) 116 | 117 | DdeKeepStringHandle func(Inst DWORD, S HSZ) (BOOL, error) 118 | 119 | DdeCmpStringHandles func(S1 HSZ, S2 HSZ) (int, error) 120 | ) 121 | -------------------------------------------------------------------------------- /returnError/lzexpand/lzexpand.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package lzexpand provides API definitions for accessing 5 | //the lz functions in kernel32.dll. 6 | package lzexpand 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/kernel32" 13 | ) 14 | 15 | var ( 16 | LZStart func() (T.INT, error) 17 | 18 | LZDone func() (T.VOID, error) 19 | 20 | CopyLZFile func(T.INT, T.INT) (T.LONG, error) 21 | 22 | LZCopy func(T.INT, T.INT) (T.LONG, error) 23 | 24 | LZInit func(T.INT) (T.INT, error) 25 | 26 | GetExpandedName func(VString, OVString) (T.INT, error) 27 | 28 | LZOpenFile func(OVString, *T.OFSTRUCT, T.WORD) (T.INT, error) 29 | 30 | LZSeek func(T.INT, T.LONG, T.INT) (T.LONG, error) 31 | 32 | LZRead func(T.INT, T.AString, T.INT) (T.INT, error) 33 | 34 | LZClose func(T.INT) (T.VOID, error) 35 | ) 36 | 37 | var LZExpandANSIApis = outside.Apis{ 38 | {"GetExpandedNameA", &GetExpandedName}, 39 | {"LZOpenFileA", &LZOpenFile}, 40 | } 41 | 42 | var LZExpandUnicodeApis = outside.Apis{ 43 | {"GetExpandedNameW", &GetExpandedName}, 44 | {"LZOpenFileW", &LZOpenFile}, 45 | } 46 | 47 | var LZExpandApis = outside.Apis{ 48 | {"CopyLZFile", &CopyLZFile}, 49 | {"LZClose", &LZClose}, 50 | {"LZCopy", &LZCopy}, 51 | {"LZDone", &LZDone}, 52 | {"LZInit", &LZInit}, 53 | {"LZRead", &LZRead}, 54 | {"LZSeek", &LZSeek}, 55 | {"LZStart", &LZStart}, 56 | } 57 | -------------------------------------------------------------------------------- /returnError/lzexpand/lzexpand_test.go: -------------------------------------------------------------------------------- 1 | package lzexpand 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(LZExpandApis) 8 | AddApis(LZExpandANSIApis) 9 | AddApis(LZExpandUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/mmsystem/mmsystem_test.go: -------------------------------------------------------------------------------- 1 | package mmsystem 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(MMSystemApis) 8 | AddApis(MMSystemANSIApis) 9 | AddApis(MMSystemUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/nb30/nb30.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package netbios provides the API definition for accessing 5 | //netbios in netapi32.dll. 6 | package nb30 7 | 8 | //TODO(t): on 7/8 there is a netbios.dll with ep Netbios too 9 | 10 | import ( 11 | . "github.com/tHinqa/outside" 12 | T "github.com/tHinqa/outside-windows/types" 13 | _ "github.com/tHinqa/outside/win32/netapi32" 14 | ) 15 | 16 | var ( 17 | Netbios func(pncb *T.NCB) (T.UCHAR, error) 18 | ) 19 | 20 | var Nb30Apis = Apis{{"Netbios", &Netbios}} 21 | -------------------------------------------------------------------------------- /returnError/nb30/nb30_test.go: -------------------------------------------------------------------------------- 1 | package nb30 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(Nb30Apis) 8 | } 9 | -------------------------------------------------------------------------------- /returnError/ole2/ole2.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | package ole2 5 | 6 | import ( 7 | . "github.com/tHinqa/outside" 8 | T "github.com/tHinqa/outside-windows/types" 9 | _ "github.com/tHinqa/outside/win32/ole32" 10 | ) 11 | 12 | var ( 13 | CreateDataAdviseHolder func(daHolder **T.IDataAdviseHolder) 14 | 15 | OleBuildVersion func() (T.DWORD, error) 16 | 17 | ReadClassStg func(stg *T.IStorage, clsId *T.CLSID) 18 | 19 | WriteClassStg func(stg *T.IStorage, clsId T.REFCLSID) 20 | 21 | ReadClassStm func(stm *T.IStream, clsId *T.CLSID) 22 | 23 | WriteClassStm func(stm *T.IStream, clsId T.REFCLSID) 24 | 25 | WriteFmtUserTypeStg func( 26 | stg *T.IStorage, 27 | cf T.CLIPFORMAT, 28 | userType *T.OLESTR) 29 | 30 | ReadFmtUserTypeStg func( 31 | stg *T.IStorage, 32 | cf *T.CLIPFORMAT, 33 | userType **T.OLESTR) 34 | 35 | OleInitialize func(pvReserved *T.VOID) 36 | 37 | OleUninitialize func() 38 | 39 | OleQueryLinkFromData func(srcDataObject *T.IDataObject) 40 | 41 | OleQueryCreateFromData func(srcDataObject *T.IDataObject) 42 | 43 | OleCreate func( 44 | rClsId T.REFCLSID, 45 | riid T.REFIID, 46 | renderopt T.DWORD, 47 | formatEtc *T.FORMATETC, 48 | clientSite *T.IOleClientSite, 49 | stg *T.IStorage, 50 | obj **T.VOID) 51 | 52 | OleCreateEx func( 53 | rClsId T.REFCLSID, 54 | riid T.REFIID, 55 | flags T.DWORD, 56 | renderopt T.DWORD, 57 | formats T.ULONG, 58 | advf *T.DWORD, 59 | formatEtc *T.FORMATETC, 60 | adviseSink *T.IAdviseSink, 61 | connection *T.DWORD, 62 | clientSite *T.IOleClientSite, 63 | stg *T.IStorage, 64 | obj **T.VOID) 65 | 66 | OleCreateFromData func( 67 | srcDataObj *T.IDataObject, 68 | riid T.REFIID, 69 | renderopt T.DWORD, 70 | formatEtc *T.FORMATETC, 71 | clientSite *T.IOleClientSite, 72 | stg *T.IStorage, 73 | obj **T.VOID) 74 | 75 | OleCreateFromDataEx func( 76 | srcDataObj *T.IDataObject, 77 | riid T.REFIID, 78 | flags T.DWORD, 79 | renderopt T.DWORD, 80 | formats T.ULONG, 81 | advf *T.DWORD, 82 | formatEtc *T.FORMATETC, 83 | adviseSink *T.IAdviseSink, 84 | connection *T.DWORD, 85 | clientSite *T.IOleClientSite, 86 | stg *T.IStorage, 87 | obj **T.VOID) 88 | 89 | OleCreateLinkFromData func( 90 | srcDataObj *T.IDataObject, 91 | riid T.REFIID, 92 | renderopt T.DWORD, 93 | formatEtc *T.FORMATETC, 94 | clientSite *T.IOleClientSite, 95 | stg *T.IStorage, 96 | obj **T.VOID) 97 | 98 | OleCreateLinkFromDataEx func( 99 | srcDataObj *T.IDataObject, 100 | riid T.REFIID, 101 | flags T.DWORD, 102 | renderopt T.DWORD, 103 | formats T.ULONG, 104 | advf *T.DWORD, 105 | formatEtc *T.FORMATETC, 106 | adviseSink *T.IAdviseSink, 107 | connection *T.DWORD, 108 | clientSite *T.IOleClientSite, 109 | stg *T.IStorage, 110 | obj **T.VOID) 111 | 112 | OleCreateStaticFromData func( 113 | srcDataObj *T.IDataObject, 114 | riid T.REFIID, 115 | renderopt T.DWORD, 116 | formatEtc *T.FORMATETC, 117 | clientSite *T.IOleClientSite, 118 | stg *T.IStorage, 119 | obj **T.VOID) 120 | 121 | OleCreateLink func( 122 | pmkLinkSrc *T.IMoniker, 123 | riid T.REFIID, 124 | renderopt T.DWORD, 125 | formatEtc *T.FORMATETC, 126 | clientSite *T.IOleClientSite, 127 | stg *T.IStorage, 128 | obj **T.VOID) 129 | 130 | OleCreateLinkEx func( 131 | pmkLinkSrc *T.IMoniker, 132 | riid T.REFIID, 133 | flags T.DWORD, 134 | renderopt T.DWORD, 135 | formats T.ULONG, 136 | advf *T.DWORD, 137 | formatEtc *T.FORMATETC, 138 | adviseSink *T.IAdviseSink, 139 | connection *T.DWORD, 140 | clientSite *T.IOleClientSite, 141 | stg *T.IStorage, 142 | obj **T.VOID) 143 | 144 | OleCreateLinkToFile func( 145 | fileName *T.OLESTR, 146 | riid T.REFIID, 147 | renderopt T.DWORD, 148 | formatEtc *T.FORMATETC, 149 | clientSite *T.IOleClientSite, 150 | stg *T.IStorage, 151 | obj **T.VOID) 152 | 153 | OleCreateLinkToFileEx func( 154 | lpszFileName *T.OLESTR, 155 | riid T.REFIID, 156 | flags T.DWORD, 157 | renderopt T.DWORD, 158 | formats T.ULONG, 159 | advf *T.DWORD, 160 | formatEtc *T.FORMATETC, 161 | adviseSink *T.IAdviseSink, 162 | connection *T.DWORD, 163 | clientSite *T.IOleClientSite, 164 | stg *T.IStorage, 165 | obj **T.VOID) 166 | 167 | OleCreateFromFile func( 168 | clsId T.REFCLSID, 169 | fileName *T.OLESTR, 170 | riid T.REFIID, 171 | renderopt T.DWORD, 172 | formatEtc *T.FORMATETC, 173 | clientSite *T.IOleClientSite, 174 | stg *T.IStorage, 175 | obj **T.VOID) 176 | 177 | OleCreateFromFileEx func( 178 | rClsId T.REFCLSID, 179 | fileName *T.OLESTR, 180 | riid T.REFIID, 181 | flags T.DWORD, 182 | renderopt T.DWORD, 183 | formats T.ULONG, 184 | advf *T.DWORD, 185 | formatEtc *T.FORMATETC, 186 | adviseSink *T.IAdviseSink, 187 | connection *T.DWORD, 188 | clientSite *T.IOleClientSite, 189 | stg *T.IStorage, 190 | obj **T.VOID) 191 | 192 | OleLoad func( 193 | stg *T.IStorage, 194 | riid T.REFIID, 195 | clientSite *T.IOleClientSite, 196 | obj **T.VOID) 197 | 198 | OleSave func( 199 | ps *T.IPersistStorage, 200 | stg *T.IStorage, 201 | sameAsLoad T.BOOL) 202 | 203 | OleLoadFromStream func( 204 | stm *T.STREAM, 205 | riidInterface T.REFIID, 206 | obj **T.VOID) 207 | 208 | OleSaveToStream func( 209 | ps *T.IPersistStream, stm *T.STREAM) 210 | 211 | OleSetContainedObject func( 212 | unknown *T.IUnknown, contained T.BOOL) 213 | 214 | OleNoteObjectVisible func( 215 | unknown *T.IUnknown, Visible T.BOOL) 216 | 217 | RegisterDragDrop func( 218 | wnd T.HWND, dropTarget *T.IDropTarget) 219 | 220 | RevokeDragDrop func(wnd T.HWND) 221 | 222 | DoDragDrop func( 223 | dataObj *T.IDataObject, 224 | dropSource *T.IDropSource, 225 | okEffects T.DWORD, 226 | effect *T.DWORD) 227 | 228 | OleSetClipboard func(dataObj *T.IDataObject) 229 | 230 | OleGetClipboard func(dataObj **T.IDataObject) 231 | 232 | OleFlushClipboard func() 233 | 234 | OleIsCurrentClipboard func(dataObj *T.IDataObject) 235 | 236 | OleCreateMenuDescriptor func( 237 | menuCombined T.HMENU, 238 | menuWidths *T.OLEMENUGROUPWIDTHS) (T.HOLEMENU, error) 239 | 240 | OleSetMenuDescriptor func( 241 | olemenu T.HOLEMENU, 242 | wndFrame T.HWND, 243 | wndActiveObject T.HWND, 244 | frame *T.IOleInPlaceFrame, 245 | activeObj *T.IOleInPlaceActiveObject) 246 | 247 | OleDestroyMenuDescriptor func(olemenu T.HOLEMENU) 248 | 249 | OleTranslateAccelerator func( 250 | frame *T.IOleInPlaceFrame, 251 | frameInfo *T.OLEINPLACEFRAMEINFO, 252 | msg *T.MSG) 253 | 254 | OleDuplicateData func( 255 | src T.HANDLE, format T.CLIPFORMAT, flags T.UINT) (T.HANDLE, error) 256 | 257 | OleDraw func( 258 | unknown *T.IUnknown, 259 | aspect T.DWORD, 260 | dcDraw T.HDC, 261 | rcBounds *T.RECT) 262 | 263 | OleRun func(unknown *T.IUnknown) 264 | 265 | OleIsRunning func(object *T.IOleObject) (T.BOOL, error) 266 | 267 | OleLockRunning func( 268 | unknown *T.IUnknown, 269 | lock T.BOOL, 270 | lastUnlockCloses T.BOOL) 271 | 272 | ReleaseStgMedium func(*T.STGMEDIUM) 273 | 274 | CreateOleAdviseHolder func(oaHolder **T.IOleAdviseHolder) 275 | 276 | OleCreateDefaultHandler func( 277 | clsId T.REFCLSID, 278 | unkOuter *T.IUnknown, 279 | riid T.REFIID, 280 | obj **T.VOID) 281 | 282 | OleCreateEmbeddingHelper func( 283 | clsId T.REFCLSID, 284 | unkOuter *T.IUnknown, 285 | flags T.DWORD, 286 | cf *T.IClassFactory, 287 | riid T.REFIID, 288 | obj **T.VOID) 289 | 290 | IsAccelerator func( 291 | accel T.HACCEL, 292 | accelEntries int, 293 | msg *T.MSG, 294 | cmd *T.WORD) (T.BOOL, error) 295 | 296 | OleGetIconOfFile func( 297 | path *T.OLESTR, useFileAsLabel T.BOOL) (T.HGLOBAL, error) 298 | 299 | OleGetIconOfClass func( 300 | rClsId T.REFCLSID, 301 | label *T.OLESTR, 302 | useTypeAsLabel T.BOOL) (T.HGLOBAL, error) 303 | 304 | OleMetafilePictFromIconAndLabel func( 305 | icon T.HICON, 306 | label *T.OLESTR, 307 | sourceFile *T.OLESTR, 308 | iconIndex T.UINT) (T.HGLOBAL, error) 309 | 310 | OleRegGetUserType func( 311 | clsId T.REFCLSID, 312 | formOfType T.DWORD, 313 | userType **T.OLESTR) 314 | 315 | OleRegGetMiscStatus func( 316 | clsId T.REFCLSID, aspect T.DWORD, status *T.DWORD) 317 | 318 | OleRegEnumFormatEtc func( 319 | clsId T.REFCLSID, 320 | direction T.DWORD, 321 | enum **T.IEnumFORMATETC) 322 | 323 | OleRegEnumVerbs func(clsId T.REFCLSID, enum **T.IEnumOLEVERB) 324 | 325 | OleConvertOLESTREAMToIStorage func( 326 | olestream *T.OLESTREAM, 327 | stg *T.IStorage, 328 | td *T.DVTARGETDEVICE) 329 | 330 | OleConvertIStorageToOLESTREAM func( 331 | stg *T.IStorage, Olestream *T.OLESTREAM) 332 | 333 | GetHGlobalFromILockBytes func( 334 | kByt *T.ILockBytes, global *T.HGLOBAL) 335 | 336 | CreateILockBytesOnHGlobal func( 337 | global T.HGLOBAL, 338 | deleteOnRelease T.BOOL, 339 | kByt **T.ILockBytes) 340 | 341 | GetHGlobalFromStream func(stm *T.STREAM, global *T.HGLOBAL) 342 | 343 | CreateStreamOnHGlobal func( 344 | global T.HGLOBAL, 345 | deleteOnRelease T.BOOL, 346 | stm **T.STREAM) 347 | 348 | OleDoAutoConvert func(stg *T.IStorage, clsidNew *T.CLSID) 349 | 350 | OleGetAutoConvert func( 351 | clsIdOld T.REFCLSID, clsidNew *T.CLSID) 352 | 353 | OleSetAutoConvert func( 354 | clsIdOld T.REFCLSID, clsIdNew T.REFCLSID) 355 | 356 | GetConvertStg func(stg *T.IStorage) 357 | 358 | SetConvertStg func(stg *T.IStorage, convert T.BOOL) 359 | 360 | OleConvertIStorageToOLESTREAMEx func( 361 | stg *T.IStorage, 362 | format T.CLIPFORMAT, 363 | width T.LONG, 364 | height T.LONG, 365 | size T.DWORD, 366 | medium *T.STGMEDIUM, 367 | olestm *T.OLESTREAM) 368 | 369 | OleConvertOLESTREAMToIStorageEx func( 370 | olestm *T.OLESTREAM, 371 | stg *T.IStorage, 372 | format *T.CLIPFORMAT, 373 | width *T.LONG, 374 | height *T.LONG, 375 | size *T.DWORD, 376 | medium *T.STGMEDIUM) 377 | ) 378 | 379 | var Ole2Apis = Apis{ 380 | {"CreateDataAdviseHolder", &CreateDataAdviseHolder}, 381 | {"CreateILockBytesOnHGlobal", &CreateILockBytesOnHGlobal}, 382 | {"CreateOleAdviseHolder", &CreateOleAdviseHolder}, 383 | {"CreateStreamOnHGlobal", &CreateStreamOnHGlobal}, 384 | {"DoDragDrop", &DoDragDrop}, 385 | {"GetConvertStg", &GetConvertStg}, 386 | {"GetHGlobalFromILockBytes", &GetHGlobalFromILockBytes}, 387 | {"GetHGlobalFromStream", &GetHGlobalFromStream}, 388 | {"IsAccelerator", &IsAccelerator}, 389 | {"OleBuildVersion", &OleBuildVersion}, 390 | {"OleConvertIStorageToOLESTREAM", &OleConvertIStorageToOLESTREAM}, 391 | {"OleConvertIStorageToOLESTREAMEx", &OleConvertIStorageToOLESTREAMEx}, 392 | {"OleConvertOLESTREAMToIStorage", &OleConvertOLESTREAMToIStorage}, 393 | {"OleConvertOLESTREAMToIStorageEx", &OleConvertOLESTREAMToIStorageEx}, 394 | {"OleCreate", &OleCreate}, 395 | {"OleCreateDefaultHandler", &OleCreateDefaultHandler}, 396 | {"OleCreateEmbeddingHelper", &OleCreateEmbeddingHelper}, 397 | {"OleCreateEx", &OleCreateEx}, 398 | {"OleCreateFromData", &OleCreateFromData}, 399 | {"OleCreateFromDataEx", &OleCreateFromDataEx}, 400 | {"OleCreateFromFile", &OleCreateFromFile}, 401 | {"OleCreateFromFileEx", &OleCreateFromFileEx}, 402 | {"OleCreateLink", &OleCreateLink}, 403 | {"OleCreateLinkEx", &OleCreateLinkEx}, 404 | {"OleCreateLinkFromData", &OleCreateLinkFromData}, 405 | {"OleCreateLinkFromDataEx", &OleCreateLinkFromDataEx}, 406 | {"OleCreateLinkToFile", &OleCreateLinkToFile}, 407 | {"OleCreateLinkToFileEx", &OleCreateLinkToFileEx}, 408 | {"OleCreateMenuDescriptor", &OleCreateMenuDescriptor}, 409 | {"OleCreateStaticFromData", &OleCreateStaticFromData}, 410 | {"OleDestroyMenuDescriptor", &OleDestroyMenuDescriptor}, 411 | {"OleDoAutoConvert", &OleDoAutoConvert}, 412 | {"OleDraw", &OleDraw}, 413 | {"OleDuplicateData", &OleDuplicateData}, 414 | {"OleFlushClipboard", &OleFlushClipboard}, 415 | {"OleGetAutoConvert", &OleGetAutoConvert}, 416 | {"OleGetClipboard", &OleGetClipboard}, 417 | {"OleGetIconOfClass", &OleGetIconOfClass}, 418 | {"OleGetIconOfFile", &OleGetIconOfFile}, 419 | {"OleInitialize", &OleInitialize}, 420 | {"OleIsCurrentClipboard", &OleIsCurrentClipboard}, 421 | {"OleIsRunning", &OleIsRunning}, 422 | {"OleLoad", &OleLoad}, 423 | {"OleLoadFromStream", &OleLoadFromStream}, 424 | {"OleLockRunning", &OleLockRunning}, 425 | {"OleMetafilePictFromIconAndLabel", &OleMetafilePictFromIconAndLabel}, 426 | {"OleNoteObjectVisible", &OleNoteObjectVisible}, 427 | {"OleQueryCreateFromData", &OleQueryCreateFromData}, 428 | {"OleQueryLinkFromData", &OleQueryLinkFromData}, 429 | {"OleRegEnumFormatEtc", &OleRegEnumFormatEtc}, 430 | {"OleRegEnumVerbs", &OleRegEnumVerbs}, 431 | {"OleRegGetMiscStatus", &OleRegGetMiscStatus}, 432 | {"OleRegGetUserType", &OleRegGetUserType}, 433 | {"OleRun", &OleRun}, 434 | {"OleSave", &OleSave}, 435 | {"OleSaveToStream", &OleSaveToStream}, 436 | {"OleSetAutoConvert", &OleSetAutoConvert}, 437 | {"OleSetClipboard", &OleSetClipboard}, 438 | {"OleSetContainedObject", &OleSetContainedObject}, 439 | {"OleSetMenuDescriptor", &OleSetMenuDescriptor}, 440 | {"OleTranslateAccelerator", &OleTranslateAccelerator}, 441 | {"OleUninitialize", &OleUninitialize}, 442 | {"ReadClassStg", &ReadClassStg}, 443 | {"ReadClassStm", &ReadClassStm}, 444 | {"ReadFmtUserTypeStg", &ReadFmtUserTypeStg}, 445 | {"RegisterDragDrop", &RegisterDragDrop}, 446 | {"ReleaseStgMedium", &ReleaseStgMedium}, 447 | {"RevokeDragDrop", &RevokeDragDrop}, 448 | {"SetConvertStg", &SetConvertStg}, 449 | {"WriteClassStg", &WriteClassStg}, 450 | {"WriteClassStm", &WriteClassStm}, 451 | {"WriteFmtUserTypeStg", &WriteFmtUserTypeStg}, 452 | } 453 | -------------------------------------------------------------------------------- /returnError/ole2/ole2_test.go: -------------------------------------------------------------------------------- 1 | package ole2 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(Ole2Apis) 8 | AddApis(ObjBaseApis) 9 | AddApis(OleAutoApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/shellapi/shellapi.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package shellapi provides API definitions for accessing 5 | //shell32.dll. 6 | package shellapi 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/shell32" 13 | ) 14 | 15 | var ( 16 | DragQueryFile func(T.HDROP, T.UINT, VString, T.UINT) (T.UINT, error) 17 | 18 | DragQueryPoint func(T.HDROP, *T.POINT) (T.BOOL, error) 19 | 20 | DragFinish func(T.HDROP) 21 | 22 | DragAcceptFiles func(T.HWND, T.BOOL) 23 | 24 | ShellExecute func(wnd T.HWND, 25 | operation, file, parameters, directory VString, 26 | showCmd T.INT) (T.HINSTANCE, error) 27 | 28 | FindExecutable func( 29 | file, directory VString, result OVString) (T.HINSTANCE, error) 30 | 31 | CommandLineToArgvW func( 32 | cmdLine T.WString, numArgs *int) (*T.WString, error) 33 | //TODO(t):*WString was *LPWSTR 34 | 35 | ShellAbout func( 36 | wnd T.HWND, 37 | app, otherStuff VString, 38 | icon T.HICON) (T.INT, error) 39 | 40 | DuplicateIcon func(Inst T.HINSTANCE, icon T.HICON) (T.HICON, error) 41 | 42 | ExtractAssociatedIcon func( 43 | inst T.HINSTANCE, iconPath VString, icon *T.WORD) (T.HICON, error) 44 | 45 | ExtractAssociatedIconEx func( 46 | inst T.HINSTANCE, 47 | iconPath VString, 48 | iconIndex *T.WORD, 49 | iconId *T.WORD) (T.HICON, error) 50 | 51 | ExtractIcon func( 52 | inst T.HINSTANCE, 53 | exeFileName VString, 54 | iconIndex T.UINT) (T.HICON, error) 55 | 56 | ExtractIconEx func( 57 | file VString, 58 | iconIndex int, 59 | large, small *T.HICON, 60 | icons T.UINT) (T.UINT, error) 61 | 62 | SHFreeNameMappings func(hNameMappings T.HANDLE) 63 | 64 | WinExecError func( 65 | wnd T.HWND, 66 | err int, 67 | fileName, 68 | title VString) 69 | 70 | SHCreateProcessAsUserW func( 71 | scpi *T.SHCREATEPROCESSINFOW) (T.BOOL, error) 72 | 73 | SHGetFileInfoA func( 74 | path T.AString, 75 | fileAttributes T.DWORD, 76 | sfi *T.SHFILEINFOA, 77 | fileInfo, flags T.UINT) (T.DWORD_PTR, error) 78 | 79 | SHGetFileInfoW func( 80 | path T.WString, 81 | fileAttributes T.DWORD, 82 | sfi *T.SHFILEINFOW, 83 | fileInfo, flags T.UINT) (T.DWORD_PTR, error) 84 | 85 | SHGetDiskFreeSpaceEx func( 86 | directoryName VString, 87 | freeBytesAvailableToCaller, 88 | totalNumberOfBytes, 89 | totalNumberOfFreeBytes *T.ULARGE_INTEGER) (T.BOOL, error) 90 | 91 | SHGetNewLinkInfo func( 92 | linkTo, dir VString, 93 | name OVString, 94 | mustCopy *T.BOOL, 95 | flags T.UINT) (T.BOOL, error) 96 | 97 | SHInvokePrinterCommand func( 98 | wnd T.HWND, 99 | action T.UINT, 100 | buf1, buf2 VString, 101 | modal T.BOOL) (T.BOOL, error) 102 | 103 | IsLFNDrive func(Path VString) (T.BOOL, error) 104 | 105 | SHEnumerateUnreadMailAccounts func( 106 | keyUser T.HKEY, 107 | index T.DWORD, 108 | mailAddress OVString, 109 | cMailAddress int) 110 | 111 | SHGetUnreadMailCount func( 112 | keyUser T.HKEY, 113 | mailAddress VString, 114 | count *T.DWORD, 115 | fileTime *T.FILETIME, 116 | shellExecuteCommand OVString, 117 | cShellExecuteCommand int) 118 | 119 | SHSetUnreadMailCount func( 120 | mailAddress VString, 121 | count T.DWORD, 122 | shellExecuteCommand T.AString) 123 | 124 | SHTestTokenMembership func( 125 | token T.HANDLE, rid T.ULONG) (T.BOOL, error) 126 | 127 | SHGetImageList func( 128 | imageList int, riid T.REFIID, Obj **T.VOID) 129 | ) 130 | 131 | var ShellApiANSIApis = outside.Apis{ 132 | {"ExtractAssociatedIconA", &ExtractAssociatedIcon}, 133 | {"ExtractAssociatedIconExA", &ExtractAssociatedIconEx}, 134 | {"ExtractIconA", &ExtractIcon}, 135 | {"ExtractIconExA", &ExtractIconEx}, 136 | {"FindExecutableA", &FindExecutable}, 137 | {"ShellAboutA", &ShellAbout}, 138 | {"ShellExecuteA", &ShellExecute}, 139 | {"SHGetDiskFreeSpaceExA", &SHGetDiskFreeSpaceEx}, 140 | {"SHGetFileInfoA", &SHGetFileInfoA}, 141 | {"SHInvokePrinterCommandA", &SHInvokePrinterCommand}, 142 | } 143 | 144 | var ShellApiUnicodeApis = outside.Apis{ 145 | {"ExtractAssociatedIconW", &ExtractAssociatedIcon}, 146 | {"ExtractAssociatedIconExW", &ExtractAssociatedIconEx}, 147 | {"ExtractIconW", &ExtractIcon}, 148 | {"ExtractIconExW", &ExtractIconEx}, 149 | {"FindExecutableW", &FindExecutable}, 150 | {"ShellAboutW", &ShellAbout}, 151 | {"ShellExecuteW", &ShellExecute}, 152 | {"SHGetDiskFreeSpaceExW", &SHGetDiskFreeSpaceEx}, 153 | {"SHGetFileInfoW", &SHGetFileInfoW}, 154 | {"SHInvokePrinterCommandW", &SHInvokePrinterCommand}, 155 | } 156 | 157 | //NOTR(t):Not implemented 158 | //{"WinExecErrorA", &WinExecError}, 159 | //{"WinExecErrorW", &WinExecError}, 160 | 161 | //TODO(t): Not on XP 162 | //{"SHEnumerateUnreadMailAccounts", &SHEnumerateUnreadMailAccounts}, 163 | //{"SHGetUnreadMailCount", &SHGetUnreadMailCount}, 164 | //{"SHSetUnreadMailCount", &SHSetUnreadMailCount}, 165 | 166 | var ShellApiApis = outside.Apis{ 167 | {"CommandLineToArgvW", &CommandLineToArgvW}, 168 | {"DragAcceptFiles", &DragAcceptFiles}, 169 | {"DragFinish", &DragFinish}, 170 | {"DragQueryFile", &DragQueryFile}, 171 | {"DragQueryPoint", &DragQueryPoint}, 172 | {"DuplicateIcon", &DuplicateIcon}, 173 | {"IsLFNDrive", &IsLFNDrive}, 174 | {"SHCreateProcessAsUserW", &SHCreateProcessAsUserW}, 175 | {"SHFreeNameMappings", &SHFreeNameMappings}, 176 | {"SHGetImageList", &SHGetImageList}, 177 | {"SHGetNewLinkInfo", &SHGetNewLinkInfo}, 178 | {"SHTestTokenMembership", &SHTestTokenMembership}, 179 | } 180 | -------------------------------------------------------------------------------- /returnError/shellapi/shellapi_test.go: -------------------------------------------------------------------------------- 1 | package shellapi 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(ShellApiApis) 8 | AddApis(ShellApiANSIApis) 9 | AddApis(ShellApiUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/winbase/winbase_test.go: -------------------------------------------------------------------------------- 1 | package winbase 2 | 3 | import ( 4 | . "github.com/tHinqa/outside" 5 | . "github.com/tHinqa/outside-windows/types" 6 | . "github.com/tHinqa/outside/types" 7 | "syscall" 8 | "testing" 9 | ) 10 | 11 | import . "unsafe" 12 | 13 | func init() { 14 | AddApis(WinBaseApis) 15 | AddApis(WinBaseANSIApis) 16 | //AddApis(WinBaseUnicodeApis) 17 | SI.Len = DWORD(Sizeof(SI)) 18 | } 19 | 20 | var SI STARTUPINFO 21 | var ST SYSTEMTIME 22 | 23 | func Test(t *testing.T) { 24 | Buffer := new(MEMORYSTATUSEX) 25 | SetStructSize(Buffer) 26 | ret, _ := GlobalMemoryStatusEx(Buffer) 27 | t.Logf("%v %+v\n", ret, *Buffer) 28 | 29 | var a, i DWORD 30 | var b BOOL 31 | gsta, _ := GetSystemTimeAdjustment(&a, &i, &b) 32 | t.Logf("%v %v %v %v\n", gsta, a, i, b) 33 | 34 | GetStartupInfo(&SI) 35 | GetStartupInfo(&SI) 36 | t.Logf("%+v\n%s\n%s\n", SI, *SI.Desktop, *SI.Title) 37 | 38 | GetLocalTime(&ST) 39 | t.Logf("%+v\n", ST) 40 | } 41 | 42 | func BenchmarkSyscall(b *testing.B) { 43 | var d = syscall.MustLoadDLL("kernel32.dll") 44 | defer d.Release() 45 | var G = d.MustFindProc("GetStartupInfoA") 46 | for i := 0; i < b.N; i++ { 47 | syscall.Syscall(G.Addr(), 1, (uintptr)(Pointer(&SI)), 0, 0) 48 | } 49 | } 50 | 51 | func BenchmarkReflectStartupInfo(b *testing.B) { 52 | for i := 0; i < b.N; i++ { 53 | GetStartupInfo(&SI) 54 | } 55 | } 56 | 57 | func BenchmarkVanillaStartupInfo(b *testing.B) { 58 | var d = syscall.MustLoadDLL("kernel32.dll") 59 | var G = d.MustFindProc("GetStartupInfoA") 60 | defer d.Release() 61 | for i := 0; i < b.N; i++ { 62 | syscall.Syscall(G.Addr(), 1, (uintptr)(Pointer(&SI)), 0, 0) 63 | s := OVString(CStrToString((uintptr)(Pointer(SI.Desktop)))) 64 | SI.Desktop = &s 65 | s = OVString(CStrToString((uintptr)(Pointer(SI.Title)))) 66 | SI.Title = &s 67 | } 68 | } 69 | 70 | func BenchmarkReflectSystemTime(b *testing.B) { 71 | for i := 0; i < b.N; i++ { 72 | GetLocalTime(&ST) 73 | } 74 | } 75 | 76 | func BenchmarkVanillaSystemTime(b *testing.B) { 77 | var d = syscall.MustLoadDLL("kernel32.dll") 78 | var G = d.MustFindProc("GetLocalTime") 79 | defer d.Release() 80 | for i := 0; i < b.N; i++ { 81 | syscall.Syscall(G.Addr(), 1, (uintptr)(Pointer(&ST)), 0, 0) 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /returnError/wincon/wincom_test.go: -------------------------------------------------------------------------------- 1 | package wincon 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinConApis) 8 | AddApis(WinConANSIApis) 9 | AddApis(WinConUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/wincon/wincon.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package wincon provides API definitions for accessing the console 5 | //functions in kernel32.dll. 6 | package wincon 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/kernel32" 13 | ) 14 | 15 | var ( 16 | PeekConsoleInput func( 17 | consoleInput T.HANDLE, 18 | buffer *T.INPUT_RECORD, 19 | length T.DWORD, 20 | numberOfEventsRead *T.DWORD) (T.BOOL, error) 21 | 22 | ReadConsoleInput func( 23 | consoleInput T.HANDLE, 24 | buffer *T.INPUT_RECORD, 25 | length T.DWORD, 26 | numberOfEventsRead *T.DWORD) (T.BOOL, error) 27 | 28 | WriteConsoleInput func( 29 | consoleInput T.HANDLE, 30 | buffer *T.INPUT_RECORD, 31 | length T.DWORD, 32 | numberOfEventsWritten *T.DWORD) (T.BOOL, error) 33 | 34 | ReadConsoleOutput func( 35 | consoleOutput T.HANDLE, 36 | buffer *T.CHAR_INFO, 37 | bufferSize T.COORD, 38 | bufferCoord T.COORD, 39 | readRegion *T.SMALL_RECT) (T.BOOL, error) 40 | 41 | WriteConsoleOutput func( 42 | consoleOutput T.HANDLE, 43 | buffer *T.CHAR_INFO, 44 | bufferSize T.COORD, 45 | bufferCoord T.COORD, 46 | writeRegion *T.SMALL_RECT) (T.BOOL, error) 47 | 48 | ReadConsoleOutputCharacter func( 49 | hConsoleOutput T.HANDLE, 50 | character OVString, 51 | length T.DWORD, 52 | readCoord T.COORD, 53 | numberOfCharsRead *T.DWORD) (T.BOOL, error) 54 | 55 | ReadConsoleOutputAttribute func( 56 | consoleOutput T.HANDLE, 57 | attribute *T.WORD, 58 | length T.DWORD, 59 | readCoord T.COORD, 60 | numberOfAttrsRead *T.DWORD) (T.BOOL, error) 61 | 62 | WriteConsoleOutputCharacter func( 63 | consoleOutput T.HANDLE, 64 | character VString, 65 | length T.DWORD, 66 | writeCoord T.COORD, 67 | numberOfCharsWritten *T.DWORD) (T.BOOL, error) 68 | 69 | WriteConsoleOutputAttribute func( 70 | consoleOutput T.HANDLE, 71 | attribute *T.WORD, 72 | length T.DWORD, 73 | writeCoord T.COORD, 74 | numberOfAttrsWritten *T.DWORD) (T.BOOL, error) 75 | 76 | FillConsoleOutputCharacter func( 77 | consoleOutput T.HANDLE, 78 | character T.VChar, 79 | length T.DWORD, 80 | writeCoord T.COORD, 81 | numberOfCharsWritten *T.DWORD) (T.BOOL, error) 82 | 83 | FillConsoleOutputAttribute func( 84 | consoleOutput T.HANDLE, 85 | attribute T.WORD, 86 | length T.DWORD, 87 | writeCoord T.COORD, 88 | numberOfAttrsWritten *T.DWORD) (T.BOOL, error) 89 | 90 | GetConsoleMode func( 91 | consoleHandle T.HANDLE, 92 | mode *T.DWORD) (T.BOOL, error) 93 | 94 | GetNumberOfConsoleInputEvents func( 95 | consoleInput T.HANDLE, 96 | numberOfEvents *T.DWORD) (T.BOOL, error) 97 | 98 | GetConsoleScreenBufferInfo func( 99 | consoleOutput T.HANDLE, 100 | consoleScreenBufferInfo *T.CONSOLE_SCREEN_BUFFER_INFO) (T.BOOL, error) 101 | 102 | GetLargestConsoleWindowSize func( 103 | consoleOutput T.HANDLE) (T.COORD, error) 104 | 105 | GetConsoleCursorInfo func( 106 | consoleOutput T.HANDLE, 107 | consoleCursorInfo *T.CONSOLE_CURSOR_INFO) (T.BOOL, error) 108 | 109 | GetCurrentConsoleFont func( 110 | consoleOutput T.HANDLE, 111 | maximumWindow T.BOOL, 112 | consoleCurrentFont *T.CONSOLE_FONT_INFO) (T.BOOL, error) 113 | 114 | GetConsoleFontSize func( 115 | consoleOutput T.HANDLE, 116 | font T.DWORD) (T.COORD, error) 117 | 118 | GetConsoleSelectionInfo func( 119 | consoleSelectionInfo *T.CONSOLE_SELECTION_INFO) (T.BOOL, error) 120 | 121 | GetNumberOfConsoleMouseButtons func( 122 | numberOfMouseButtons *T.DWORD) (T.BOOL, error) 123 | 124 | SetConsoleMode func( 125 | consoleHandle T.HANDLE, 126 | mode T.DWORD) (T.BOOL, error) 127 | 128 | SetConsoleActiveScreenBuffer func( 129 | consoleOutput T.HANDLE) (T.BOOL, error) 130 | 131 | FlushConsoleInputBuffer func( 132 | consoleInput T.HANDLE) (T.BOOL, error) 133 | 134 | SetConsoleScreenBufferSize func( 135 | consoleOutput T.HANDLE, 136 | size T.COORD) (T.BOOL, error) 137 | 138 | SetConsoleCursorPosition func( 139 | consoleOutput T.HANDLE, 140 | cursorPosition T.COORD) (T.BOOL, error) 141 | 142 | SetConsoleCursorInfo func( 143 | consoleOutput T.HANDLE, 144 | consoleCursorInfo *T.CONSOLE_CURSOR_INFO) (T.BOOL, error) 145 | 146 | ScrollConsoleScreenBuffer func( 147 | consoleOutput T.HANDLE, 148 | scrollRectangle *T.SMALL_RECT, 149 | clipRectangle *T.SMALL_RECT, 150 | destinationOrigin T.COORD, 151 | fill *T.CHAR_INFO) (T.BOOL, error) 152 | 153 | SetConsoleWindowInfo func( 154 | consoleOutput T.HANDLE, 155 | absolute T.BOOL, 156 | consoleWindow *T.SMALL_RECT) (T.BOOL, error) 157 | 158 | SetConsoleTextAttribute func( 159 | consoleOutput T.HANDLE, attributes T.WORD) (T.BOOL, error) 160 | 161 | SetConsoleCtrlHandler func( 162 | handlerRoutine *T.HANDLER_ROUTINE, add T.BOOL) (T.BOOL, error) 163 | 164 | GenerateConsoleCtrlEvent func( 165 | ctrlEvent T.DWORD, processGroupId T.DWORD) (T.BOOL, error) 166 | 167 | AllocConsole func() (T.BOOL, error) 168 | 169 | FreeConsole func() (T.BOOL, error) 170 | 171 | AttachConsole func(processId T.DWORD) (T.BOOL, error) 172 | 173 | GetConsoleTitle func( 174 | consoleTitle OVString, size T.DWORD) (T.DWORD, error) 175 | 176 | SetConsoleTitle func( 177 | consoleTitle VString) (T.BOOL, error) 178 | 179 | ReadConsole func( 180 | consoleInputh T.HANDLE, 181 | buffer *T.VOID, 182 | numberOfCharsToRead T.DWORD, 183 | numberOfCharsRead *T.DWORD, 184 | reserved *T.VOID) (T.BOOL, error) 185 | 186 | WriteConsole func( 187 | consoleOutput T.HANDLE, 188 | buffer *T.VOID, 189 | numberOfCharsToWrite T.DWORD, 190 | numberOfCharsWritten *T.DWORD, 191 | reserved *T.VOID) (T.BOOL, error) 192 | 193 | CreateConsoleScreenBuffer func( 194 | desiredAccess T.DWORD, 195 | shareMode T.DWORD, 196 | securityAttributes *T.SECURITY_ATTRIBUTES, 197 | flags T.DWORD, 198 | screenBufferData *T.VOID) (T.HANDLE, error) 199 | 200 | GetConsoleCP func() (T.UINT, error) 201 | 202 | SetConsoleCP func(codePageID T.UINT) (T.BOOL, error) 203 | 204 | GetConsoleOutputCP func() (T.UINT, error) 205 | 206 | SetConsoleOutputCP func(wCodePageID T.UINT) (T.BOOL, error) 207 | 208 | GetConsoleDisplayMode func(lpModeFlags *T.DWORD) (T.BOOL, error) 209 | 210 | GetConsoleWindow func() (T.HWND, error) 211 | 212 | GetConsoleProcessList func( 213 | processList *T.DWORD, processCount T.DWORD) (T.DWORD, error) 214 | 215 | AddConsoleAlias func( 216 | source, Target, exeName VString) (T.BOOL, error) 217 | 218 | GetConsoleAlias func( 219 | source VString, 220 | targetBuffer OVString, 221 | targetBufferLength T.DWORD, 222 | exeName VString) (T.DWORD, error) 223 | 224 | GetConsoleAliasesLength func(exeName VString) (T.DWORD, error) 225 | 226 | GetConsoleAliasExesLength func() (T.DWORD, error) 227 | 228 | GetConsoleAliases func( 229 | aliasBuffer OVString, 230 | aliasBufferLength T.DWORD, 231 | exeName VString) (T.DWORD, error) 232 | 233 | GetConsoleAliasExes func( 234 | exeNameBuffer OVString, 235 | exeNameBufferLength T.DWORD) (T.DWORD, error) 236 | ) 237 | 238 | var WinConANSIApis = outside.Apis{ 239 | {"AddConsoleAliasA", &AddConsoleAlias}, 240 | {"FillConsoleOutputCharacterA", &FillConsoleOutputCharacter}, 241 | {"GetConsoleAliasA", &GetConsoleAlias}, 242 | {"GetConsoleAliasesA", &GetConsoleAliases}, 243 | {"GetConsoleAliasesLengthA", &GetConsoleAliasesLength}, 244 | {"GetConsoleAliasExesA", &GetConsoleAliasExes}, 245 | {"GetConsoleAliasExesLengthA", &GetConsoleAliasExesLength}, 246 | {"GetConsoleTitleA", &GetConsoleTitle}, 247 | {"PeekConsoleInputA", &PeekConsoleInput}, 248 | {"ReadConsoleA", &ReadConsole}, 249 | {"ReadConsoleInputA", &ReadConsoleInput}, 250 | {"ReadConsoleOutputA", &ReadConsoleOutput}, 251 | {"ReadConsoleOutputCharacterA", &ReadConsoleOutputCharacter}, 252 | {"ScrollConsoleScreenBufferA", &ScrollConsoleScreenBuffer}, 253 | {"SetConsoleTitleA", &SetConsoleTitle}, 254 | {"WriteConsoleA", &WriteConsole}, 255 | {"WriteConsoleInputA", &WriteConsoleInput}, 256 | {"WriteConsoleOutputA", &WriteConsoleOutput}, 257 | {"WriteConsoleOutputCharacterA", &WriteConsoleOutputCharacter}, 258 | } 259 | 260 | var WinConUnicodeApis = outside.Apis{ 261 | {"AddConsoleAliasW", &AddConsoleAlias}, 262 | {"FillConsoleOutputCharacterW", &FillConsoleOutputCharacter}, 263 | {"GetConsoleAliasW", &GetConsoleAlias}, 264 | {"GetConsoleAliasesW", &GetConsoleAliases}, 265 | {"GetConsoleAliasesLengthW", &GetConsoleAliasesLength}, 266 | {"GetConsoleAliasExesW", &GetConsoleAliasExes}, 267 | {"GetConsoleAliasExesLengthW", &GetConsoleAliasExesLength}, 268 | {"GetConsoleTitleW", &GetConsoleTitle}, 269 | {"PeekConsoleInputW", &PeekConsoleInput}, 270 | {"ReadConsoleW", &ReadConsole}, 271 | {"ReadConsoleInputW", &ReadConsoleInput}, 272 | {"ReadConsoleOutputW", &ReadConsoleOutput}, 273 | {"ReadConsoleOutputCharacterW", &ReadConsoleOutputCharacter}, 274 | {"ScrollConsoleScreenBufferW", &ScrollConsoleScreenBuffer}, 275 | {"SetConsoleTitleW", &SetConsoleTitle}, 276 | {"WriteConsoleW", &WriteConsole}, 277 | {"WriteConsoleInputW", &WriteConsoleInput}, 278 | {"WriteConsoleOutputW", &WriteConsoleOutput}, 279 | {"WriteConsoleOutputCharacterW", &WriteConsoleOutputCharacter}, 280 | } 281 | 282 | var WinConApis = outside.Apis{ 283 | {"AllocConsole", &AllocConsole}, 284 | {"AttachConsole", &AttachConsole}, 285 | {"CreateConsoleScreenBuffer", &CreateConsoleScreenBuffer}, 286 | {"FillConsoleOutputAttribute", &FillConsoleOutputAttribute}, 287 | {"FlushConsoleInputBuffer", &FlushConsoleInputBuffer}, 288 | {"FreeConsole", &FreeConsole}, 289 | {"GenerateConsoleCtrlEvent", &GenerateConsoleCtrlEvent}, 290 | {"GetConsoleCP", &GetConsoleCP}, 291 | {"GetConsoleCursorInfo", &GetConsoleCursorInfo}, 292 | {"GetConsoleDisplayMode", &GetConsoleDisplayMode}, 293 | {"GetConsoleFontSize", &GetConsoleFontSize}, 294 | {"GetConsoleMode", &GetConsoleMode}, 295 | {"GetConsoleOutputCP", &GetConsoleOutputCP}, 296 | {"GetConsoleProcessList", &GetConsoleProcessList}, 297 | {"GetConsoleScreenBufferInfo", &GetConsoleScreenBufferInfo}, 298 | {"GetConsoleSelectionInfo", &GetConsoleSelectionInfo}, 299 | {"GetConsoleWindow", &GetConsoleWindow}, 300 | {"GetCurrentConsoleFont", &GetCurrentConsoleFont}, 301 | {"GetLargestConsoleWindowSize", &GetLargestConsoleWindowSize}, 302 | {"GetNumberOfConsoleInputEvents", &GetNumberOfConsoleInputEvents}, 303 | {"GetNumberOfConsoleMouseButtons", &GetNumberOfConsoleMouseButtons}, 304 | {"ReadConsoleOutputAttribute", &ReadConsoleOutputAttribute}, 305 | {"SetConsoleActiveScreenBuffer", &SetConsoleActiveScreenBuffer}, 306 | {"SetConsoleCP", &SetConsoleCP}, 307 | {"SetConsoleCtrlHandler", &SetConsoleCtrlHandler}, 308 | {"SetConsoleCursorInfo", &SetConsoleCursorInfo}, 309 | {"SetConsoleCursorPosition", &SetConsoleCursorPosition}, 310 | {"SetConsoleMode", &SetConsoleMode}, 311 | {"SetConsoleOutputCP", &SetConsoleOutputCP}, 312 | {"SetConsoleScreenBufferSize", &SetConsoleScreenBufferSize}, 313 | {"SetConsoleTextAttribute", &SetConsoleTextAttribute}, 314 | {"SetConsoleWindowInfo", &SetConsoleWindowInfo}, 315 | {"WriteConsoleOutputAttribute", &WriteConsoleOutputAttribute}, 316 | } 317 | -------------------------------------------------------------------------------- /returnError/windows.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package windows. 5 | package windows 6 | 7 | import ( 8 | . "github.com/tHinqa/outside" 9 | . "github.com/tHinqa/outside-windows/returnError/commctrl" 10 | . "github.com/tHinqa/outside-windows/returnError/dde" 11 | . "github.com/tHinqa/outside-windows/returnError/lzexpand" 12 | . "github.com/tHinqa/outside-windows/returnError/mmsystem" 13 | . "github.com/tHinqa/outside-windows/returnError/nb30" 14 | . "github.com/tHinqa/outside-windows/returnError/ole2" 15 | . "github.com/tHinqa/outside-windows/returnError/shellapi" 16 | . "github.com/tHinqa/outside-windows/returnError/winbase" 17 | . "github.com/tHinqa/outside-windows/returnError/wincon" 18 | . "github.com/tHinqa/outside-windows/returnError/wingdi" 19 | . "github.com/tHinqa/outside-windows/returnError/winnetwk" 20 | . "github.com/tHinqa/outside-windows/returnError/winnls" 21 | . "github.com/tHinqa/outside-windows/returnError/winreg" 22 | // . "github.com/tHinqa/outside-windows/winsock" 23 | . "github.com/tHinqa/outside-windows/returnError/winsock2" 24 | . "github.com/tHinqa/outside-windows/returnError/winsvc" 25 | . "github.com/tHinqa/outside-windows/returnError/winuser" 26 | ) 27 | 28 | //TODO(t): Check for underscore and lowercase prefixes 29 | // New struct func filling in structsize 30 | // use s rather than c for size fields 31 | // Check all xxx xxxA dups 32 | 33 | func AllANSIApis() { 34 | AddApis(WinBaseApis) 35 | AddApis(WinBaseANSIApis) 36 | AddApis(WinUserApis) 37 | AddApis(WinUserANSIApis) 38 | AddApis(WinGdiApis) 39 | AddApis(WinGdiANSIApis) 40 | AddApis(WinConApis) 41 | AddApis(WinConANSIApis) 42 | AddApis(WinRegApis) 43 | AddApis(WinRegANSIApis) 44 | AddApis(ShellApiApis) 45 | AddApis(ShellApiANSIApis) 46 | AddApis(DdeApis) 47 | AddApis(DdeANSIApis) 48 | AddApis(WinSvcApis) 49 | AddApis(WinSvcANSIApis) 50 | AddApis(Ole2Apis) 51 | AddApis(CommCtrlApis) 52 | AddApis(CommCtrlANSIApis) 53 | AddApis(WinNlsApis) 54 | AddApis(WinNlsANSIApis) 55 | AddApis(LZExpandApis) 56 | AddApis(LZExpandANSIApis) 57 | AddApis(MMSystemApis) 58 | AddApis(MMSystemANSIApis) 59 | AddApis(Nb30Apis) 60 | //AddApis(WinSockApis) 61 | AddApis(WinSock2Apis) 62 | AddApis(WinSock2ANSIApis) 63 | AddApis(WinNetwkApis) 64 | AddApis(WinNetwkANSIApis) 65 | } 66 | 67 | func AllUnicodeApis() { 68 | AddApis(WinBaseApis) 69 | AddApis(WinBaseUnicodeApis) 70 | AddApis(WinUserApis) 71 | AddApis(WinUserUnicodeApis) 72 | AddApis(WinGdiApis) 73 | AddApis(WinGdiUnicodeApis) 74 | AddApis(WinConApis) 75 | AddApis(WinConUnicodeApis) 76 | AddApis(WinRegApis) 77 | AddApis(WinRegUnicodeApis) 78 | AddApis(ShellApiApis) 79 | AddApis(ShellApiUnicodeApis) 80 | AddApis(WinSvcApis) 81 | AddApis(WinSvcUnicodeApis) 82 | AddApis(Ole2Apis) 83 | AddApis(CommCtrlApis) 84 | AddApis(CommCtrlUnicodeApis) 85 | AddApis(WinNlsApis) 86 | AddApis(WinNlsUnicodeApis) 87 | AddApis(LZExpandApis) 88 | AddApis(LZExpandUnicodeApis) 89 | AddApis(MMSystemApis) 90 | AddApis(MMSystemUnicodeApis) 91 | AddApis(Nb30Apis) 92 | //AddApis(WinSockApis) 93 | AddApis(WinSock2Apis) 94 | AddApis(WinSock2UnicodeApis) 95 | AddApis(WinNetwkApis) 96 | AddApis(WinNetwkUnicodeApis) 97 | } 98 | -------------------------------------------------------------------------------- /returnError/windows_test.go: -------------------------------------------------------------------------------- 1 | package windows 2 | 3 | import "testing" 4 | 5 | func Test(*testing.T) { 6 | AllANSIApis() 7 | AllUnicodeApis() 8 | } 9 | -------------------------------------------------------------------------------- /returnError/wingdi/wingdi_test.go: -------------------------------------------------------------------------------- 1 | package wingdi 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinGdiApis) 8 | AddApis(WinGdiANSIApis) 9 | AddApis(WinGdiUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/winnetwk/winnetwk.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winnetwk provides API definitions for accessing 5 | //mpr.dll. 6 | package winnetwk 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/mpr" 13 | ) 14 | 15 | var ( 16 | WNetAddConnection func( 17 | RemoteName, Password, LocalName VString) (T.DWORD, error) 18 | 19 | WNetAddConnection2 func( 20 | NetResource *T.NETRESOURCE, 21 | Password, UserName VString, 22 | Flags T.DWORD) (T.DWORD, error) 23 | 24 | WNetAddConnection3 func( 25 | hwndOwner T.HWND, 26 | NetResource *T.NETRESOURCE, 27 | Password, UserName VString, 28 | Flags T.DWORD) (T.DWORD, error) 29 | 30 | WNetCancelConnection func(Name VString, fForce T.BOOL) (T.DWORD, error) 31 | 32 | WNetCancelConnection2 func( 33 | Name VString, Flags T.DWORD, Force T.BOOL) (T.DWORD, error) 34 | 35 | WNetGetConnection func( 36 | LocalName VString, 37 | RemoteName OVString, 38 | Length *T.DWORD) (T.DWORD, error) 39 | 40 | WNetRestoreConnection func( 41 | Parent T.HWND, 42 | Device VString) (T.DWORD, error) 43 | 44 | WNetUseConnection func( 45 | hwndOwner T.HWND, 46 | NetResource *T.NETRESOURCE, 47 | Password, UserID VString, 48 | Flags T.DWORD, 49 | AccessName OVString, BufferSize, 50 | Result *T.DWORD) (T.DWORD, error) 51 | 52 | WNetConnectionDialog func(Wnd T.HWND, Type T.DWORD) (T.DWORD, error) 53 | 54 | WNetDisconnectDialog func(Wnd T.HWND, Type T.DWORD) (T.DWORD, error) 55 | 56 | WNetOpenEnum func( 57 | Scope, Type, Usage T.DWORD, 58 | NetResource *T.NETRESOURCE, 59 | Enum *T.HANDLE) (T.DWORD, error) 60 | 61 | WNetEnumResource func( 62 | Enum T.HANDLE, 63 | Count *T.DWORD, 64 | Buffer *T.VOID, 65 | BufferSize *T.DWORD) (T.DWORD, error) 66 | 67 | WNetCloseEnum func( 68 | hEnum T.HANDLE) (T.DWORD, error) 69 | 70 | WNetGetResourceParent func( 71 | NetResource *T.NETRESOURCE, 72 | Buffer *T.VOID, 73 | BufferSize *T.DWORD) (T.DWORD, error) 74 | 75 | WNetGetResourceInformation func( 76 | NetResource *T.NETRESOURCE, 77 | Buffer *T.VOID, 78 | BufferSize *T.DWORD, 79 | System *OVString) (T.DWORD, error) 80 | 81 | WNetGetUser func( 82 | Name VString, 83 | UserName OVString, 84 | Length *T.DWORD) (T.DWORD, error) 85 | 86 | WNetGetProviderName func( 87 | NetType T.DWORD, 88 | ProviderName OVString, 89 | BufferSize *T.DWORD) (T.DWORD, error) 90 | 91 | WNetGetNetworkInformation func( 92 | Provider VString, 93 | NetInfoStruct *T.NETINFOSTRUCT) (T.DWORD, error) 94 | 95 | WNetGetLastError func( 96 | Error *T.DWORD, 97 | ErrorBuf OVString, 98 | ErrorBufSize T.DWORD, 99 | NameBuf OVString, 100 | NameBufSize T.DWORD) (T.DWORD, error) 101 | 102 | MultinetGetConnectionPerformance func( 103 | *T.NETRESOURCE, *T.NETCONNECTINFOSTRUCT) (T.DWORD, error) 104 | ) 105 | 106 | var WinNetwkANSIApis = outside.Apis{ 107 | {"MultinetGetConnectionPerformanceA", &MultinetGetConnectionPerformance}, 108 | {"WNetAddConnectionA", &WNetAddConnection}, 109 | {"WNetAddConnection2A", &WNetAddConnection2}, 110 | {"WNetAddConnection3A", &WNetAddConnection3}, 111 | {"WNetCancelConnectionA", &WNetCancelConnection}, 112 | {"WNetCancelConnection2A", &WNetCancelConnection2}, 113 | {"WNetEnumResourceA", &WNetEnumResource}, 114 | {"WNetGetConnectionA", &WNetGetConnection}, 115 | {"WNetGetLastErrorA", &WNetGetLastError}, 116 | {"WNetGetNetworkInformationA", &WNetGetNetworkInformation}, 117 | {"WNetGetProviderNameA", &WNetGetProviderName}, 118 | {"WNetGetResourceInformationA", &WNetGetResourceInformation}, 119 | {"WNetGetResourceParentA", &WNetGetResourceParent}, 120 | {"WNetGetUserA", &WNetGetUser}, 121 | {"WNetOpenEnumA", &WNetOpenEnum}, 122 | {"WNetUseConnectionA", &WNetUseConnection}, 123 | } 124 | 125 | var WinNetwkUnicodeApis = outside.Apis{ 126 | {"MultinetGetConnectionPerformanceW", &MultinetGetConnectionPerformance}, 127 | {"WNetAddConnectionW", &WNetAddConnection}, 128 | {"WNetAddConnection2W", &WNetAddConnection2}, 129 | {"WNetAddConnection3W", &WNetAddConnection3}, 130 | {"WNetCancelConnectionW", &WNetCancelConnection}, 131 | {"WNetCancelConnection2W", &WNetCancelConnection2}, 132 | {"WNetEnumResourceW", &WNetEnumResource}, 133 | {"WNetGetConnectionW", &WNetGetConnection}, 134 | {"WNetGetLastErrorW", &WNetGetLastError}, 135 | {"WNetGetNetworkInformationW", &WNetGetNetworkInformation}, 136 | {"WNetGetProviderNameW", &WNetGetProviderName}, 137 | {"WNetGetResourceInformationW", &WNetGetResourceInformation}, 138 | {"WNetGetResourceParentW", &WNetGetResourceParent}, 139 | {"WNetGetUserW", &WNetGetUser}, 140 | {"WNetOpenEnumW", &WNetOpenEnum}, 141 | {"WNetUseConnectionW", &WNetUseConnection}, 142 | } 143 | 144 | var WinNetwkApis = outside.Apis{ 145 | {"WNetCloseEnum", &WNetCloseEnum}, 146 | {"WNetConnectionDialog", &WNetConnectionDialog}, 147 | {"WNetDisconnectDialog", &WNetDisconnectDialog}, 148 | {"WNetRestoreConnectionW", &WNetRestoreConnection}, 149 | } 150 | -------------------------------------------------------------------------------- /returnError/winnetwk/winnetwk_test.go: -------------------------------------------------------------------------------- 1 | package winnetwk 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinNetwkApis) 8 | } 9 | -------------------------------------------------------------------------------- /returnError/winnls/winnls.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winnls provides API definitions for accessing 5 | //nls in kernel32.dll. 6 | package winnls 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/kernel32" 13 | ) 14 | 15 | var ( 16 | IsValidCodePage func(CodePage T.UINT) (T.BOOL, error) 17 | 18 | GetACP func() (T.UINT, error) 19 | 20 | GetOEMCP func() (T.UINT, error) 21 | 22 | GetCPInfo func(CodePage T.UINT, cpInfo *T.CPINFO) (T.BOOL, error) 23 | 24 | GetCPInfoExA func( 25 | CodePage T.UINT, Flags T.DWORD, cpInfoEx *T.CPINFOEXA) (T.BOOL, error) 26 | 27 | GetCPInfoExW func( 28 | CodePage T.UINT, Flags T.DWORD, cpInfoEx *T.CPINFOEXW) (T.BOOL, error) 29 | 30 | IsDBCSLeadByte func(TestChar T.BYTE) (T.BOOL, error) 31 | 32 | IsDBCSLeadByteEx func(CodePage T.UINT, TestChar T.BYTE) (T.BOOL, error) 33 | 34 | MultiByteToWideChar func( 35 | CodePage T.UINT, 36 | Flags T.DWORD, 37 | MultiByteStr T.AString, 38 | cbMultiByte int, 39 | WideCharStr T.OWString, 40 | WideChar int) (int, error) 41 | 42 | WideCharToMultiByte func( 43 | CodePage T.UINT, 44 | Flags T.DWORD, 45 | WideCharStr T.WString, 46 | WideChar int, 47 | MultiByteStr T.OAString, 48 | cbMultiByte int, 49 | DefaultChar T.AString, 50 | UsedDefaultChar *T.BOOL) (int, error) 51 | 52 | CompareString func( 53 | Locale T.LCID, 54 | CmpFlags T.DWORD, 55 | String1 VString, 56 | Count1 int, 57 | String2 VString, 58 | Count2 int) (int, error) 59 | 60 | LCMapString func( 61 | Locale T.LCID, 62 | MapFlags T.DWORD, 63 | SrcStr VString, 64 | Src int, 65 | DestStr OVString, 66 | Dest int) (int, error) 67 | 68 | GetLocaleInfo func( 69 | Locale T.LCID, 70 | LCType T.LCTYPE, 71 | LCData OVString, 72 | Data int) (int, error) 73 | 74 | SetLocaleInfo func( 75 | Locale T.LCID, 76 | LCType T.LCTYPE, 77 | LCData VString) (T.BOOL, error) 78 | 79 | GetCalendarInfo func( 80 | Locale T.LCID, 81 | Calendar T.CALID, 82 | CalType T.CALTYPE, 83 | CalData OVString, 84 | Data int, 85 | Value *T.DWORD) (int, error) 86 | 87 | SetCalendarInfo func( 88 | Locale T.LCID, 89 | Calendar T.CALID, 90 | CalType T.CALTYPE, 91 | CalData VString) (T.BOOL, error) 92 | 93 | GetTimeFormat func( 94 | Locale T.LCID, 95 | Flags T.DWORD, 96 | Time *T.SYSTEMTIME, 97 | Format VString, 98 | TimeStr OVString, 99 | cTime int) (int, error) 100 | 101 | GetDateFormat func( 102 | Locale T.LCID, 103 | Flags T.DWORD, 104 | Date *T.SYSTEMTIME, 105 | Format VString, 106 | DateStr OVString, 107 | cDate int) (int, error) 108 | 109 | GetNumberFormat func( 110 | Locale T.LCID, 111 | Flags T.DWORD, 112 | Value VString, 113 | Format *T.NUMBERFMT, 114 | NumberStr OVString, 115 | Number int) (int, error) 116 | 117 | GetCurrencyFormat func( 118 | Locale T.LCID, 119 | Flags T.DWORD, 120 | Value VString, 121 | Format *T.CURRENCYFMT, 122 | CurrencyStr OVString, 123 | Currency int) (int, error) 124 | 125 | EnumCalendarInfo func( 126 | CalInfoEnumProc T.CALINFO_ENUMPROC, 127 | Locale T.LCID, 128 | Calendar T.CALID, 129 | CalType T.CALTYPE) (T.BOOL, error) 130 | 131 | EnumCalendarInfoEx func( 132 | CalInfoEnumProcEx T.CALINFO_ENUMPROCEX, 133 | Locale T.LCID, 134 | Calendar T.CALID, 135 | CalType T.CALTYPE) (T.BOOL, error) 136 | 137 | EnumTimeFormats func( 138 | TimeFmtEnumProc T.TIMEFMT_ENUMPROC, 139 | Locale T.LCID, 140 | Flags T.DWORD) (T.BOOL, error) 141 | 142 | EnumDateFormats func( 143 | DateFmtEnumProc T.DATEFMT_ENUMPROC, 144 | Locale T.LCID, 145 | Flags T.DWORD) (T.BOOL, error) 146 | 147 | EnumDateFormatsEx func( 148 | DateFmtEnumProcEx T.DATEFMT_ENUMPROCEX, 149 | Locale T.LCID, 150 | Flags T.DWORD) (T.BOOL, error) 151 | 152 | IsValidLanguageGroup func( 153 | LanguageGroup T.LGRPID, 154 | Flags T.DWORD) (T.BOOL, error) 155 | 156 | GetNLSVersion func( 157 | T.NLS_FUNCTION, T.LCID, *T.NLSVERSIONINFO) (T.BOOL, error) 158 | 159 | IsNLSDefinedString func( 160 | Function T.NLS_FUNCTION, 161 | Flags T.DWORD, 162 | VersionInformation *T.NLSVERSIONINFO, 163 | String T.WString, 164 | Str T.INT) (T.BOOL, error) 165 | 166 | IsValidLocale func( 167 | Locale T.LCID, 168 | Flags T.DWORD) (T.BOOL, error) 169 | 170 | GetGeoInfo func( 171 | Location T.GEOID, 172 | GeoType T.GEOTYPE, 173 | GeoData OVString, 174 | Data int, 175 | LangId T.LANGID) (int, error) 176 | 177 | EnumSystemGeoID func( 178 | GeoClass T.GEOCLASS, 179 | ParentGeoId T.GEOID, 180 | GeoEnumProc T.GEO_ENUMPROC) (T.BOOL, error) 181 | 182 | GetUserGeoID func(GeoClass T.GEOCLASS) (T.GEOID, error) 183 | 184 | SetUserGeoID func(GeoId T.GEOID) (T.BOOL, error) 185 | 186 | ConvertDefaultLocale func(Locale T.LCID) (T.LCID, error) 187 | 188 | GetThreadLocale func() (T.LCID, error) 189 | 190 | SetThreadLocale func(Locale T.LCID) (T.BOOL, error) 191 | 192 | GetSystemDefaultUILanguage func() (T.LANGID, error) 193 | 194 | GetUserDefaultUILanguage func() (T.LANGID, error) 195 | 196 | GetSystemDefaultLangID func() (T.LANGID, error) 197 | 198 | GetUserDefaultLangID func() (T.LANGID, error) 199 | 200 | GetSystemDefaultLCID func() (T.LCID, error) 201 | 202 | GetUserDefaultLCID func() (T.LCID, error) 203 | 204 | GetStringTypeEx func( 205 | Locale T.LCID, 206 | InfoType T.DWORD, 207 | SrcStr VString, 208 | Src int, 209 | CharType *T.WORD) (T.BOOL, error) 210 | 211 | GetStringType func( 212 | Locale T.LCID, 213 | InfoType T.DWORD, 214 | SrcStr VString, 215 | Src int, 216 | CharType *T.WORD) (T.BOOL, error) 217 | 218 | FoldString func( 219 | MapFlags T.DWORD, 220 | SrcStr VString, 221 | Src int, 222 | DestStr OVString, 223 | Dest int) (int, error) 224 | 225 | EnumSystemLanguageGroups func( 226 | LanguageGroupEnumProc T.LANGUAGEGROUP_ENUMPROC, 227 | Flags T.DWORD, 228 | lParam T.LONG_PTR) (T.BOOL, error) 229 | 230 | EnumLanguageGroupLocales func( 231 | LangGroupLocaleEnumProc T.LANGGROUPLOCALE_ENUMPROC, 232 | LanguageGroup T.LGRPID, 233 | Flags T.DWORD, 234 | lParam T.LONG_PTR) (T.BOOL, error) 235 | 236 | EnumUILanguages func( 237 | UILanguageEnumProc T.UILANGUAGE_ENUMPROC, 238 | Flags T.DWORD, 239 | lParam T.LONG_PTR) (T.BOOL, error) 240 | 241 | EnumSystemLocales func( 242 | LocaleEnumProc T.LOCALE_ENUMPROC, 243 | Flags T.DWORD) (T.BOOL, error) 244 | 245 | EnumSystemCodePages func( 246 | CodePageEnumProc T.CODEPAGE_ENUMPROC, 247 | Flags T.DWORD) (T.BOOL, error) 248 | ) 249 | 250 | //TODO(t): not on XP 251 | //{"GetNLSVersion", &GetNLSVersion}, 252 | //{"IsNLSDefinedString", &IsNLSDefinedString}, 253 | 254 | var WinNlsANSIApis = outside.Apis{ 255 | {"GetCPInfoExA", &GetCPInfoExA}, 256 | {"LCMapStringA", &LCMapString}, 257 | {"GetLocaleInfoA", &GetLocaleInfo}, 258 | {"SetLocaleInfoA", &SetLocaleInfo}, 259 | {"GetCalendarInfoA", &GetCalendarInfo}, 260 | {"SetCalendarInfoA", &SetCalendarInfo}, 261 | {"GetTimeFormatA", &GetTimeFormat}, 262 | {"GetDateFormatA", &GetDateFormat}, 263 | {"CompareStringA", &CompareString}, 264 | {"GetNumberFormatA", &GetNumberFormat}, 265 | {"GetCurrencyFormatA", &GetCurrencyFormat}, 266 | {"EnumCalendarInfoA", &EnumCalendarInfo}, 267 | {"EnumCalendarInfoExA", &EnumCalendarInfoEx}, 268 | {"EnumTimeFormatsA", &EnumTimeFormats}, 269 | {"EnumDateFormatsA", &EnumDateFormats}, 270 | {"EnumDateFormatsExA", &EnumDateFormatsEx}, 271 | {"GetGeoInfoA", &GetGeoInfo}, 272 | {"GetStringTypeExA", &GetStringTypeEx}, 273 | {"GetStringTypeA", &GetStringType}, 274 | {"FoldStringA", &FoldString}, 275 | {"EnumSystemLanguageGroupsA", &EnumSystemLanguageGroups}, 276 | {"EnumLanguageGroupLocalesA", &EnumLanguageGroupLocales}, 277 | {"EnumUILanguagesA", &EnumUILanguages}, 278 | {"EnumSystemLocalesA", &EnumSystemLocales}, 279 | {"EnumSystemCodePagesA", &EnumSystemCodePages}, 280 | } 281 | 282 | var WinNlsUnicodeApis = outside.Apis{ 283 | {"GetCPInfoExW", &GetCPInfoExW}, 284 | {"LCMapStringW", &LCMapString}, 285 | {"GetLocaleInfoW", &GetLocaleInfo}, 286 | {"SetLocaleInfoW", &SetLocaleInfo}, 287 | {"GetCalendarInfoW", &GetCalendarInfo}, 288 | {"SetCalendarInfoW", &SetCalendarInfo}, 289 | {"GetTimeFormatW", &GetTimeFormat}, 290 | {"GetDateFormatW", &GetDateFormat}, 291 | {"CompareStringW", &CompareString}, 292 | {"GetNumberFormatW", &GetNumberFormat}, 293 | {"GetCurrencyFormatW", &GetCurrencyFormat}, 294 | {"EnumCalendarInfoW", &EnumCalendarInfo}, 295 | {"EnumCalendarInfoExW", &EnumCalendarInfoEx}, 296 | {"EnumTimeFormatsW", &EnumTimeFormats}, 297 | {"EnumDateFormatsW", &EnumDateFormats}, 298 | {"EnumDateFormatsExW", &EnumDateFormatsEx}, 299 | {"GetGeoInfoW", &GetGeoInfo}, 300 | {"GetStringTypeExW", &GetStringTypeEx}, 301 | {"GetStringTypeW", &GetStringType}, 302 | {"FoldStringW", &FoldString}, 303 | {"EnumSystemLanguageGroupsW", &EnumSystemLanguageGroups}, 304 | {"EnumLanguageGroupLocalesW", &EnumLanguageGroupLocales}, 305 | {"EnumUILanguagesW", &EnumUILanguages}, 306 | {"EnumSystemLocalesW", &EnumSystemLocales}, 307 | {"EnumSystemCodePagesW", &EnumSystemCodePages}, 308 | } 309 | 310 | var WinNlsApis = outside.Apis{ 311 | {"IsValidCodePage", &IsValidCodePage}, 312 | {"GetACP", &GetACP}, 313 | {"GetOEMCP", &GetOEMCP}, 314 | {"GetCPInfo", &GetCPInfo}, 315 | {"IsDBCSLeadByte", &IsDBCSLeadByte}, 316 | {"IsDBCSLeadByteEx", &IsDBCSLeadByteEx}, 317 | {"MultiByteToWideChar", &MultiByteToWideChar}, 318 | {"WideCharToMultiByte", &WideCharToMultiByte}, 319 | {"IsValidLanguageGroup", &IsValidLanguageGroup}, 320 | {"IsValidLocale", &IsValidLocale}, 321 | {"EnumSystemGeoID", &EnumSystemGeoID}, 322 | {"GetUserGeoID", &GetUserGeoID}, 323 | {"SetUserGeoID", &SetUserGeoID}, 324 | {"ConvertDefaultLocale", &ConvertDefaultLocale}, 325 | {"GetThreadLocale", &GetThreadLocale}, 326 | {"SetThreadLocale", &SetThreadLocale}, 327 | {"GetSystemDefaultUILanguage", &GetSystemDefaultUILanguage}, 328 | {"GetUserDefaultUILanguage", &GetUserDefaultUILanguage}, 329 | {"GetSystemDefaultLangID", &GetSystemDefaultLangID}, 330 | {"GetUserDefaultLangID", &GetUserDefaultLangID}, 331 | {"GetSystemDefaultLCID", &GetSystemDefaultLCID}, 332 | {"GetUserDefaultLCID", &GetUserDefaultLCID}, 333 | } 334 | -------------------------------------------------------------------------------- /returnError/winnls/winnls_test.go: -------------------------------------------------------------------------------- 1 | package winnls 2 | 3 | import ( 4 | "github.com/tHinqa/outside" 5 | . "github.com/tHinqa/outside-windows/types" 6 | . "github.com/tHinqa/outside/types" 7 | "testing" 8 | ) 9 | 10 | func init() { 11 | outside.AddApis(WinNlsApis) 12 | outside.AddApis(WinNlsANSIApis) 13 | //outside.AddApis(WinNlsUnicodeApis) 14 | } 15 | 16 | var tT *testing.T 17 | 18 | func callback2(s *VString, l LONG_PTR) BOOL { 19 | if l != 123 { 20 | return 0 21 | } 22 | tT.Log(*s) 23 | return 1 24 | } 25 | 26 | func callback1(s *VString) BOOL { 27 | tT.Log(*s) 28 | return 1 29 | } 30 | 31 | func Test(t *testing.T) { 32 | tT = t 33 | t.Log("=== UIanguages ===") 34 | EnumUILanguages(callback2, 0, 123) 35 | t.Log("=== Locales ===") 36 | EnumSystemLocales(callback1, 0) 37 | t.Log("=== CodePages ===") 38 | EnumSystemCodePages(callback1, 0) 39 | t.Log("=== CalendarInfo ===") 40 | for i := 1; i <= 0x30; i++ { 41 | EnumCalendarInfo(callback1, 0, 0xFFFFFFFF, CALTYPE(i)) 42 | } 43 | t.Log("=== TimeFormat ===") 44 | EnumTimeFormats(callback1, 0, 0) 45 | t.Log("=== DateFormat ===") 46 | EnumDateFormats(callback1, 0, 0) 47 | } 48 | -------------------------------------------------------------------------------- /returnError/winreg/winreg.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winreg provides API definitions for accessing 5 | //advapi32.dll. 6 | package winreg 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/advapi32" 13 | ) 14 | 15 | var ( 16 | RegCloseKey func(Key T.HKEY) (T.LONG, error) 17 | 18 | RegOverridePredefKey func(Key T.HKEY, NewHKey T.HKEY) (T.LONG, error) 19 | 20 | RegOpenUserClassesRoot func( 21 | Token T.HANDLE, 22 | Options T.DWORD, 23 | SamDesired T.REGSAM, 24 | Result *T.HKEY) (T.LONG, error) 25 | 26 | RegOpenCurrentUser func( 27 | SamDesired T.REGSAM, Result *T.HKEY) (T.LONG, error) 28 | 29 | RegDisablePredefinedCache func() (T.LONG, error) 30 | 31 | RegConnectRegistry func( 32 | MachineName VString, 33 | Key T.HKEY, 34 | Result *T.HKEY) (T.LONG, error) 35 | 36 | RegConnectRegistryEx func( 37 | MachineName VString, 38 | Key T.HKEY, 39 | Flags T.ULONG, 40 | Result *T.HKEY) (T.LONG, error) 41 | 42 | RegCreateKey func( 43 | Key T.HKEY, SubKey VString, Result *T.HKEY) (T.LONG, error) 44 | 45 | RegCreateKeyEx func( 46 | Key T.HKEY, 47 | SubKey VString, 48 | Reserved T.DWORD, 49 | Class VString, 50 | Options T.DWORD, 51 | SamDesired T.REGSAM, 52 | SecurityAttributes *T.SECURITY_ATTRIBUTES, 53 | Result *T.HKEY, 54 | Disposition *T.DWORD) (T.LONG, error) 55 | 56 | RegDeleteKey func(Key T.HKEY, SubKey VString) (T.LONG, error) 57 | 58 | RegDeleteKeyEx func( 59 | Key T.HKEY, 60 | SubKey VString, 61 | SamDesired T.REGSAM, 62 | Reserved T.DWORD) (T.LONG, error) 63 | 64 | RegDisableReflectionKey func(Base T.HKEY) (T.LONG, error) 65 | 66 | RegEnableReflectionKey func(Base T.HKEY) (T.LONG, error) 67 | 68 | RegQueryReflectionKey func( 69 | Base T.HKEY, IsReflectionDisabled *T.BOOL) (T.LONG, error) 70 | 71 | RegDeleteValue func(Key T.HKEY, ValueName VString) (T.LONG, error) 72 | 73 | RegEnumKey func( 74 | Key T.HKEY, 75 | Index T.DWORD, 76 | Name OVString, 77 | cName T.DWORD) (T.LONG, error) 78 | 79 | RegEnumKeyEx func( 80 | Key T.HKEY, 81 | Index T.DWORD, 82 | Name OVString, 83 | cName *T.DWORD, 84 | Reserved *T.DWORD, 85 | Class OVString, 86 | cClass *T.DWORD, 87 | LastWriteTime *T.FILETIME) (T.LONG, error) 88 | 89 | RegEnumValue func( 90 | Key T.HKEY, 91 | Index T.DWORD, 92 | ValueName OVString, 93 | cValueName *T.DWORD, 94 | Reserved *T.DWORD, 95 | Type *T.DWORD, 96 | Data *T.BYTE, 97 | cData *T.DWORD) (T.LONG, error) 98 | 99 | RegFlushKey func(Key T.HKEY) (T.LONG, error) 100 | 101 | RegGetKeySecurity func( 102 | Key T.HKEY, 103 | SecurityInformation T.SECURITY_INFORMATION, 104 | SecurityDescriptor *T.SECURITY_DESCRIPTOR, 105 | cSecurityDescriptor *T.DWORD) (T.LONG, error) 106 | 107 | RegLoadKey func( 108 | Key T.HKEY, SubKey, File VString) (T.LONG, error) 109 | 110 | RegNotifyChangeKeyValue func( 111 | Key T.HKEY, 112 | WatchSubtree T.BOOL, 113 | NotifyFilter T.DWORD, 114 | Event T.HANDLE, 115 | Asynchronous T.BOOL) (T.LONG, error) 116 | 117 | RegOpenKey func( 118 | Key T.HKEY, SubKey VString, Result *T.HKEY) (T.LONG, error) 119 | 120 | RegOpenKeyEx func( 121 | Key T.HKEY, 122 | SubKey VString, 123 | Options T.DWORD, 124 | SamDesired T.REGSAM, 125 | Result *T.HKEY) (T.LONG, error) 126 | 127 | RegQueryInfoKey func( 128 | Key T.HKEY, 129 | Class OVString, 130 | cClass, 131 | Reserved, 132 | SubKeys, 133 | MaxSubKeyLen, 134 | MaxClassLen, 135 | Values, 136 | MaxValueNameLen, 137 | MaxValueLen, 138 | SecurityDescriptor *T.DWORD, 139 | LastWriteTime *T.FILETIME) (T.LONG, error) 140 | 141 | RegQueryValue func( 142 | Key T.HKEY, 143 | SubKey VString, 144 | Data OVString, 145 | cData *T.LONG) (T.LONG, error) 146 | 147 | RegQueryMultipleValues func( 148 | Key T.HKEY, 149 | ValList *T.VALENT, 150 | NumVals T.DWORD, 151 | ValueBuf VString, 152 | TotSize *T.DWORD) (T.LONG, error) 153 | 154 | RegQueryValueEx func( 155 | Key T.HKEY, 156 | ValueName VString, 157 | Reserved, 158 | Type *T.DWORD, 159 | Data *T.BYTE, 160 | cData *T.DWORD) (T.LONG, error) 161 | 162 | RegReplaceKey func( 163 | Key T.HKEY, SubKey, NewFile, OldFile VString) (T.LONG, error) 164 | 165 | RegRestoreKey func( 166 | Key T.HKEY, File VString, Flags T.DWORD) (T.LONG, error) 167 | 168 | RegSaveKey func( 169 | Key T.HKEY, 170 | File VString, 171 | SecurityAttributes *T.SECURITY_ATTRIBUTES) (T.LONG, error) 172 | 173 | RegSetKeySecurity func( 174 | Key T.HKEY, 175 | SecurityInformation T.SECURITY_INFORMATION, 176 | pSecurityDescriptor *T.SECURITY_DESCRIPTOR) (T.LONG, error) 177 | 178 | RegSetValue func( 179 | Key T.HKEY, 180 | SubKey VString, 181 | Type T.DWORD, 182 | Data VString, 183 | cbData T.DWORD) (T.LONG, error) 184 | 185 | RegSetValueEx func( 186 | Key T.HKEY, 187 | ValueName VString, 188 | Reserved, 189 | Type T.DWORD, 190 | Data *T.BYTE, 191 | cData T.DWORD) (T.LONG, error) 192 | 193 | RegUnLoadKey func(Key T.HKEY, SubKey VString) (T.LONG, error) 194 | 195 | RegGetValue func( 196 | Key T.HKEY, 197 | SubKey, Value VString, 198 | Flags T.DWORD, 199 | Type *T.DWORD, 200 | Data *T.VOID, 201 | cData *T.DWORD) (T.LONG, error) 202 | 203 | InitiateSystemShutdown func( 204 | MachineName, Message VString, 205 | Timeout T.DWORD, 206 | ForceAppsClosed, RebootAfterShutdown T.BOOL) (T.BOOL, error) 207 | 208 | AbortSystemShutdown func( 209 | MachineName VString) (T.BOOL, error) 210 | 211 | InitiateSystemShutdownEx func( 212 | MachineName, Message VString, 213 | Timeout T.DWORD, 214 | ForceAppsClosed, RebootAfterShutdown T.BOOL, 215 | Reason T.DWORD) (T.BOOL, error) 216 | 217 | RegSaveKeyEx func( 218 | Key T.HKEY, 219 | File VString, 220 | SecurityAttributes *T.SECURITY_ATTRIBUTES, 221 | Flags T.DWORD) (T.LONG, error) 222 | 223 | Wow64Win32ApiEntry func( 224 | FuncNumber T.DWORD, Flag T.DWORD, Res T.DWORD) (T.LONG, error) 225 | ) 226 | 227 | var WinRegANSIApis = outside.Apis{ 228 | {"AbortSystemShutdownA", &AbortSystemShutdown}, 229 | {"InitiateSystemShutdownA", &InitiateSystemShutdown}, 230 | {"InitiateSystemShutdownExA", &InitiateSystemShutdownEx}, 231 | {"RegConnectRegistryA", &RegConnectRegistry}, 232 | {"RegCreateKeyA", &RegCreateKey}, 233 | {"RegCreateKeyExA", &RegCreateKeyEx}, 234 | {"RegDeleteKeyA", &RegDeleteKey}, 235 | {"RegDeleteValueA", &RegDeleteValue}, 236 | {"RegEnumKeyA", &RegEnumKey}, 237 | {"RegEnumKeyExA", &RegEnumKeyEx}, 238 | {"RegEnumValueA", &RegEnumValue}, 239 | {"RegLoadKeyA", &RegLoadKey}, 240 | {"RegOpenKeyA", &RegOpenKey}, 241 | {"RegOpenKeyExA", &RegOpenKeyEx}, 242 | {"RegQueryInfoKeyA", &RegQueryInfoKey}, 243 | {"RegQueryMultipleValuesA", &RegQueryMultipleValues}, 244 | {"RegQueryValueA", &RegQueryValue}, 245 | {"RegQueryValueExA", &RegQueryValueEx}, 246 | {"RegReplaceKeyA", &RegReplaceKey}, 247 | {"RegRestoreKeyA", &RegRestoreKey}, 248 | {"RegSaveKeyA", &RegSaveKey}, 249 | {"RegSaveKeyExA", &RegSaveKeyEx}, 250 | {"RegSetValueA", &RegSetValue}, 251 | {"RegSetValueExA", &RegSetValueEx}, 252 | {"RegUnLoadKeyA", &RegUnLoadKey}, 253 | } 254 | 255 | var WinRegUnicodeApis = outside.Apis{ 256 | {"AbortSystemShutdownW", &AbortSystemShutdown}, 257 | {"InitiateSystemShutdownW", &InitiateSystemShutdown}, 258 | {"InitiateSystemShutdownExW", &InitiateSystemShutdownEx}, 259 | {"RegConnectRegistryW", &RegConnectRegistry}, 260 | {"RegCreateKeyW", &RegCreateKey}, 261 | {"RegCreateKeyExW", &RegCreateKeyEx}, 262 | {"RegDeleteKeyW", &RegDeleteKey}, 263 | {"RegDeleteValueW", &RegDeleteValue}, 264 | {"RegEnumKeyW", &RegEnumKey}, 265 | {"RegEnumKeyExW", &RegEnumKeyEx}, 266 | {"RegEnumValueW", &RegEnumValue}, 267 | {"RegLoadKeyW", &RegLoadKey}, 268 | {"RegOpenKeyW", &RegOpenKey}, 269 | {"RegOpenKeyExW", &RegOpenKeyEx}, 270 | {"RegQueryInfoKeyW", &RegQueryInfoKey}, 271 | {"RegQueryMultipleValuesW", &RegQueryMultipleValues}, 272 | {"RegQueryValueW", &RegQueryValue}, 273 | {"RegQueryValueExW", &RegQueryValueEx}, 274 | {"RegReplaceKeyW", &RegReplaceKey}, 275 | {"RegRestoreKeyW", &RegRestoreKey}, 276 | {"RegSaveKeyW", &RegSaveKey}, 277 | {"RegSaveKeyExW", &RegSaveKeyEx}, 278 | {"RegSetValueW", &RegSetValue}, 279 | {"RegSetValueExW", &RegSetValueEx}, 280 | {"RegUnLoadKeyW", &RegUnLoadKey}, 281 | } 282 | 283 | //TODO(t):Not on XP. 284 | //{"RegConnectRegistryExA", &RegConnectRegistryEx}, 285 | //{"RegConnectRegistryExW", &RegConnectRegistryEx}, 286 | //{"RegDeleteKeyExA", &RegDeleteKeyEx}, 287 | //{"RegDeleteKeyExW", &RegDeleteKeyEx}, 288 | //{"RegDisableReflectionKey", &RegDisableReflectionKey}, 289 | //{"RegEnableReflectionKey", &RegEnableReflectionKey}, 290 | //{"RegGetValueA", &RegGetValue}, 291 | //{"RegGetValueW", &RegGetValue}, 292 | //{"RegQueryReflectionKey", &RegQueryReflectionKey}, 293 | 294 | var WinRegApis = outside.Apis{ 295 | {"RegCloseKey", &RegCloseKey}, 296 | {"RegDisablePredefinedCache", &RegDisablePredefinedCache}, 297 | {"RegFlushKey", &RegFlushKey}, 298 | {"RegGetKeySecurity", &RegGetKeySecurity}, 299 | {"RegNotifyChangeKeyValue", &RegNotifyChangeKeyValue}, 300 | {"RegOpenCurrentUser", &RegOpenCurrentUser}, 301 | {"RegOpenUserClassesRoot", &RegOpenUserClassesRoot}, 302 | {"RegOverridePredefKey", &RegOverridePredefKey}, 303 | {"RegSetKeySecurity", &RegSetKeySecurity}, 304 | {"Wow64Win32ApiEntry", &Wow64Win32ApiEntry}, 305 | } 306 | -------------------------------------------------------------------------------- /returnError/winreg/winreg_test.go: -------------------------------------------------------------------------------- 1 | package winreg 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinRegApis) 8 | AddApis(WinRegANSIApis) 9 | AddApis(WinRegUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/winsock/winsock.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winsock provides API definitions for accessing 5 | //wsock32.dll. 6 | package winsock 7 | 8 | import ( 9 | . "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | _ "github.com/tHinqa/outside/win32/wsock32" 12 | ) 13 | 14 | type ( 15 | timeval T.Fake_type_Fix_me 16 | servent T.Fake_type_Fix_me 17 | protoent T.Fake_type_Fix_me 18 | u_int T.Fake_type_Fix_me 19 | u_long T.Fake_type_Fix_me 20 | u_short T.Fake_type_Fix_me 21 | hostent T.Fake_type_Fix_me 22 | fd_set T.Fake_type_Fix_me 23 | sockaddr T.Fake_type_Fix_me 24 | long T.Fake_type_Fix_me 25 | in_addr T.Fake_type_Fix_me 26 | unsigned_long T.Fake_type_Fix_me 27 | char byte 28 | ) 29 | 30 | var ( 31 | WSAFDIsSet func(T.SOCKET, *fd_set) (int, error) 32 | 33 | Accept func( 34 | s T.SOCKET, 35 | addr *sockaddr, 36 | addrlen *int) (T.SOCKET, error) 37 | 38 | Bind func( 39 | s T.SOCKET, 40 | addr *sockaddr, 41 | namelen int) (int, error) 42 | 43 | Closesocket func(s T.SOCKET) (int, error) 44 | 45 | Connect func( 46 | s T.SOCKET, 47 | name *sockaddr, 48 | namelen int) (int, error) 49 | 50 | Ioctlsocket func( 51 | s T.SOCKET, 52 | cmd long, 53 | argp *u_long) (int, error) 54 | 55 | Getpeername func( 56 | s T.SOCKET, 57 | name *sockaddr, 58 | namelen *int) (int, error) 59 | 60 | Getsockname func( 61 | s T.SOCKET, 62 | name *sockaddr, 63 | namelen *int) (int, error) 64 | 65 | Getsockopt func( 66 | s T.SOCKET, 67 | level int, 68 | optname int, 69 | optval *char, 70 | optlen *int) (int, error) 71 | 72 | Htonl func(hostlong u_long) (u_long, error) 73 | 74 | Htons func(hostshort u_short) (u_short, error) 75 | 76 | Inet_addr func(cp *char) (unsigned_long, error) 77 | 78 | Inet_ntoa func(in in_addr) (*char, error) 79 | 80 | Listen func(s T.SOCKET, backlog int) (int, error) 81 | 82 | Ntohl func(netlong u_long) (u_long, error) 83 | 84 | Ntohs func(netshort u_short) (u_short, error) 85 | 86 | Recv func( 87 | s T.SOCKET, 88 | buf *char, 89 | len int, 90 | flags int) (int, error) 91 | 92 | Recvfrom func( 93 | s T.SOCKET, 94 | buf *char, 95 | len int, 96 | flags int, 97 | from *sockaddr, 98 | fromlen *int) (int, error) 99 | 100 | Select func( 101 | fds int, 102 | readfds *fd_set, 103 | writefds *fd_set, 104 | exceptfds *fd_set, 105 | timeout *timeval) (int, error) 106 | 107 | Send func( 108 | s T.SOCKET, 109 | buf *char, 110 | len int, 111 | flags int) (int, error) 112 | 113 | Sendto func( 114 | s T.SOCKET, 115 | buf *char, 116 | len int, 117 | flags int, 118 | to *sockaddr, 119 | tolen int) (int, error) 120 | 121 | Setsockopt func( 122 | s T.SOCKET, 123 | level int, 124 | optname int, 125 | optval *char, 126 | optlen int) (int, error) 127 | 128 | Shutdown func( 129 | s T.SOCKET, 130 | how int) (int, error) 131 | 132 | Socket func( 133 | af int, 134 | typ int, 135 | protocol int) (T.SOCKET, error) 136 | 137 | Gethostbyaddr func( 138 | addr *char, 139 | len int, 140 | typ int) (*hostent, error) 141 | 142 | Gethostbyname func( 143 | name *char) (*hostent, error) 144 | 145 | Gethostname func( 146 | name *char, 147 | namelen int) (int, error) 148 | 149 | Getservbyport func( 150 | port int, 151 | proto *char) (*servent, error) 152 | 153 | Getservbyname func( 154 | name *char, 155 | proto *char) (*servent, error) 156 | 157 | Getprotobynumber func( 158 | proto int) (*protoent, error) 159 | 160 | Getprotobyname func( 161 | name *char) (*protoent, error) 162 | 163 | WSAStartup func( 164 | VersionRequired T.WORD, 165 | WSAData *T.WSADATA) (int, error) 166 | 167 | WSACleanup func() (int, error) 168 | 169 | WSASetLastError func( 170 | iError int) 171 | 172 | WSAGetLastError func() (int, error) 173 | 174 | WSAIsBlocking func() (T.BOOL, error) 175 | 176 | WSAUnhookBlockingHook func() (int, error) 177 | 178 | WSASetBlockingHook func( 179 | BlockFunc T.FARPROC) (T.FARPROC, error) 180 | 181 | WSACancelBlockingCall func() (int, error) 182 | 183 | WSAAsyncGetServByName func( 184 | Wnd T.HWND, 185 | Msg u_int, 186 | name *char, 187 | proto *char, 188 | buf *char, 189 | buflen int) (T.HANDLE, error) 190 | 191 | WSAAsyncGetServByPort func( 192 | Wnd T.HWND, 193 | Msg u_int, 194 | port int, 195 | proto *char, 196 | buf *char, 197 | buflen int) (T.HANDLE, error) 198 | 199 | WSAAsyncGetProtoByName func( 200 | Wnd T.HWND, 201 | Msg u_int, 202 | name *char, 203 | buf *char, 204 | buflen int) (T.HANDLE, error) 205 | 206 | WSAAsyncGetProtoByNumber func( 207 | Wnd T.HWND, 208 | Msg u_int, 209 | number int, 210 | buf *char, 211 | buflen int) (T.HANDLE, error) 212 | 213 | WSAAsyncGetHostByName func( 214 | Wnd T.HWND, 215 | Msg u_int, 216 | name *char, 217 | buf *char, 218 | buflen int) (T.HANDLE, error) 219 | 220 | WSAAsyncGetHostByAddr func( 221 | Wnd T.HWND, 222 | Msg u_int, 223 | addr *char, 224 | len int, 225 | typ int, 226 | buf *char, 227 | buflen int) (T.HANDLE, error) 228 | 229 | WSACancelAsyncRequest func(hAsyncTaskHandle T.HANDLE) (int, error) 230 | 231 | WSAAsyncSelect func( 232 | s T.SOCKET, 233 | Wnd T.HWND, 234 | Msg u_int, 235 | lEvent long) (int, error) 236 | 237 | WSARecvEx func( 238 | s T.SOCKET, 239 | buf *char, 240 | len int, 241 | flags *int) (int, error) 242 | 243 | TransmitFile func( 244 | Socket T.SOCKET, 245 | File T.HANDLE, 246 | NumberOfBytesToWrite T.DWORD, 247 | NumberOfBytesPerSend T.DWORD, 248 | Overlapped *T.OVERLAPPED, 249 | TransmitBuffers *T.TRANSMIT_FILE_BUFFERS, 250 | Reserved T.DWORD) (T.BOOL, error) 251 | 252 | AcceptEx func( 253 | ListenSocket T.SOCKET, 254 | AcceptSocket T.SOCKET, 255 | OutputBuffer *T.VOID, 256 | ReceiveDataLength T.DWORD, 257 | LocalAddressLength T.DWORD, 258 | RemoteAddressLength T.DWORD, 259 | BytesReceived *T.DWORD, 260 | Overlapped *T.OVERLAPPED) (T.BOOL, error) 261 | 262 | GetAcceptExSockaddrs func( 263 | OutputBuffer *T.VOID, 264 | ReceiveDataLength T.DWORD, 265 | LocalAddressLength T.DWORD, 266 | RemoteAddressLength T.DWORD, 267 | LocalSockaddr **sockaddr, 268 | LocalSockaddrLength *T.INT, 269 | RemoteSockaddr **sockaddr, 270 | RemoteSockaddrLength *T.INT) 271 | ) 272 | 273 | var WinSockApis = Apis{ 274 | {"accept", &Accept}, 275 | {"AcceptEx", &AcceptEx}, 276 | {"bind", &Bind}, 277 | {"closesocket", &Closesocket}, 278 | {"connect", &Connect}, 279 | {"GetAcceptExSockaddrs", &GetAcceptExSockaddrs}, 280 | {"gethostbyaddr", &Gethostbyaddr}, 281 | {"gethostbyname", &Gethostbyname}, 282 | {"gethostname", &Gethostname}, 283 | {"getpeername", &Getpeername}, 284 | {"getprotobyname", &Getprotobyname}, 285 | {"getprotobynumber", &Getprotobynumber}, 286 | {"getservbyname", &Getservbyname}, 287 | {"getservbyport", &Getservbyport}, 288 | {"getsockname", &Getsockname}, 289 | {"getsockopt", &Getsockopt}, 290 | {"htonl", &Htonl}, 291 | {"htons", &Htons}, 292 | {"inet_addr", &Inet_addr}, 293 | {"inet_ntoa", &Inet_ntoa}, 294 | {"ioctlsocket", &Ioctlsocket}, 295 | {"listen", &Listen}, 296 | {"ntohl", &Ntohl}, 297 | {"ntohs", &Ntohs}, 298 | {"recv", &Recv}, 299 | {"recvfrom", &Recvfrom}, 300 | {"select", &Select}, 301 | {"send", &Send}, 302 | {"sendto", &Sendto}, 303 | {"setsockopt", &Setsockopt}, 304 | {"shutdown", &Shutdown}, 305 | {"socket", &Socket}, 306 | {"TransmitFile", &TransmitFile}, 307 | {"WSAAsyncGetHostByAddr", &WSAAsyncGetHostByAddr}, 308 | {"WSAAsyncGetHostByName", &WSAAsyncGetHostByName}, 309 | {"WSAAsyncGetProtoByName", &WSAAsyncGetProtoByName}, 310 | {"WSAAsyncGetProtoByNumber", &WSAAsyncGetProtoByNumber}, 311 | {"WSAAsyncGetServByName", &WSAAsyncGetServByName}, 312 | {"WSAAsyncGetServByPort", &WSAAsyncGetServByPort}, 313 | {"WSAAsyncSelect", &WSAAsyncSelect}, 314 | {"WSACancelAsyncRequest", &WSACancelAsyncRequest}, 315 | {"WSACancelBlockingCall", &WSACancelBlockingCall}, 316 | {"WSACleanup", &WSACleanup}, 317 | {"__WSAFDIsSet", &WSAFDIsSet}, 318 | {"WSAGetLastError", &WSAGetLastError}, 319 | {"WSAIsBlocking", &WSAIsBlocking}, 320 | {"WSARecvEx", &WSARecvEx}, 321 | {"WSASetBlockingHook", &WSASetBlockingHook}, 322 | {"WSASetLastError", &WSASetLastError}, 323 | {"WSAStartup", &WSAStartup}, 324 | {"WSAUnhookBlockingHook", &WSAUnhookBlockingHook}, 325 | } 326 | -------------------------------------------------------------------------------- /returnError/winsock/winsock_test.go: -------------------------------------------------------------------------------- 1 | package winsock 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinSockApis) 8 | } 9 | -------------------------------------------------------------------------------- /returnError/winsock2/winsock2_test.go: -------------------------------------------------------------------------------- 1 | package winsock2 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinSock2Apis) 8 | AddApis(WinSock2ANSIApis) 9 | AddApis(WinSock2UnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/winsvc/winsvc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winsvc provides API definitions for accessing 5 | //advapi32.dll. 6 | package winsvc 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/advapi32" 13 | ) 14 | 15 | var ( 16 | ChangeServiceConfig func( 17 | Service T.SC_HANDLE, 18 | ServiceType, 19 | StartType, 20 | ErrorControl T.DWORD, 21 | BinaryPathName, 22 | LoadOrderGroup VString, 23 | TagId *T.DWORD, 24 | Dependencies, 25 | ServiceStartName, 26 | Password, 27 | DisplayName VString) (T.BOOL, error) 28 | 29 | ChangeServiceConfig2 func( 30 | Service T.SC_HANDLE, 31 | InfoLevel T.DWORD, 32 | Info *T.VOID) (T.BOOL, error) 33 | 34 | CloseServiceHandle func(SCObject T.SC_HANDLE) (T.BOOL, error) 35 | 36 | ControlService func( 37 | Service T.SC_HANDLE, 38 | Control T.DWORD, 39 | ServiceStatus *T.SERVICE_STATUS) (T.BOOL, error) 40 | 41 | CreateService func( 42 | SCManager T.SC_HANDLE, 43 | ServiceName, 44 | DisplayName VString, 45 | DesiredAccess, 46 | ServiceType, 47 | StartType, 48 | ErrorControl T.DWORD, 49 | BinaryPathName, 50 | LoadOrderGroup VString, 51 | TagId *T.DWORD, 52 | Dependencies, 53 | ServiceStartName, 54 | Password VString) (T.SC_HANDLE, error) 55 | 56 | DeleteService func(Service T.SC_HANDLE) (T.BOOL, error) 57 | 58 | EnumDependentServices func( 59 | Service T.SC_HANDLE, 60 | ServiceState T.DWORD, 61 | Services *T.ENUM_SERVICE_STATUS, 62 | BufSize T.DWORD, 63 | BytesNeeded, 64 | ServicesReturned *T.DWORD) (T.BOOL, error) 65 | 66 | EnumServicesStatus func( 67 | SCManager T.SC_HANDLE, 68 | ServiceType, 69 | ServiceState T.DWORD, 70 | Services *T.ENUM_SERVICE_STATUS, 71 | BufSize T.DWORD, 72 | BytesNeeded, 73 | ServicesReturned, 74 | ResumeHandle *T.DWORD) (T.BOOL, error) 75 | 76 | EnumServicesStatusEx func( 77 | SCManager T.SC_HANDLE, 78 | InfoLevel T.SC_ENUM_TYPE, 79 | ServiceType, 80 | ServiceState T.DWORD, 81 | Services *T.BYTE, 82 | BufSize T.DWORD, 83 | BytesNeeded, 84 | ServicesReturned, 85 | ResumeHandle *T.DWORD, 86 | pszGroupName VString) (T.BOOL, error) 87 | 88 | GetServiceKeyName func( 89 | SCManager T.SC_HANDLE, 90 | DisplayName VString, 91 | ServiceName OVString, 92 | cBuffer *T.DWORD) (T.BOOL, error) 93 | 94 | GetServiceDisplayName func( 95 | SCManager T.SC_HANDLE, 96 | ServiceName VString, 97 | DisplayName OVString, 98 | cBuffer *T.DWORD) (T.BOOL, error) 99 | 100 | LockServiceDatabase func(SCManager T.SC_HANDLE) (T.SC_LOCK, error) 101 | 102 | NotifyBootConfigStatus func(BootAcceptable T.BOOL) (T.BOOL, error) 103 | 104 | OpenSCManager func( 105 | MachineName, 106 | DatabaseName VString, 107 | DesiredAccess T.DWORD) (T.SC_HANDLE, error) 108 | 109 | OpenService func( 110 | SCManager T.SC_HANDLE, 111 | ServiceName VString, 112 | DesiredAccess T.DWORD) (T.SC_HANDLE, error) 113 | 114 | QueryServiceConfig func( 115 | Service T.SC_HANDLE, 116 | ServiceConfig *T.QUERY_SERVICE_CONFIG, 117 | BufSize T.DWORD, 118 | BytesNeeded *T.DWORD) (T.BOOL, error) 119 | 120 | QueryServiceConfig2 func( 121 | Service T.SC_HANDLE, 122 | InfoLevel T.DWORD, 123 | Buffer *T.BYTE, 124 | BufSize T.DWORD, 125 | BytesNeeded *T.DWORD) (T.BOOL, error) 126 | 127 | QueryServiceLockStatus func( 128 | SCManager T.SC_HANDLE, 129 | LockStatus *T.QUERY_SERVICE_LOCK_STATUS, 130 | BufSize T.DWORD, 131 | BytesNeeded *T.DWORD) (T.BOOL, error) 132 | 133 | QueryServiceObjectSecurity func( 134 | Service T.SC_HANDLE, 135 | SecurityInformation T.SECURITY_INFORMATION, 136 | SecurityDescriptor *T.SECURITY_DESCRIPTOR, 137 | BufSize T.DWORD, 138 | BytesNeeded *T.DWORD) (T.BOOL, error) 139 | 140 | QueryServiceStatus func( 141 | Service T.SC_HANDLE, 142 | ServiceStatus *T.SERVICE_STATUS) (T.BOOL, error) 143 | 144 | QueryServiceStatusEx func( 145 | Service T.SC_HANDLE, 146 | InfoLevel T.SC_STATUS_TYPE, 147 | Buffer *T.BYTE, 148 | BufSize T.DWORD, 149 | BytesNeeded *T.DWORD) (T.BOOL, error) 150 | 151 | RegisterServiceCtrlHandler func( 152 | ServiceName VString, 153 | HandlerProc *T.HANDLER_FUNCTION) (T.SERVICE_STATUS_HANDLE, error) 154 | 155 | RegisterServiceCtrlHandlerEx func( 156 | ServiceName VString, 157 | HandlerProc *T.HANDLER_FUNCTION_EX, 158 | Context *T.VOID) (T.SERVICE_STATUS_HANDLE, error) 159 | 160 | SetServiceObjectSecurity func( 161 | Service T.SC_HANDLE, 162 | SecurityInformation T.SECURITY_INFORMATION, 163 | SecurityDescriptor *T.SECURITY_DESCRIPTOR) (T.BOOL, error) 164 | 165 | SetServiceStatus func( 166 | ServiceStatusH T.SERVICE_STATUS_HANDLE, 167 | ServiceStatus *T.SERVICE_STATUS) (T.BOOL, error) 168 | 169 | StartServiceCtrlDispatcher func( 170 | ServiceStartTable *T.SERVICE_TABLE_ENTRY) (T.BOOL, error) 171 | 172 | StartService func( 173 | Service T.SC_HANDLE, 174 | NumServiceArgs T.DWORD, 175 | ServiceArgVectors *VString) (T.BOOL, error) 176 | 177 | UnlockServiceDatabase func(ScLock T.SC_LOCK) (T.BOOL, error) 178 | ) 179 | 180 | var WinSvcANSIApis = outside.Apis{ 181 | {"ChangeServiceConfigA", &ChangeServiceConfig}, 182 | {"ChangeServiceConfig2A", &ChangeServiceConfig2}, 183 | {"CreateServiceA", &CreateService}, 184 | {"EnumDependentServicesA", &EnumDependentServices}, 185 | {"EnumServicesStatusA", &EnumServicesStatus}, 186 | {"EnumServicesStatusExA", &EnumServicesStatusEx}, 187 | {"GetServiceKeyNameA", &GetServiceKeyName}, 188 | {"GetServiceDisplayNameA", &GetServiceDisplayName}, 189 | {"OpenSCManagerA", &OpenSCManager}, 190 | {"OpenServiceA", &OpenService}, 191 | {"QueryServiceConfigA", &QueryServiceConfig}, 192 | {"QueryServiceConfig2A", &QueryServiceConfig2}, 193 | {"QueryServiceLockStatusA", &QueryServiceLockStatus}, 194 | {"RegisterServiceCtrlHandlerA", &RegisterServiceCtrlHandler}, 195 | {"RegisterServiceCtrlHandlerExA", &RegisterServiceCtrlHandlerEx}, 196 | {"StartServiceCtrlDispatcherA", &StartServiceCtrlDispatcher}, 197 | {"StartServiceA", &StartService}, 198 | } 199 | 200 | var WinSvcUnicodeApis = outside.Apis{ 201 | {"ChangeServiceConfigW", &ChangeServiceConfig}, 202 | {"ChangeServiceConfig2W", &ChangeServiceConfig2}, 203 | {"CreateServiceW", &CreateService}, 204 | {"EnumDependentServicesW", &EnumDependentServices}, 205 | {"EnumServicesStatusW", &EnumServicesStatus}, 206 | {"EnumServicesStatusExW", &EnumServicesStatusEx}, 207 | {"GetServiceKeyNameW", &GetServiceKeyName}, 208 | {"GetServiceDisplayNameW", &GetServiceDisplayName}, 209 | {"OpenSCManagerW", &OpenSCManager}, 210 | {"OpenServiceW", &OpenService}, 211 | {"QueryServiceConfigW", &QueryServiceConfig}, 212 | {"QueryServiceConfig2W", &QueryServiceConfig2}, 213 | {"QueryServiceLockStatusW", &QueryServiceLockStatus}, 214 | {"RegisterServiceCtrlHandlerW", &RegisterServiceCtrlHandler}, 215 | {"RegisterServiceCtrlHandlerExW", &RegisterServiceCtrlHandlerEx}, 216 | {"StartServiceCtrlDispatcherW", &StartServiceCtrlDispatcher}, 217 | {"StartServiceW", &StartService}, 218 | } 219 | 220 | var WinSvcApis = outside.Apis{ 221 | {"CloseServiceHandle", &CloseServiceHandle}, 222 | {"ControlService", &ControlService}, 223 | {"DeleteService", &DeleteService}, 224 | {"LockServiceDatabase", &LockServiceDatabase}, 225 | {"NotifyBootConfigStatus", &NotifyBootConfigStatus}, 226 | {"QueryServiceObjectSecurity", &QueryServiceObjectSecurity}, 227 | {"QueryServiceStatus", &QueryServiceStatus}, 228 | {"QueryServiceStatusEx", &QueryServiceStatusEx}, 229 | {"SetServiceObjectSecurity", &SetServiceObjectSecurity}, 230 | {"SetServiceStatus", &SetServiceStatus}, 231 | {"UnlockServiceDatabase", &UnlockServiceDatabase}, 232 | } 233 | -------------------------------------------------------------------------------- /returnError/winsvc/winsvc_test.go: -------------------------------------------------------------------------------- 1 | package winsvc 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinSvcApis) 8 | AddApis(WinSvcANSIApis) 9 | AddApis(WinSvcUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /returnError/winuser/winuser_test.go: -------------------------------------------------------------------------------- 1 | package winuser 2 | 3 | import ( 4 | "github.com/tHinqa/outside" 5 | . "github.com/tHinqa/outside-windows/types" 6 | . "github.com/tHinqa/outside/types" 7 | "testing" 8 | "unsafe" 9 | ) 10 | 11 | // import "unsafe" 12 | 13 | func init() { 14 | outside.AddApis(WinUserApis) 15 | // outside.AddApis(WinUserANSIApis) 16 | outside.AddApis(WinUserUnicodeApis) 17 | } 18 | 19 | //TODO(t): Handle output string buffers 20 | 21 | func callback(h HWND, l LPARAM) BOOL { 22 | var t [256]WChar 23 | GetClassName(h, &t[0], 255) 24 | // c := CStrToString((uintptr)(unsafe.Pointer(&t[0]))) 25 | // c := UniStrToString((uintptr)(unsafe.Pointer(&t[0]))) 26 | // s := GetWindowTextLength(h) 27 | // for i := LPARAM(0); i < l; i++ { 28 | // Print("\t") 29 | // } 30 | 31 | // Print(c) 32 | // if s != 0 { 33 | // GetWindowText(h, &t[0], 255) 34 | // // Print(" ", CStrToString((uintptr)(unsafe.Pointer(&t[0])))) 35 | // // Print(" ", UniStrToString((uintptr)(unsafe.Pointer(&t[0])))) 36 | // } 37 | // Println() 38 | EnumChildWindows(h, callback, l+1) 39 | W++ 40 | return 1 41 | } 42 | 43 | var W uint32 44 | 45 | var tT *testing.T 46 | 47 | func wscallback(c *VString, l LPARAM) BOOL { 48 | if l != 123 { 49 | return 0 50 | } 51 | tT.Log(*c) 52 | return 1 53 | } 54 | 55 | func TestEnumWindows(t *testing.T) { 56 | ew, e := EnumWindows(callback, 0) 57 | if ew == 0 { 58 | t.Fatal(e) 59 | } 60 | t.Log(W, "Windows") 61 | } 62 | func TestEnumDesktops(t *testing.T) { 63 | tT = t 64 | h, _ := GetProcessWindowStation() 65 | ed, e := EnumDesktops(h, wscallback, 123) 66 | if ed == 0 { 67 | t.Fatal(e) 68 | } 69 | } 70 | func TestEnumWindowStations(t *testing.T) { 71 | tT = t 72 | ew, e := EnumWindowStations(wscallback, 123) 73 | if ew == 0 { 74 | t.Fatal(e) 75 | } 76 | } 77 | 78 | func TestWsprintf(t *testing.T) { 79 | tT = t 80 | var o [1000]WChar 81 | Wsprintf(&o[0], "%d %d %d", 123, 456, 789) 82 | t.Log(outside.UniStrToString((uintptr)(unsafe.Pointer(&o[0])))) 83 | } 84 | -------------------------------------------------------------------------------- /shellapi/shellapi.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package shellapi provides API definitions for accessing 5 | //shell32.dll. 6 | package shellapi 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/shell32" 13 | ) 14 | 15 | var ( 16 | DragQueryFile func(T.HDROP, T.UINT, VString, T.UINT) T.UINT 17 | 18 | DragQueryPoint func(T.HDROP, *T.POINT) T.BOOL 19 | 20 | DragFinish func(T.HDROP) 21 | 22 | DragAcceptFiles func(T.HWND, T.BOOL) 23 | 24 | ShellExecute func(wnd T.HWND, 25 | operation, file, parameters, directory VString, 26 | showCmd T.INT) T.HINSTANCE 27 | 28 | FindExecutable func( 29 | file, directory VString, result OVString) T.HINSTANCE 30 | 31 | CommandLineToArgvW func( 32 | cmdLine T.WString, numArgs *int) *T.WString 33 | //TODO(t):*WString was *LPWSTR 34 | 35 | ShellAbout func( 36 | wnd T.HWND, 37 | app, otherStuff VString, 38 | icon T.HICON) T.INT 39 | 40 | DuplicateIcon func(Inst T.HINSTANCE, icon T.HICON) T.HICON 41 | 42 | ExtractAssociatedIcon func( 43 | inst T.HINSTANCE, iconPath VString, icon *T.WORD) T.HICON 44 | 45 | ExtractAssociatedIconEx func( 46 | inst T.HINSTANCE, 47 | iconPath VString, 48 | iconIndex *T.WORD, 49 | iconId *T.WORD) T.HICON 50 | 51 | ExtractIcon func( 52 | inst T.HINSTANCE, 53 | exeFileName VString, 54 | iconIndex T.UINT) T.HICON 55 | 56 | ExtractIconEx func( 57 | file VString, 58 | iconIndex int, 59 | large, small *T.HICON, 60 | icons T.UINT) T.UINT 61 | 62 | SHFreeNameMappings func(hNameMappings T.HANDLE) 63 | 64 | WinExecError func( 65 | wnd T.HWND, 66 | err int, 67 | fileName, 68 | title VString) 69 | 70 | SHCreateProcessAsUserW func( 71 | scpi *T.SHCREATEPROCESSINFOW) T.BOOL 72 | 73 | SHGetFileInfoA func( 74 | path T.AString, 75 | fileAttributes T.DWORD, 76 | sfi *T.SHFILEINFOA, 77 | fileInfo, flags T.UINT) T.DWORD_PTR 78 | 79 | SHGetFileInfoW func( 80 | path T.WString, 81 | fileAttributes T.DWORD, 82 | sfi *T.SHFILEINFOW, 83 | fileInfo, flags T.UINT) T.DWORD_PTR 84 | 85 | SHGetDiskFreeSpaceEx func( 86 | directoryName VString, 87 | freeBytesAvailableToCaller, 88 | totalNumberOfBytes, 89 | totalNumberOfFreeBytes *T.ULARGE_INTEGER) T.BOOL 90 | 91 | SHGetNewLinkInfo func( 92 | linkTo, dir VString, 93 | name OVString, 94 | mustCopy *T.BOOL, 95 | flags T.UINT) T.BOOL 96 | 97 | SHInvokePrinterCommand func( 98 | wnd T.HWND, 99 | action T.UINT, 100 | buf1, buf2 VString, 101 | modal T.BOOL) T.BOOL 102 | 103 | IsLFNDrive func(Path VString) T.BOOL 104 | 105 | SHEnumerateUnreadMailAccounts func( 106 | keyUser T.HKEY, 107 | index T.DWORD, 108 | mailAddress OVString, 109 | cMailAddress int) 110 | 111 | SHGetUnreadMailCount func( 112 | keyUser T.HKEY, 113 | mailAddress VString, 114 | count *T.DWORD, 115 | fileTime *T.FILETIME, 116 | shellExecuteCommand OVString, 117 | cShellExecuteCommand int) 118 | 119 | SHSetUnreadMailCount func( 120 | mailAddress VString, 121 | count T.DWORD, 122 | shellExecuteCommand T.AString) 123 | 124 | SHTestTokenMembership func( 125 | token T.HANDLE, rid T.ULONG) T.BOOL 126 | 127 | SHGetImageList func( 128 | imageList int, riid T.REFIID, Obj **T.VOID) 129 | ) 130 | 131 | var ShellApiANSIApis = outside.Apis{ 132 | {"ExtractAssociatedIconA", &ExtractAssociatedIcon}, 133 | {"ExtractAssociatedIconExA", &ExtractAssociatedIconEx}, 134 | {"ExtractIconA", &ExtractIcon}, 135 | {"ExtractIconExA", &ExtractIconEx}, 136 | {"FindExecutableA", &FindExecutable}, 137 | {"ShellAboutA", &ShellAbout}, 138 | {"ShellExecuteA", &ShellExecute}, 139 | {"SHGetDiskFreeSpaceExA", &SHGetDiskFreeSpaceEx}, 140 | {"SHGetFileInfoA", &SHGetFileInfoA}, 141 | {"SHInvokePrinterCommandA", &SHInvokePrinterCommand}, 142 | } 143 | 144 | var ShellApiUnicodeApis = outside.Apis{ 145 | {"ExtractAssociatedIconW", &ExtractAssociatedIcon}, 146 | {"ExtractAssociatedIconExW", &ExtractAssociatedIconEx}, 147 | {"ExtractIconW", &ExtractIcon}, 148 | {"ExtractIconExW", &ExtractIconEx}, 149 | {"FindExecutableW", &FindExecutable}, 150 | {"ShellAboutW", &ShellAbout}, 151 | {"ShellExecuteW", &ShellExecute}, 152 | {"SHGetDiskFreeSpaceExW", &SHGetDiskFreeSpaceEx}, 153 | {"SHGetFileInfoW", &SHGetFileInfoW}, 154 | {"SHInvokePrinterCommandW", &SHInvokePrinterCommand}, 155 | } 156 | 157 | //NOTR(t):Not implemented 158 | //{"WinExecErrorA", &WinExecError}, 159 | //{"WinExecErrorW", &WinExecError}, 160 | 161 | //TODO(t): Not on XP 162 | //{"SHEnumerateUnreadMailAccounts", &SHEnumerateUnreadMailAccounts}, 163 | //{"SHGetUnreadMailCount", &SHGetUnreadMailCount}, 164 | //{"SHSetUnreadMailCount", &SHSetUnreadMailCount}, 165 | 166 | var ShellApiApis = outside.Apis{ 167 | {"CommandLineToArgvW", &CommandLineToArgvW}, 168 | {"DragAcceptFiles", &DragAcceptFiles}, 169 | {"DragFinish", &DragFinish}, 170 | {"DragQueryFile", &DragQueryFile}, 171 | {"DragQueryPoint", &DragQueryPoint}, 172 | {"DuplicateIcon", &DuplicateIcon}, 173 | {"IsLFNDrive", &IsLFNDrive}, 174 | {"SHCreateProcessAsUserW", &SHCreateProcessAsUserW}, 175 | {"SHFreeNameMappings", &SHFreeNameMappings}, 176 | {"SHGetImageList", &SHGetImageList}, 177 | {"SHGetNewLinkInfo", &SHGetNewLinkInfo}, 178 | {"SHTestTokenMembership", &SHTestTokenMembership}, 179 | } 180 | -------------------------------------------------------------------------------- /shellapi/shellapi_test.go: -------------------------------------------------------------------------------- 1 | package shellapi 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(ShellApiApis) 8 | AddApis(ShellApiANSIApis) 9 | AddApis(ShellApiUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /types/types_test.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import "testing" 4 | 5 | func TestWM(t *testing.T) { 6 | if WM_CLOSE != 0x0010 || 7 | WM_SETCURSOR != 0x0020 || 8 | WM_SETFONT != 0x30 || 9 | WM_COMPACTING != 0x41 || 10 | WM_INPUTLANGCHANGEREQUEST != 0x50 || 11 | WM_SETICON != 0x80 || 12 | WM_NCMOUSEMOVE != 0xA0 || 13 | WM_KEYDOWN != 0x100 || 14 | WM_INITDIALOG != 0x110 || 15 | WM_MENUCHAR != 0x120 || 16 | WM_CTLCOLORMSGBOX != 0x132 || 17 | WM_PARENTNOTIFY != 0x210 || 18 | WM_DEVICECHANGE != 0x219 || 19 | WM_MDICREATE != 0x220 || 20 | WM_MDISETMENU != 0x0230 || 21 | WM_PALETTEISCHANGING != 0x0310 || 22 | WM_THEMECHANGED != 0x031A || 23 | false { 24 | t.Error("WINDOW_MESSAGE integrity lost") 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /winbase/winbase_test.go: -------------------------------------------------------------------------------- 1 | package winbase 2 | 3 | import ( 4 | . "github.com/tHinqa/outside" 5 | . "github.com/tHinqa/outside-windows/types" 6 | . "github.com/tHinqa/outside/types" 7 | "syscall" 8 | "testing" 9 | ) 10 | 11 | import . "unsafe" 12 | 13 | func init() { 14 | AddApis(WinBaseApis) 15 | AddApis(WinBaseANSIApis) 16 | //AddApis(WinBaseUnicodeApis) 17 | SI.Len = DWORD(Sizeof(SI)) 18 | } 19 | 20 | var SI STARTUPINFO 21 | var ST SYSTEMTIME 22 | 23 | func Test(t *testing.T) { 24 | Buffer := new(MEMORYSTATUSEX) 25 | SetStructSize(Buffer) 26 | ret := GlobalMemoryStatusEx(Buffer) 27 | t.Logf("%v %+v\n", ret, *Buffer) 28 | 29 | var a, i DWORD 30 | var b BOOL 31 | t.Logf("%v %v %v %v\n", GetSystemTimeAdjustment(&a, &i, &b), a, i, b) 32 | 33 | GetStartupInfo(&SI) 34 | t.Logf("%+v\n%s\n%s\n", SI, *SI.Desktop, *SI.Title) 35 | 36 | GetLocalTime(&ST) 37 | t.Logf("%+v\n", ST) 38 | } 39 | 40 | func BenchmarkSyscall(b *testing.B) { 41 | var d = syscall.MustLoadDLL("kernel32.dll") 42 | defer d.Release() 43 | var G = d.MustFindProc("GetStartupInfoA") 44 | for i := 0; i < b.N; i++ { 45 | syscall.Syscall(G.Addr(), 1, (uintptr)(Pointer(&SI)), 0, 0) 46 | } 47 | } 48 | 49 | func BenchmarkReflectStartupInfo(b *testing.B) { 50 | for i := 0; i < b.N; i++ { 51 | GetStartupInfo(&SI) 52 | } 53 | } 54 | 55 | func BenchmarkVanillaStartupInfo(b *testing.B) { 56 | var d = syscall.MustLoadDLL("kernel32.dll") 57 | var G = d.MustFindProc("GetStartupInfoA") 58 | defer d.Release() 59 | for i := 0; i < b.N; i++ { 60 | syscall.Syscall(G.Addr(), 1, (uintptr)(Pointer(&SI)), 0, 0) 61 | s := OVString(CStrToString((uintptr)(Pointer(SI.Desktop)))) 62 | SI.Desktop = &s 63 | s = OVString(CStrToString((uintptr)(Pointer(SI.Title)))) 64 | SI.Title = &s 65 | } 66 | } 67 | 68 | func BenchmarkReflectSystemTime(b *testing.B) { 69 | for i := 0; i < b.N; i++ { 70 | GetLocalTime(&ST) 71 | } 72 | } 73 | 74 | func BenchmarkVanillaSystemTime(b *testing.B) { 75 | var d = syscall.MustLoadDLL("kernel32.dll") 76 | var G = d.MustFindProc("GetLocalTime") 77 | defer d.Release() 78 | for i := 0; i < b.N; i++ { 79 | syscall.Syscall(G.Addr(), 1, (uintptr)(Pointer(&ST)), 0, 0) 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /wincon/wincom_test.go: -------------------------------------------------------------------------------- 1 | package wincon 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinConApis) 8 | AddApis(WinConANSIApis) 9 | AddApis(WinConUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /wincon/wincon.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package wincon provides API definitions for accessing the console 5 | //functions in kernel32.dll. 6 | package wincon 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/kernel32" 13 | ) 14 | 15 | var ( 16 | PeekConsoleInput func( 17 | consoleInput T.HANDLE, 18 | buffer *T.INPUT_RECORD, 19 | length T.DWORD, 20 | numberOfEventsRead *T.DWORD) T.BOOL 21 | 22 | ReadConsoleInput func( 23 | consoleInput T.HANDLE, 24 | buffer *T.INPUT_RECORD, 25 | length T.DWORD, 26 | numberOfEventsRead *T.DWORD) T.BOOL 27 | 28 | WriteConsoleInput func( 29 | consoleInput T.HANDLE, 30 | buffer *T.INPUT_RECORD, 31 | length T.DWORD, 32 | numberOfEventsWritten *T.DWORD) T.BOOL 33 | 34 | ReadConsoleOutput func( 35 | consoleOutput T.HANDLE, 36 | buffer *T.CHAR_INFO, 37 | bufferSize T.COORD, 38 | bufferCoord T.COORD, 39 | readRegion *T.SMALL_RECT) T.BOOL 40 | 41 | WriteConsoleOutput func( 42 | consoleOutput T.HANDLE, 43 | buffer *T.CHAR_INFO, 44 | bufferSize T.COORD, 45 | bufferCoord T.COORD, 46 | writeRegion *T.SMALL_RECT) T.BOOL 47 | 48 | ReadConsoleOutputCharacter func( 49 | hConsoleOutput T.HANDLE, 50 | character OVString, 51 | length T.DWORD, 52 | readCoord T.COORD, 53 | numberOfCharsRead *T.DWORD) T.BOOL 54 | 55 | ReadConsoleOutputAttribute func( 56 | consoleOutput T.HANDLE, 57 | attribute *T.WORD, 58 | length T.DWORD, 59 | readCoord T.COORD, 60 | numberOfAttrsRead *T.DWORD) T.BOOL 61 | 62 | WriteConsoleOutputCharacter func( 63 | consoleOutput T.HANDLE, 64 | character VString, 65 | length T.DWORD, 66 | writeCoord T.COORD, 67 | numberOfCharsWritten *T.DWORD) T.BOOL 68 | 69 | WriteConsoleOutputAttribute func( 70 | consoleOutput T.HANDLE, 71 | attribute *T.WORD, 72 | length T.DWORD, 73 | writeCoord T.COORD, 74 | numberOfAttrsWritten *T.DWORD) T.BOOL 75 | 76 | FillConsoleOutputCharacter func( 77 | consoleOutput T.HANDLE, 78 | character T.VChar, 79 | length T.DWORD, 80 | writeCoord T.COORD, 81 | numberOfCharsWritten *T.DWORD) T.BOOL 82 | 83 | FillConsoleOutputAttribute func( 84 | consoleOutput T.HANDLE, 85 | attribute T.WORD, 86 | length T.DWORD, 87 | writeCoord T.COORD, 88 | numberOfAttrsWritten *T.DWORD) T.BOOL 89 | 90 | GetConsoleMode func( 91 | consoleHandle T.HANDLE, 92 | mode *T.DWORD) T.BOOL 93 | 94 | GetNumberOfConsoleInputEvents func( 95 | consoleInput T.HANDLE, 96 | numberOfEvents *T.DWORD) T.BOOL 97 | 98 | GetConsoleScreenBufferInfo func( 99 | consoleOutput T.HANDLE, 100 | consoleScreenBufferInfo *T.CONSOLE_SCREEN_BUFFER_INFO) T.BOOL 101 | 102 | GetLargestConsoleWindowSize func( 103 | consoleOutput T.HANDLE) T.COORD 104 | 105 | GetConsoleCursorInfo func( 106 | consoleOutput T.HANDLE, 107 | consoleCursorInfo *T.CONSOLE_CURSOR_INFO) T.BOOL 108 | 109 | GetCurrentConsoleFont func( 110 | consoleOutput T.HANDLE, 111 | maximumWindow T.BOOL, 112 | consoleCurrentFont *T.CONSOLE_FONT_INFO) T.BOOL 113 | 114 | GetConsoleFontSize func( 115 | consoleOutput T.HANDLE, 116 | font T.DWORD) T.COORD 117 | 118 | GetConsoleSelectionInfo func( 119 | consoleSelectionInfo *T.CONSOLE_SELECTION_INFO) T.BOOL 120 | 121 | GetNumberOfConsoleMouseButtons func( 122 | numberOfMouseButtons *T.DWORD) T.BOOL 123 | 124 | SetConsoleMode func( 125 | consoleHandle T.HANDLE, 126 | mode T.DWORD) T.BOOL 127 | 128 | SetConsoleActiveScreenBuffer func( 129 | consoleOutput T.HANDLE) T.BOOL 130 | 131 | FlushConsoleInputBuffer func( 132 | consoleInput T.HANDLE) T.BOOL 133 | 134 | SetConsoleScreenBufferSize func( 135 | consoleOutput T.HANDLE, 136 | size T.COORD) T.BOOL 137 | 138 | SetConsoleCursorPosition func( 139 | consoleOutput T.HANDLE, 140 | cursorPosition T.COORD) T.BOOL 141 | 142 | SetConsoleCursorInfo func( 143 | consoleOutput T.HANDLE, 144 | consoleCursorInfo *T.CONSOLE_CURSOR_INFO) T.BOOL 145 | 146 | ScrollConsoleScreenBuffer func( 147 | consoleOutput T.HANDLE, 148 | scrollRectangle *T.SMALL_RECT, 149 | clipRectangle *T.SMALL_RECT, 150 | destinationOrigin T.COORD, 151 | fill *T.CHAR_INFO) T.BOOL 152 | 153 | SetConsoleWindowInfo func( 154 | consoleOutput T.HANDLE, 155 | absolute T.BOOL, 156 | consoleWindow *T.SMALL_RECT) T.BOOL 157 | 158 | SetConsoleTextAttribute func( 159 | consoleOutput T.HANDLE, attributes T.WORD) T.BOOL 160 | 161 | SetConsoleCtrlHandler func( 162 | handlerRoutine *T.HANDLER_ROUTINE, add T.BOOL) T.BOOL 163 | 164 | GenerateConsoleCtrlEvent func( 165 | ctrlEvent T.DWORD, processGroupId T.DWORD) T.BOOL 166 | 167 | AllocConsole func() T.BOOL 168 | 169 | FreeConsole func() T.BOOL 170 | 171 | AttachConsole func(processId T.DWORD) T.BOOL 172 | 173 | GetConsoleTitle func( 174 | consoleTitle OVString, size T.DWORD) T.DWORD 175 | 176 | SetConsoleTitle func( 177 | consoleTitle VString) T.BOOL 178 | 179 | ReadConsole func( 180 | consoleInputh T.HANDLE, 181 | buffer *T.VOID, 182 | numberOfCharsToRead T.DWORD, 183 | numberOfCharsRead *T.DWORD, 184 | reserved *T.VOID) T.BOOL 185 | 186 | WriteConsole func( 187 | consoleOutput T.HANDLE, 188 | buffer *T.VOID, 189 | numberOfCharsToWrite T.DWORD, 190 | numberOfCharsWritten *T.DWORD, 191 | reserved *T.VOID) T.BOOL 192 | 193 | CreateConsoleScreenBuffer func( 194 | desiredAccess T.DWORD, 195 | shareMode T.DWORD, 196 | securityAttributes *T.SECURITY_ATTRIBUTES, 197 | flags T.DWORD, 198 | screenBufferData *T.VOID) T.HANDLE 199 | 200 | GetConsoleCP func() T.UINT 201 | 202 | SetConsoleCP func(codePageID T.UINT) T.BOOL 203 | 204 | GetConsoleOutputCP func() T.UINT 205 | 206 | SetConsoleOutputCP func(wCodePageID T.UINT) T.BOOL 207 | 208 | GetConsoleDisplayMode func(lpModeFlags *T.DWORD) T.BOOL 209 | 210 | GetConsoleWindow func() T.HWND 211 | 212 | GetConsoleProcessList func( 213 | processList *T.DWORD, processCount T.DWORD) T.DWORD 214 | 215 | AddConsoleAlias func( 216 | source, Target, exeName VString) T.BOOL 217 | 218 | GetConsoleAlias func( 219 | source VString, 220 | targetBuffer OVString, 221 | targetBufferLength T.DWORD, 222 | exeName VString) T.DWORD 223 | 224 | GetConsoleAliasesLength func(exeName VString) T.DWORD 225 | 226 | GetConsoleAliasExesLength func() T.DWORD 227 | 228 | GetConsoleAliases func( 229 | aliasBuffer OVString, 230 | aliasBufferLength T.DWORD, 231 | exeName VString) T.DWORD 232 | 233 | GetConsoleAliasExes func( 234 | exeNameBuffer OVString, 235 | exeNameBufferLength T.DWORD) T.DWORD 236 | ) 237 | 238 | var WinConANSIApis = outside.Apis{ 239 | {"AddConsoleAliasA", &AddConsoleAlias}, 240 | {"FillConsoleOutputCharacterA", &FillConsoleOutputCharacter}, 241 | {"GetConsoleAliasA", &GetConsoleAlias}, 242 | {"GetConsoleAliasesA", &GetConsoleAliases}, 243 | {"GetConsoleAliasesLengthA", &GetConsoleAliasesLength}, 244 | {"GetConsoleAliasExesA", &GetConsoleAliasExes}, 245 | {"GetConsoleAliasExesLengthA", &GetConsoleAliasExesLength}, 246 | {"GetConsoleTitleA", &GetConsoleTitle}, 247 | {"PeekConsoleInputA", &PeekConsoleInput}, 248 | {"ReadConsoleA", &ReadConsole}, 249 | {"ReadConsoleInputA", &ReadConsoleInput}, 250 | {"ReadConsoleOutputA", &ReadConsoleOutput}, 251 | {"ReadConsoleOutputCharacterA", &ReadConsoleOutputCharacter}, 252 | {"ScrollConsoleScreenBufferA", &ScrollConsoleScreenBuffer}, 253 | {"SetConsoleTitleA", &SetConsoleTitle}, 254 | {"WriteConsoleA", &WriteConsole}, 255 | {"WriteConsoleInputA", &WriteConsoleInput}, 256 | {"WriteConsoleOutputA", &WriteConsoleOutput}, 257 | {"WriteConsoleOutputCharacterA", &WriteConsoleOutputCharacter}, 258 | } 259 | 260 | var WinConUnicodeApis = outside.Apis{ 261 | {"AddConsoleAliasW", &AddConsoleAlias}, 262 | {"FillConsoleOutputCharacterW", &FillConsoleOutputCharacter}, 263 | {"GetConsoleAliasW", &GetConsoleAlias}, 264 | {"GetConsoleAliasesW", &GetConsoleAliases}, 265 | {"GetConsoleAliasesLengthW", &GetConsoleAliasesLength}, 266 | {"GetConsoleAliasExesW", &GetConsoleAliasExes}, 267 | {"GetConsoleAliasExesLengthW", &GetConsoleAliasExesLength}, 268 | {"GetConsoleTitleW", &GetConsoleTitle}, 269 | {"PeekConsoleInputW", &PeekConsoleInput}, 270 | {"ReadConsoleW", &ReadConsole}, 271 | {"ReadConsoleInputW", &ReadConsoleInput}, 272 | {"ReadConsoleOutputW", &ReadConsoleOutput}, 273 | {"ReadConsoleOutputCharacterW", &ReadConsoleOutputCharacter}, 274 | {"ScrollConsoleScreenBufferW", &ScrollConsoleScreenBuffer}, 275 | {"SetConsoleTitleW", &SetConsoleTitle}, 276 | {"WriteConsoleW", &WriteConsole}, 277 | {"WriteConsoleInputW", &WriteConsoleInput}, 278 | {"WriteConsoleOutputW", &WriteConsoleOutput}, 279 | {"WriteConsoleOutputCharacterW", &WriteConsoleOutputCharacter}, 280 | } 281 | 282 | var WinConApis = outside.Apis{ 283 | {"AllocConsole", &AllocConsole}, 284 | {"AttachConsole", &AttachConsole}, 285 | {"CreateConsoleScreenBuffer", &CreateConsoleScreenBuffer}, 286 | {"FillConsoleOutputAttribute", &FillConsoleOutputAttribute}, 287 | {"FlushConsoleInputBuffer", &FlushConsoleInputBuffer}, 288 | {"FreeConsole", &FreeConsole}, 289 | {"GenerateConsoleCtrlEvent", &GenerateConsoleCtrlEvent}, 290 | {"GetConsoleCP", &GetConsoleCP}, 291 | {"GetConsoleCursorInfo", &GetConsoleCursorInfo}, 292 | {"GetConsoleDisplayMode", &GetConsoleDisplayMode}, 293 | {"GetConsoleFontSize", &GetConsoleFontSize}, 294 | {"GetConsoleMode", &GetConsoleMode}, 295 | {"GetConsoleOutputCP", &GetConsoleOutputCP}, 296 | {"GetConsoleProcessList", &GetConsoleProcessList}, 297 | {"GetConsoleScreenBufferInfo", &GetConsoleScreenBufferInfo}, 298 | {"GetConsoleSelectionInfo", &GetConsoleSelectionInfo}, 299 | {"GetConsoleWindow", &GetConsoleWindow}, 300 | {"GetCurrentConsoleFont", &GetCurrentConsoleFont}, 301 | {"GetLargestConsoleWindowSize", &GetLargestConsoleWindowSize}, 302 | {"GetNumberOfConsoleInputEvents", &GetNumberOfConsoleInputEvents}, 303 | {"GetNumberOfConsoleMouseButtons", &GetNumberOfConsoleMouseButtons}, 304 | {"ReadConsoleOutputAttribute", &ReadConsoleOutputAttribute}, 305 | {"SetConsoleActiveScreenBuffer", &SetConsoleActiveScreenBuffer}, 306 | {"SetConsoleCP", &SetConsoleCP}, 307 | {"SetConsoleCtrlHandler", &SetConsoleCtrlHandler}, 308 | {"SetConsoleCursorInfo", &SetConsoleCursorInfo}, 309 | {"SetConsoleCursorPosition", &SetConsoleCursorPosition}, 310 | {"SetConsoleMode", &SetConsoleMode}, 311 | {"SetConsoleOutputCP", &SetConsoleOutputCP}, 312 | {"SetConsoleScreenBufferSize", &SetConsoleScreenBufferSize}, 313 | {"SetConsoleTextAttribute", &SetConsoleTextAttribute}, 314 | {"SetConsoleWindowInfo", &SetConsoleWindowInfo}, 315 | {"WriteConsoleOutputAttribute", &WriteConsoleOutputAttribute}, 316 | } 317 | -------------------------------------------------------------------------------- /windows.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package windows. 5 | package windows 6 | 7 | import ( 8 | . "github.com/tHinqa/outside" 9 | . "github.com/tHinqa/outside-windows/commctrl" 10 | . "github.com/tHinqa/outside-windows/dde" 11 | . "github.com/tHinqa/outside-windows/lzexpand" 12 | . "github.com/tHinqa/outside-windows/mmsystem" 13 | . "github.com/tHinqa/outside-windows/nb30" 14 | . "github.com/tHinqa/outside-windows/ole2" 15 | . "github.com/tHinqa/outside-windows/shellapi" 16 | . "github.com/tHinqa/outside-windows/winbase" 17 | . "github.com/tHinqa/outside-windows/wincon" 18 | . "github.com/tHinqa/outside-windows/wingdi" 19 | . "github.com/tHinqa/outside-windows/winnetwk" 20 | . "github.com/tHinqa/outside-windows/winnls" 21 | . "github.com/tHinqa/outside-windows/winreg" 22 | // . "github.com/tHinqa/outside-windows/winsock" 23 | . "github.com/tHinqa/outside-windows/winsock2" 24 | . "github.com/tHinqa/outside-windows/winsvc" 25 | . "github.com/tHinqa/outside-windows/winuser" 26 | ) 27 | 28 | //TODO(t): Check for underscore and lowercase prefixes 29 | // New struct func filling in structsize 30 | // use s rather than c for size fields 31 | // Check all xxx xxxA dups 32 | 33 | func AllANSIApis() { 34 | AddApis(WinBaseApis) 35 | AddApis(WinBaseANSIApis) 36 | AddApis(WinUserApis) 37 | AddApis(WinUserANSIApis) 38 | AddApis(WinGdiApis) 39 | AddApis(WinGdiANSIApis) 40 | AddApis(WinConApis) 41 | AddApis(WinConANSIApis) 42 | AddApis(WinRegApis) 43 | AddApis(WinRegANSIApis) 44 | AddApis(ShellApiApis) 45 | AddApis(ShellApiANSIApis) 46 | AddApis(DdeApis) 47 | AddApis(DdeANSIApis) 48 | AddApis(WinSvcApis) 49 | AddApis(WinSvcANSIApis) 50 | AddApis(Ole2Apis) 51 | AddApis(CommCtrlApis) 52 | AddApis(CommCtrlANSIApis) 53 | AddApis(WinNlsApis) 54 | AddApis(WinNlsANSIApis) 55 | AddApis(LZExpandApis) 56 | AddApis(LZExpandANSIApis) 57 | AddApis(MMSystemApis) 58 | AddApis(MMSystemANSIApis) 59 | AddApis(Nb30Apis) 60 | //AddApis(WinSockApis) 61 | AddApis(WinSock2Apis) 62 | AddApis(WinSock2ANSIApis) 63 | AddApis(WinNetwkApis) 64 | AddApis(WinNetwkANSIApis) 65 | } 66 | 67 | func AllUnicodeApis() { 68 | AddApis(WinBaseApis) 69 | AddApis(WinBaseUnicodeApis) 70 | AddApis(WinUserApis) 71 | AddApis(WinUserUnicodeApis) 72 | AddApis(WinGdiApis) 73 | AddApis(WinGdiUnicodeApis) 74 | AddApis(WinConApis) 75 | AddApis(WinConUnicodeApis) 76 | AddApis(WinRegApis) 77 | AddApis(WinRegUnicodeApis) 78 | AddApis(ShellApiApis) 79 | AddApis(ShellApiUnicodeApis) 80 | AddApis(WinSvcApis) 81 | AddApis(WinSvcUnicodeApis) 82 | AddApis(Ole2Apis) 83 | AddApis(CommCtrlApis) 84 | AddApis(CommCtrlUnicodeApis) 85 | AddApis(WinNlsApis) 86 | AddApis(WinNlsUnicodeApis) 87 | AddApis(LZExpandApis) 88 | AddApis(LZExpandUnicodeApis) 89 | AddApis(MMSystemApis) 90 | AddApis(MMSystemUnicodeApis) 91 | AddApis(Nb30Apis) 92 | //AddApis(WinSockApis) 93 | AddApis(WinSock2Apis) 94 | AddApis(WinSock2UnicodeApis) 95 | AddApis(WinNetwkApis) 96 | AddApis(WinNetwkUnicodeApis) 97 | } 98 | -------------------------------------------------------------------------------- /windows_test.go: -------------------------------------------------------------------------------- 1 | package windows 2 | 3 | import "testing" 4 | 5 | func Test(*testing.T) { 6 | AllANSIApis() 7 | AllUnicodeApis() 8 | } 9 | -------------------------------------------------------------------------------- /wingdi/wingdi_test.go: -------------------------------------------------------------------------------- 1 | package wingdi 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinGdiApis) 8 | AddApis(WinGdiANSIApis) 9 | AddApis(WinGdiUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /winnetwk/winnetwk.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winnetwk provides API definitions for accessing 5 | //mpr.dll. 6 | package winnetwk 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/mpr" 13 | ) 14 | 15 | var ( 16 | WNetAddConnection func( 17 | RemoteName, Password, LocalName VString) T.DWORD 18 | 19 | WNetAddConnection2 func( 20 | NetResource *T.NETRESOURCE, 21 | Password, UserName VString, 22 | Flags T.DWORD) T.DWORD 23 | 24 | WNetAddConnection3 func( 25 | hwndOwner T.HWND, 26 | NetResource *T.NETRESOURCE, 27 | Password, UserName VString, 28 | Flags T.DWORD) T.DWORD 29 | 30 | WNetCancelConnection func(Name VString, fForce T.BOOL) T.DWORD 31 | 32 | WNetCancelConnection2 func( 33 | Name VString, Flags T.DWORD, Force T.BOOL) T.DWORD 34 | 35 | WNetGetConnection func( 36 | LocalName VString, 37 | RemoteName OVString, 38 | Length *T.DWORD) T.DWORD 39 | 40 | WNetRestoreConnection func( 41 | Parent T.HWND, 42 | Device VString) T.DWORD 43 | 44 | WNetUseConnection func( 45 | hwndOwner T.HWND, 46 | NetResource *T.NETRESOURCE, 47 | Password, UserID VString, 48 | Flags T.DWORD, 49 | AccessName OVString, BufferSize, 50 | Result *T.DWORD) T.DWORD 51 | 52 | WNetConnectionDialog func(Wnd T.HWND, Type T.DWORD) T.DWORD 53 | 54 | WNetDisconnectDialog func(Wnd T.HWND, Type T.DWORD) T.DWORD 55 | 56 | WNetOpenEnum func( 57 | Scope, Type, Usage T.DWORD, 58 | NetResource *T.NETRESOURCE, 59 | Enum *T.HANDLE) T.DWORD 60 | 61 | WNetEnumResource func( 62 | Enum T.HANDLE, 63 | Count *T.DWORD, 64 | Buffer *T.VOID, 65 | BufferSize *T.DWORD) T.DWORD 66 | 67 | WNetCloseEnum func( 68 | hEnum T.HANDLE) T.DWORD 69 | 70 | WNetGetResourceParent func( 71 | NetResource *T.NETRESOURCE, 72 | Buffer *T.VOID, 73 | BufferSize *T.DWORD) T.DWORD 74 | 75 | WNetGetResourceInformation func( 76 | NetResource *T.NETRESOURCE, 77 | Buffer *T.VOID, 78 | BufferSize *T.DWORD, 79 | System *OVString) T.DWORD 80 | 81 | WNetGetUser func( 82 | Name VString, 83 | UserName OVString, 84 | Length *T.DWORD) T.DWORD 85 | 86 | WNetGetProviderName func( 87 | NetType T.DWORD, 88 | ProviderName OVString, 89 | BufferSize *T.DWORD) T.DWORD 90 | 91 | WNetGetNetworkInformation func( 92 | Provider VString, 93 | NetInfoStruct *T.NETINFOSTRUCT) T.DWORD 94 | 95 | WNetGetLastError func( 96 | Error *T.DWORD, 97 | ErrorBuf OVString, 98 | ErrorBufSize T.DWORD, 99 | NameBuf OVString, 100 | NameBufSize T.DWORD) T.DWORD 101 | 102 | MultinetGetConnectionPerformance func( 103 | *T.NETRESOURCE, *T.NETCONNECTINFOSTRUCT) T.DWORD 104 | ) 105 | 106 | var WinNetwkANSIApis = outside.Apis{ 107 | {"MultinetGetConnectionPerformanceA", &MultinetGetConnectionPerformance}, 108 | {"WNetAddConnectionA", &WNetAddConnection}, 109 | {"WNetAddConnection2A", &WNetAddConnection2}, 110 | {"WNetAddConnection3A", &WNetAddConnection3}, 111 | {"WNetCancelConnectionA", &WNetCancelConnection}, 112 | {"WNetCancelConnection2A", &WNetCancelConnection2}, 113 | {"WNetEnumResourceA", &WNetEnumResource}, 114 | {"WNetGetConnectionA", &WNetGetConnection}, 115 | {"WNetGetLastErrorA", &WNetGetLastError}, 116 | {"WNetGetNetworkInformationA", &WNetGetNetworkInformation}, 117 | {"WNetGetProviderNameA", &WNetGetProviderName}, 118 | {"WNetGetResourceInformationA", &WNetGetResourceInformation}, 119 | {"WNetGetResourceParentA", &WNetGetResourceParent}, 120 | {"WNetGetUserA", &WNetGetUser}, 121 | {"WNetOpenEnumA", &WNetOpenEnum}, 122 | {"WNetUseConnectionA", &WNetUseConnection}, 123 | } 124 | 125 | var WinNetwkUnicodeApis = outside.Apis{ 126 | {"MultinetGetConnectionPerformanceW", &MultinetGetConnectionPerformance}, 127 | {"WNetAddConnectionW", &WNetAddConnection}, 128 | {"WNetAddConnection2W", &WNetAddConnection2}, 129 | {"WNetAddConnection3W", &WNetAddConnection3}, 130 | {"WNetCancelConnectionW", &WNetCancelConnection}, 131 | {"WNetCancelConnection2W", &WNetCancelConnection2}, 132 | {"WNetEnumResourceW", &WNetEnumResource}, 133 | {"WNetGetConnectionW", &WNetGetConnection}, 134 | {"WNetGetLastErrorW", &WNetGetLastError}, 135 | {"WNetGetNetworkInformationW", &WNetGetNetworkInformation}, 136 | {"WNetGetProviderNameW", &WNetGetProviderName}, 137 | {"WNetGetResourceInformationW", &WNetGetResourceInformation}, 138 | {"WNetGetResourceParentW", &WNetGetResourceParent}, 139 | {"WNetGetUserW", &WNetGetUser}, 140 | {"WNetOpenEnumW", &WNetOpenEnum}, 141 | {"WNetUseConnectionW", &WNetUseConnection}, 142 | } 143 | 144 | var WinNetwkApis = outside.Apis{ 145 | {"WNetCloseEnum", &WNetCloseEnum}, 146 | {"WNetConnectionDialog", &WNetConnectionDialog}, 147 | {"WNetDisconnectDialog", &WNetDisconnectDialog}, 148 | {"WNetRestoreConnectionW", &WNetRestoreConnection}, 149 | } 150 | -------------------------------------------------------------------------------- /winnetwk/winnetwk_test.go: -------------------------------------------------------------------------------- 1 | package winnetwk 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinNetwkApis) 8 | } 9 | -------------------------------------------------------------------------------- /winnls/winnls.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winnls provides API definitions for accessing 5 | //nls in kernel32.dll. 6 | package winnls 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/kernel32" 13 | ) 14 | 15 | var ( 16 | IsValidCodePage func(CodePage T.UINT) T.BOOL 17 | 18 | GetACP func() T.UINT 19 | 20 | GetOEMCP func() T.UINT 21 | 22 | GetCPInfo func(CodePage T.UINT, cpInfo *T.CPINFO) T.BOOL 23 | 24 | GetCPInfoExA func( 25 | CodePage T.UINT, Flags T.DWORD, cpInfoEx *T.CPINFOEXA) T.BOOL 26 | 27 | GetCPInfoExW func( 28 | CodePage T.UINT, Flags T.DWORD, cpInfoEx *T.CPINFOEXW) T.BOOL 29 | 30 | IsDBCSLeadByte func(TestChar T.BYTE) T.BOOL 31 | 32 | IsDBCSLeadByteEx func(CodePage T.UINT, TestChar T.BYTE) T.BOOL 33 | 34 | MultiByteToWideChar func( 35 | CodePage T.UINT, 36 | Flags T.DWORD, 37 | MultiByteStr T.AString, 38 | cbMultiByte int, 39 | WideCharStr T.OWString, 40 | WideChar int) int 41 | 42 | WideCharToMultiByte func( 43 | CodePage T.UINT, 44 | Flags T.DWORD, 45 | WideCharStr T.WString, 46 | WideChar int, 47 | MultiByteStr T.OAString, 48 | cbMultiByte int, 49 | DefaultChar T.AString, 50 | UsedDefaultChar *T.BOOL) int 51 | 52 | CompareString func( 53 | Locale T.LCID, 54 | CmpFlags T.DWORD, 55 | String1 VString, 56 | Count1 int, 57 | String2 VString, 58 | Count2 int) int 59 | 60 | LCMapString func( 61 | Locale T.LCID, 62 | MapFlags T.DWORD, 63 | SrcStr VString, 64 | Src int, 65 | DestStr OVString, 66 | Dest int) int 67 | 68 | GetLocaleInfo func( 69 | Locale T.LCID, 70 | LCType T.LCTYPE, 71 | LCData OVString, 72 | Data int) int 73 | 74 | SetLocaleInfo func( 75 | Locale T.LCID, 76 | LCType T.LCTYPE, 77 | LCData VString) T.BOOL 78 | 79 | GetCalendarInfo func( 80 | Locale T.LCID, 81 | Calendar T.CALID, 82 | CalType T.CALTYPE, 83 | CalData OVString, 84 | Data int, 85 | Value *T.DWORD) int 86 | 87 | SetCalendarInfo func( 88 | Locale T.LCID, 89 | Calendar T.CALID, 90 | CalType T.CALTYPE, 91 | CalData VString) T.BOOL 92 | 93 | GetTimeFormat func( 94 | Locale T.LCID, 95 | Flags T.DWORD, 96 | Time *T.SYSTEMTIME, 97 | Format VString, 98 | TimeStr OVString, 99 | cTime int) int 100 | 101 | GetDateFormat func( 102 | Locale T.LCID, 103 | Flags T.DWORD, 104 | Date *T.SYSTEMTIME, 105 | Format VString, 106 | DateStr OVString, 107 | cDate int) int 108 | 109 | GetNumberFormat func( 110 | Locale T.LCID, 111 | Flags T.DWORD, 112 | Value VString, 113 | Format *T.NUMBERFMT, 114 | NumberStr OVString, 115 | Number int) int 116 | 117 | GetCurrencyFormat func( 118 | Locale T.LCID, 119 | Flags T.DWORD, 120 | Value VString, 121 | Format *T.CURRENCYFMT, 122 | CurrencyStr OVString, 123 | Currency int) int 124 | 125 | EnumCalendarInfo func( 126 | CalInfoEnumProc T.CALINFO_ENUMPROC, 127 | Locale T.LCID, 128 | Calendar T.CALID, 129 | CalType T.CALTYPE) T.BOOL 130 | 131 | EnumCalendarInfoEx func( 132 | CalInfoEnumProcEx T.CALINFO_ENUMPROCEX, 133 | Locale T.LCID, 134 | Calendar T.CALID, 135 | CalType T.CALTYPE) T.BOOL 136 | 137 | EnumTimeFormats func( 138 | TimeFmtEnumProc T.TIMEFMT_ENUMPROC, 139 | Locale T.LCID, 140 | Flags T.DWORD) T.BOOL 141 | 142 | EnumDateFormats func( 143 | DateFmtEnumProc T.DATEFMT_ENUMPROC, 144 | Locale T.LCID, 145 | Flags T.DWORD) T.BOOL 146 | 147 | EnumDateFormatsEx func( 148 | DateFmtEnumProcEx T.DATEFMT_ENUMPROCEX, 149 | Locale T.LCID, 150 | Flags T.DWORD) T.BOOL 151 | 152 | IsValidLanguageGroup func( 153 | LanguageGroup T.LGRPID, 154 | Flags T.DWORD) T.BOOL 155 | 156 | GetNLSVersion func( 157 | T.NLS_FUNCTION, T.LCID, *T.NLSVERSIONINFO) T.BOOL 158 | 159 | IsNLSDefinedString func( 160 | Function T.NLS_FUNCTION, 161 | Flags T.DWORD, 162 | VersionInformation *T.NLSVERSIONINFO, 163 | String T.WString, 164 | Str T.INT) T.BOOL 165 | 166 | IsValidLocale func( 167 | Locale T.LCID, 168 | Flags T.DWORD) T.BOOL 169 | 170 | GetGeoInfo func( 171 | Location T.GEOID, 172 | GeoType T.GEOTYPE, 173 | GeoData OVString, 174 | Data int, 175 | LangId T.LANGID) int 176 | 177 | EnumSystemGeoID func( 178 | GeoClass T.GEOCLASS, 179 | ParentGeoId T.GEOID, 180 | GeoEnumProc T.GEO_ENUMPROC) T.BOOL 181 | 182 | GetUserGeoID func(GeoClass T.GEOCLASS) T.GEOID 183 | 184 | SetUserGeoID func(GeoId T.GEOID) T.BOOL 185 | 186 | ConvertDefaultLocale func(Locale T.LCID) T.LCID 187 | 188 | GetThreadLocale func() T.LCID 189 | 190 | SetThreadLocale func(Locale T.LCID) T.BOOL 191 | 192 | GetSystemDefaultUILanguage func() T.LANGID 193 | 194 | GetUserDefaultUILanguage func() T.LANGID 195 | 196 | GetSystemDefaultLangID func() T.LANGID 197 | 198 | GetUserDefaultLangID func() T.LANGID 199 | 200 | GetSystemDefaultLCID func() T.LCID 201 | 202 | GetUserDefaultLCID func() T.LCID 203 | 204 | GetStringTypeEx func( 205 | Locale T.LCID, 206 | InfoType T.DWORD, 207 | SrcStr VString, 208 | Src int, 209 | CharType *T.WORD) T.BOOL 210 | 211 | GetStringType func( 212 | Locale T.LCID, 213 | InfoType T.DWORD, 214 | SrcStr VString, 215 | Src int, 216 | CharType *T.WORD) T.BOOL 217 | 218 | FoldString func( 219 | MapFlags T.DWORD, 220 | SrcStr VString, 221 | Src int, 222 | DestStr OVString, 223 | Dest int) int 224 | 225 | EnumSystemLanguageGroups func( 226 | LanguageGroupEnumProc T.LANGUAGEGROUP_ENUMPROC, 227 | Flags T.DWORD, 228 | lParam T.LONG_PTR) T.BOOL 229 | 230 | EnumLanguageGroupLocales func( 231 | LangGroupLocaleEnumProc T.LANGGROUPLOCALE_ENUMPROC, 232 | LanguageGroup T.LGRPID, 233 | Flags T.DWORD, 234 | lParam T.LONG_PTR) T.BOOL 235 | 236 | EnumUILanguages func( 237 | UILanguageEnumProc T.UILANGUAGE_ENUMPROC, 238 | Flags T.DWORD, 239 | lParam T.LONG_PTR) T.BOOL 240 | 241 | EnumSystemLocales func( 242 | LocaleEnumProc T.LOCALE_ENUMPROC, 243 | Flags T.DWORD) T.BOOL 244 | 245 | EnumSystemCodePages func( 246 | CodePageEnumProc T.CODEPAGE_ENUMPROC, 247 | Flags T.DWORD) T.BOOL 248 | ) 249 | 250 | //TODO(t): not on XP 251 | //{"GetNLSVersion", &GetNLSVersion}, 252 | //{"IsNLSDefinedString", &IsNLSDefinedString}, 253 | 254 | var WinNlsANSIApis = outside.Apis{ 255 | {"GetCPInfoExA", &GetCPInfoExA}, 256 | {"LCMapStringA", &LCMapString}, 257 | {"GetLocaleInfoA", &GetLocaleInfo}, 258 | {"SetLocaleInfoA", &SetLocaleInfo}, 259 | {"GetCalendarInfoA", &GetCalendarInfo}, 260 | {"SetCalendarInfoA", &SetCalendarInfo}, 261 | {"GetTimeFormatA", &GetTimeFormat}, 262 | {"GetDateFormatA", &GetDateFormat}, 263 | {"CompareStringA", &CompareString}, 264 | {"GetNumberFormatA", &GetNumberFormat}, 265 | {"GetCurrencyFormatA", &GetCurrencyFormat}, 266 | {"EnumCalendarInfoA", &EnumCalendarInfo}, 267 | {"EnumCalendarInfoExA", &EnumCalendarInfoEx}, 268 | {"EnumTimeFormatsA", &EnumTimeFormats}, 269 | {"EnumDateFormatsA", &EnumDateFormats}, 270 | {"EnumDateFormatsExA", &EnumDateFormatsEx}, 271 | {"GetGeoInfoA", &GetGeoInfo}, 272 | {"GetStringTypeExA", &GetStringTypeEx}, 273 | {"GetStringTypeA", &GetStringType}, 274 | {"FoldStringA", &FoldString}, 275 | {"EnumSystemLanguageGroupsA", &EnumSystemLanguageGroups}, 276 | {"EnumLanguageGroupLocalesA", &EnumLanguageGroupLocales}, 277 | {"EnumUILanguagesA", &EnumUILanguages}, 278 | {"EnumSystemLocalesA", &EnumSystemLocales}, 279 | {"EnumSystemCodePagesA", &EnumSystemCodePages}, 280 | } 281 | 282 | var WinNlsUnicodeApis = outside.Apis{ 283 | {"GetCPInfoExW", &GetCPInfoExW}, 284 | {"LCMapStringW", &LCMapString}, 285 | {"GetLocaleInfoW", &GetLocaleInfo}, 286 | {"SetLocaleInfoW", &SetLocaleInfo}, 287 | {"GetCalendarInfoW", &GetCalendarInfo}, 288 | {"SetCalendarInfoW", &SetCalendarInfo}, 289 | {"GetTimeFormatW", &GetTimeFormat}, 290 | {"GetDateFormatW", &GetDateFormat}, 291 | {"CompareStringW", &CompareString}, 292 | {"GetNumberFormatW", &GetNumberFormat}, 293 | {"GetCurrencyFormatW", &GetCurrencyFormat}, 294 | {"EnumCalendarInfoW", &EnumCalendarInfo}, 295 | {"EnumCalendarInfoExW", &EnumCalendarInfoEx}, 296 | {"EnumTimeFormatsW", &EnumTimeFormats}, 297 | {"EnumDateFormatsW", &EnumDateFormats}, 298 | {"EnumDateFormatsExW", &EnumDateFormatsEx}, 299 | {"GetGeoInfoW", &GetGeoInfo}, 300 | {"GetStringTypeExW", &GetStringTypeEx}, 301 | {"GetStringTypeW", &GetStringType}, 302 | {"FoldStringW", &FoldString}, 303 | {"EnumSystemLanguageGroupsW", &EnumSystemLanguageGroups}, 304 | {"EnumLanguageGroupLocalesW", &EnumLanguageGroupLocales}, 305 | {"EnumUILanguagesW", &EnumUILanguages}, 306 | {"EnumSystemLocalesW", &EnumSystemLocales}, 307 | {"EnumSystemCodePagesW", &EnumSystemCodePages}, 308 | } 309 | 310 | var WinNlsApis = outside.Apis{ 311 | {"IsValidCodePage", &IsValidCodePage}, 312 | {"GetACP", &GetACP}, 313 | {"GetOEMCP", &GetOEMCP}, 314 | {"GetCPInfo", &GetCPInfo}, 315 | {"IsDBCSLeadByte", &IsDBCSLeadByte}, 316 | {"IsDBCSLeadByteEx", &IsDBCSLeadByteEx}, 317 | {"MultiByteToWideChar", &MultiByteToWideChar}, 318 | {"WideCharToMultiByte", &WideCharToMultiByte}, 319 | {"IsValidLanguageGroup", &IsValidLanguageGroup}, 320 | {"IsValidLocale", &IsValidLocale}, 321 | {"EnumSystemGeoID", &EnumSystemGeoID}, 322 | {"GetUserGeoID", &GetUserGeoID}, 323 | {"SetUserGeoID", &SetUserGeoID}, 324 | {"ConvertDefaultLocale", &ConvertDefaultLocale}, 325 | {"GetThreadLocale", &GetThreadLocale}, 326 | {"SetThreadLocale", &SetThreadLocale}, 327 | {"GetSystemDefaultUILanguage", &GetSystemDefaultUILanguage}, 328 | {"GetUserDefaultUILanguage", &GetUserDefaultUILanguage}, 329 | {"GetSystemDefaultLangID", &GetSystemDefaultLangID}, 330 | {"GetUserDefaultLangID", &GetUserDefaultLangID}, 331 | {"GetSystemDefaultLCID", &GetSystemDefaultLCID}, 332 | {"GetUserDefaultLCID", &GetUserDefaultLCID}, 333 | } 334 | -------------------------------------------------------------------------------- /winnls/winnls_test.go: -------------------------------------------------------------------------------- 1 | package winnls 2 | 3 | import ( 4 | "github.com/tHinqa/outside" 5 | . "github.com/tHinqa/outside-windows/types" 6 | . "github.com/tHinqa/outside/types" 7 | "testing" 8 | ) 9 | 10 | func init() { 11 | outside.AddApis(WinNlsApis) 12 | outside.AddApis(WinNlsANSIApis) 13 | //outside.AddApis(WinNlsUnicodeApis) 14 | } 15 | 16 | var tT *testing.T 17 | 18 | func callback2(s *VString, l LONG_PTR) BOOL { 19 | if l != 123 { 20 | return 0 21 | } 22 | tT.Log(*s) 23 | return 1 24 | } 25 | 26 | func callback1(s *VString) BOOL { 27 | tT.Log(*s) 28 | return 1 29 | } 30 | 31 | func Test(t *testing.T) { 32 | tT = t 33 | t.Log("=== UIanguages ===") 34 | EnumUILanguages(callback2, 0, 123) 35 | t.Log("=== Locales ===") 36 | EnumSystemLocales(callback1, 0) 37 | t.Log("=== CodePages ===") 38 | EnumSystemCodePages(callback1, 0) 39 | t.Log("=== CalendarInfo ===") 40 | for i := 1; i <= 0x30; i++ { 41 | EnumCalendarInfo(callback1, 0, 0xFFFFFFFF, CALTYPE(i)) 42 | } 43 | t.Log("=== TimeFormat ===") 44 | EnumTimeFormats(callback1, 0, 0) 45 | t.Log("=== DateFormat ===") 46 | EnumDateFormats(callback1, 0, 0) 47 | } 48 | -------------------------------------------------------------------------------- /winreg/winreg.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winreg provides API definitions for accessing 5 | //advapi32.dll. 6 | package winreg 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/advapi32" 13 | ) 14 | 15 | var ( 16 | RegCloseKey func(Key T.HKEY) T.LONG 17 | 18 | RegOverridePredefKey func(Key T.HKEY, NewHKey T.HKEY) T.LONG 19 | 20 | RegOpenUserClassesRoot func( 21 | Token T.HANDLE, 22 | Options T.DWORD, 23 | SamDesired T.REGSAM, 24 | Result *T.HKEY) T.LONG 25 | 26 | RegOpenCurrentUser func( 27 | SamDesired T.REGSAM, Result *T.HKEY) T.LONG 28 | 29 | RegDisablePredefinedCache func() T.LONG 30 | 31 | RegConnectRegistry func( 32 | MachineName VString, 33 | Key T.HKEY, 34 | Result *T.HKEY) T.LONG 35 | 36 | RegConnectRegistryEx func( 37 | MachineName VString, 38 | Key T.HKEY, 39 | Flags T.ULONG, 40 | Result *T.HKEY) T.LONG 41 | 42 | RegCreateKey func( 43 | Key T.HKEY, SubKey VString, Result *T.HKEY) T.LONG 44 | 45 | RegCreateKeyEx func( 46 | Key T.HKEY, 47 | SubKey VString, 48 | Reserved T.DWORD, 49 | Class VString, 50 | Options T.DWORD, 51 | SamDesired T.REGSAM, 52 | SecurityAttributes *T.SECURITY_ATTRIBUTES, 53 | Result *T.HKEY, 54 | Disposition *T.DWORD) T.LONG 55 | 56 | RegDeleteKey func(Key T.HKEY, SubKey VString) T.LONG 57 | 58 | RegDeleteKeyEx func( 59 | Key T.HKEY, 60 | SubKey VString, 61 | SamDesired T.REGSAM, 62 | Reserved T.DWORD) T.LONG 63 | 64 | RegDisableReflectionKey func(Base T.HKEY) T.LONG 65 | 66 | RegEnableReflectionKey func(Base T.HKEY) T.LONG 67 | 68 | RegQueryReflectionKey func( 69 | Base T.HKEY, IsReflectionDisabled *T.BOOL) T.LONG 70 | 71 | RegDeleteValue func(Key T.HKEY, ValueName VString) T.LONG 72 | 73 | RegEnumKey func( 74 | Key T.HKEY, 75 | Index T.DWORD, 76 | Name OVString, 77 | cName T.DWORD) T.LONG 78 | 79 | RegEnumKeyEx func( 80 | Key T.HKEY, 81 | Index T.DWORD, 82 | Name OVString, 83 | cName *T.DWORD, 84 | Reserved *T.DWORD, 85 | Class OVString, 86 | cClass *T.DWORD, 87 | LastWriteTime *T.FILETIME) T.LONG 88 | 89 | RegEnumValue func( 90 | Key T.HKEY, 91 | Index T.DWORD, 92 | ValueName OVString, 93 | cValueName *T.DWORD, 94 | Reserved *T.DWORD, 95 | Type *T.DWORD, 96 | Data *T.BYTE, 97 | cData *T.DWORD) T.LONG 98 | 99 | RegFlushKey func(Key T.HKEY) T.LONG 100 | 101 | RegGetKeySecurity func( 102 | Key T.HKEY, 103 | SecurityInformation T.SECURITY_INFORMATION, 104 | SecurityDescriptor *T.SECURITY_DESCRIPTOR, 105 | cSecurityDescriptor *T.DWORD) T.LONG 106 | 107 | RegLoadKey func( 108 | Key T.HKEY, SubKey, File VString) T.LONG 109 | 110 | RegNotifyChangeKeyValue func( 111 | Key T.HKEY, 112 | WatchSubtree T.BOOL, 113 | NotifyFilter T.DWORD, 114 | Event T.HANDLE, 115 | Asynchronous T.BOOL) T.LONG 116 | 117 | RegOpenKey func( 118 | Key T.HKEY, SubKey VString, Result *T.HKEY) T.LONG 119 | 120 | RegOpenKeyEx func( 121 | Key T.HKEY, 122 | SubKey VString, 123 | Options T.DWORD, 124 | SamDesired T.REGSAM, 125 | Result *T.HKEY) T.LONG 126 | 127 | RegQueryInfoKey func( 128 | Key T.HKEY, 129 | Class OVString, 130 | cClass, 131 | Reserved, 132 | SubKeys, 133 | MaxSubKeyLen, 134 | MaxClassLen, 135 | Values, 136 | MaxValueNameLen, 137 | MaxValueLen, 138 | SecurityDescriptor *T.DWORD, 139 | LastWriteTime *T.FILETIME) T.LONG 140 | 141 | RegQueryValue func( 142 | Key T.HKEY, 143 | SubKey VString, 144 | Data OVString, 145 | cData *T.LONG) T.LONG 146 | 147 | RegQueryMultipleValues func( 148 | Key T.HKEY, 149 | ValList *T.VALENT, 150 | NumVals T.DWORD, 151 | ValueBuf VString, 152 | TotSize *T.DWORD) T.LONG 153 | 154 | RegQueryValueEx func( 155 | Key T.HKEY, 156 | ValueName VString, 157 | Reserved, 158 | Type *T.DWORD, 159 | Data *T.BYTE, 160 | cData *T.DWORD) T.LONG 161 | 162 | RegReplaceKey func( 163 | Key T.HKEY, SubKey, NewFile, OldFile VString) T.LONG 164 | 165 | RegRestoreKey func( 166 | Key T.HKEY, File VString, Flags T.DWORD) T.LONG 167 | 168 | RegSaveKey func( 169 | Key T.HKEY, 170 | File VString, 171 | SecurityAttributes *T.SECURITY_ATTRIBUTES) T.LONG 172 | 173 | RegSetKeySecurity func( 174 | Key T.HKEY, 175 | SecurityInformation T.SECURITY_INFORMATION, 176 | pSecurityDescriptor *T.SECURITY_DESCRIPTOR) T.LONG 177 | 178 | RegSetValue func( 179 | Key T.HKEY, 180 | SubKey VString, 181 | Type T.DWORD, 182 | Data VString, 183 | cbData T.DWORD) T.LONG 184 | 185 | RegSetValueEx func( 186 | Key T.HKEY, 187 | ValueName VString, 188 | Reserved, 189 | Type T.DWORD, 190 | Data *T.BYTE, 191 | cData T.DWORD) T.LONG 192 | 193 | RegUnLoadKey func(Key T.HKEY, SubKey VString) T.LONG 194 | 195 | RegGetValue func( 196 | Key T.HKEY, 197 | SubKey, Value VString, 198 | Flags T.DWORD, 199 | Type *T.DWORD, 200 | Data *T.VOID, 201 | cData *T.DWORD) T.LONG 202 | 203 | InitiateSystemShutdown func( 204 | MachineName, Message VString, 205 | Timeout T.DWORD, 206 | ForceAppsClosed, RebootAfterShutdown T.BOOL) T.BOOL 207 | 208 | AbortSystemShutdown func( 209 | MachineName VString) T.BOOL 210 | 211 | InitiateSystemShutdownEx func( 212 | MachineName, Message VString, 213 | Timeout T.DWORD, 214 | ForceAppsClosed, RebootAfterShutdown T.BOOL, 215 | Reason T.DWORD) T.BOOL 216 | 217 | RegSaveKeyEx func( 218 | Key T.HKEY, 219 | File VString, 220 | SecurityAttributes *T.SECURITY_ATTRIBUTES, 221 | Flags T.DWORD) T.LONG 222 | 223 | Wow64Win32ApiEntry func( 224 | FuncNumber T.DWORD, Flag T.DWORD, Res T.DWORD) T.LONG 225 | ) 226 | 227 | var WinRegANSIApis = outside.Apis{ 228 | {"AbortSystemShutdownA", &AbortSystemShutdown}, 229 | {"InitiateSystemShutdownA", &InitiateSystemShutdown}, 230 | {"InitiateSystemShutdownExA", &InitiateSystemShutdownEx}, 231 | {"RegConnectRegistryA", &RegConnectRegistry}, 232 | {"RegCreateKeyA", &RegCreateKey}, 233 | {"RegCreateKeyExA", &RegCreateKeyEx}, 234 | {"RegDeleteKeyA", &RegDeleteKey}, 235 | {"RegDeleteValueA", &RegDeleteValue}, 236 | {"RegEnumKeyA", &RegEnumKey}, 237 | {"RegEnumKeyExA", &RegEnumKeyEx}, 238 | {"RegEnumValueA", &RegEnumValue}, 239 | {"RegLoadKeyA", &RegLoadKey}, 240 | {"RegOpenKeyA", &RegOpenKey}, 241 | {"RegOpenKeyExA", &RegOpenKeyEx}, 242 | {"RegQueryInfoKeyA", &RegQueryInfoKey}, 243 | {"RegQueryMultipleValuesA", &RegQueryMultipleValues}, 244 | {"RegQueryValueA", &RegQueryValue}, 245 | {"RegQueryValueExA", &RegQueryValueEx}, 246 | {"RegReplaceKeyA", &RegReplaceKey}, 247 | {"RegRestoreKeyA", &RegRestoreKey}, 248 | {"RegSaveKeyA", &RegSaveKey}, 249 | {"RegSaveKeyExA", &RegSaveKeyEx}, 250 | {"RegSetValueA", &RegSetValue}, 251 | {"RegSetValueExA", &RegSetValueEx}, 252 | {"RegUnLoadKeyA", &RegUnLoadKey}, 253 | } 254 | 255 | var WinRegUnicodeApis = outside.Apis{ 256 | {"AbortSystemShutdownW", &AbortSystemShutdown}, 257 | {"InitiateSystemShutdownW", &InitiateSystemShutdown}, 258 | {"InitiateSystemShutdownExW", &InitiateSystemShutdownEx}, 259 | {"RegConnectRegistryW", &RegConnectRegistry}, 260 | {"RegCreateKeyW", &RegCreateKey}, 261 | {"RegCreateKeyExW", &RegCreateKeyEx}, 262 | {"RegDeleteKeyW", &RegDeleteKey}, 263 | {"RegDeleteValueW", &RegDeleteValue}, 264 | {"RegEnumKeyW", &RegEnumKey}, 265 | {"RegEnumKeyExW", &RegEnumKeyEx}, 266 | {"RegEnumValueW", &RegEnumValue}, 267 | {"RegLoadKeyW", &RegLoadKey}, 268 | {"RegOpenKeyW", &RegOpenKey}, 269 | {"RegOpenKeyExW", &RegOpenKeyEx}, 270 | {"RegQueryInfoKeyW", &RegQueryInfoKey}, 271 | {"RegQueryMultipleValuesW", &RegQueryMultipleValues}, 272 | {"RegQueryValueW", &RegQueryValue}, 273 | {"RegQueryValueExW", &RegQueryValueEx}, 274 | {"RegReplaceKeyW", &RegReplaceKey}, 275 | {"RegRestoreKeyW", &RegRestoreKey}, 276 | {"RegSaveKeyW", &RegSaveKey}, 277 | {"RegSaveKeyExW", &RegSaveKeyEx}, 278 | {"RegSetValueW", &RegSetValue}, 279 | {"RegSetValueExW", &RegSetValueEx}, 280 | {"RegUnLoadKeyW", &RegUnLoadKey}, 281 | } 282 | 283 | //TODO(t):Not on XP. 284 | //{"RegConnectRegistryExA", &RegConnectRegistryEx}, 285 | //{"RegConnectRegistryExW", &RegConnectRegistryEx}, 286 | //{"RegDeleteKeyExA", &RegDeleteKeyEx}, 287 | //{"RegDeleteKeyExW", &RegDeleteKeyEx}, 288 | //{"RegDisableReflectionKey", &RegDisableReflectionKey}, 289 | //{"RegEnableReflectionKey", &RegEnableReflectionKey}, 290 | //{"RegGetValueA", &RegGetValue}, 291 | //{"RegGetValueW", &RegGetValue}, 292 | //{"RegQueryReflectionKey", &RegQueryReflectionKey}, 293 | 294 | var WinRegApis = outside.Apis{ 295 | {"RegCloseKey", &RegCloseKey}, 296 | {"RegDisablePredefinedCache", &RegDisablePredefinedCache}, 297 | {"RegFlushKey", &RegFlushKey}, 298 | {"RegGetKeySecurity", &RegGetKeySecurity}, 299 | {"RegNotifyChangeKeyValue", &RegNotifyChangeKeyValue}, 300 | {"RegOpenCurrentUser", &RegOpenCurrentUser}, 301 | {"RegOpenUserClassesRoot", &RegOpenUserClassesRoot}, 302 | {"RegOverridePredefKey", &RegOverridePredefKey}, 303 | {"RegSetKeySecurity", &RegSetKeySecurity}, 304 | {"Wow64Win32ApiEntry", &Wow64Win32ApiEntry}, 305 | } 306 | -------------------------------------------------------------------------------- /winreg/winreg_test.go: -------------------------------------------------------------------------------- 1 | package winreg 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinRegApis) 8 | AddApis(WinRegANSIApis) 9 | AddApis(WinRegUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /winsock/winsock.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winsock provides API definitions for accessing 5 | //wsock32.dll. 6 | package winsock 7 | 8 | import ( 9 | . "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | _ "github.com/tHinqa/outside/win32/wsock32" 12 | ) 13 | 14 | type ( 15 | timeval T.Fake_type_Fix_me 16 | servent T.Fake_type_Fix_me 17 | protoent T.Fake_type_Fix_me 18 | u_int T.Fake_type_Fix_me 19 | u_long T.Fake_type_Fix_me 20 | u_short T.Fake_type_Fix_me 21 | hostent T.Fake_type_Fix_me 22 | fd_set T.Fake_type_Fix_me 23 | sockaddr T.Fake_type_Fix_me 24 | long T.Fake_type_Fix_me 25 | in_addr T.Fake_type_Fix_me 26 | unsigned_long T.Fake_type_Fix_me 27 | char byte 28 | ) 29 | 30 | var ( 31 | WSAFDIsSet func(T.SOCKET, *fd_set) int 32 | 33 | Accept func( 34 | s T.SOCKET, 35 | addr *sockaddr, 36 | addrlen *int) T.SOCKET 37 | 38 | Bind func( 39 | s T.SOCKET, 40 | addr *sockaddr, 41 | namelen int) int 42 | 43 | Closesocket func(s T.SOCKET) int 44 | 45 | Connect func( 46 | s T.SOCKET, 47 | name *sockaddr, 48 | namelen int) int 49 | 50 | Ioctlsocket func( 51 | s T.SOCKET, 52 | cmd long, 53 | argp *u_long) int 54 | 55 | Getpeername func( 56 | s T.SOCKET, 57 | name *sockaddr, 58 | namelen *int) int 59 | 60 | Getsockname func( 61 | s T.SOCKET, 62 | name *sockaddr, 63 | namelen *int) int 64 | 65 | Getsockopt func( 66 | s T.SOCKET, 67 | level int, 68 | optname int, 69 | optval *char, 70 | optlen *int) int 71 | 72 | Htonl func(hostlong u_long) u_long 73 | 74 | Htons func(hostshort u_short) u_short 75 | 76 | Inet_addr func(cp *char) unsigned_long 77 | 78 | Inet_ntoa func(in in_addr) *char 79 | 80 | Listen func(s T.SOCKET, backlog int) int 81 | 82 | Ntohl func(netlong u_long) u_long 83 | 84 | Ntohs func(netshort u_short) u_short 85 | 86 | Recv func( 87 | s T.SOCKET, 88 | buf *char, 89 | len int, 90 | flags int) int 91 | 92 | Recvfrom func( 93 | s T.SOCKET, 94 | buf *char, 95 | len int, 96 | flags int, 97 | from *sockaddr, 98 | fromlen *int) int 99 | 100 | Select func( 101 | fds int, 102 | readfds *fd_set, 103 | writefds *fd_set, 104 | exceptfds *fd_set, 105 | timeout *timeval) int 106 | 107 | Send func( 108 | s T.SOCKET, 109 | buf *char, 110 | len int, 111 | flags int) int 112 | 113 | Sendto func( 114 | s T.SOCKET, 115 | buf *char, 116 | len int, 117 | flags int, 118 | to *sockaddr, 119 | tolen int) int 120 | 121 | Setsockopt func( 122 | s T.SOCKET, 123 | level int, 124 | optname int, 125 | optval *char, 126 | optlen int) int 127 | 128 | Shutdown func( 129 | s T.SOCKET, 130 | how int) int 131 | 132 | Socket func( 133 | af int, 134 | typ int, 135 | protocol int) T.SOCKET 136 | 137 | Gethostbyaddr func( 138 | addr *char, 139 | len int, 140 | typ int) *hostent 141 | 142 | Gethostbyname func( 143 | name *char) *hostent 144 | 145 | Gethostname func( 146 | name *char, 147 | namelen int) int 148 | 149 | Getservbyport func( 150 | port int, 151 | proto *char) *servent 152 | 153 | Getservbyname func( 154 | name *char, 155 | proto *char) *servent 156 | 157 | Getprotobynumber func( 158 | proto int) *protoent 159 | 160 | Getprotobyname func( 161 | name *char) *protoent 162 | 163 | WSAStartup func( 164 | VersionRequired T.WORD, 165 | WSAData *T.WSADATA) int 166 | 167 | WSACleanup func() int 168 | 169 | WSASetLastError func( 170 | iError int) 171 | 172 | WSAGetLastError func() int 173 | 174 | WSAIsBlocking func() T.BOOL 175 | 176 | WSAUnhookBlockingHook func() int 177 | 178 | WSASetBlockingHook func( 179 | BlockFunc T.FARPROC) T.FARPROC 180 | 181 | WSACancelBlockingCall func() int 182 | 183 | WSAAsyncGetServByName func( 184 | Wnd T.HWND, 185 | Msg u_int, 186 | name *char, 187 | proto *char, 188 | buf *char, 189 | buflen int) T.HANDLE 190 | 191 | WSAAsyncGetServByPort func( 192 | Wnd T.HWND, 193 | Msg u_int, 194 | port int, 195 | proto *char, 196 | buf *char, 197 | buflen int) T.HANDLE 198 | 199 | WSAAsyncGetProtoByName func( 200 | Wnd T.HWND, 201 | Msg u_int, 202 | name *char, 203 | buf *char, 204 | buflen int) T.HANDLE 205 | 206 | WSAAsyncGetProtoByNumber func( 207 | Wnd T.HWND, 208 | Msg u_int, 209 | number int, 210 | buf *char, 211 | buflen int) T.HANDLE 212 | 213 | WSAAsyncGetHostByName func( 214 | Wnd T.HWND, 215 | Msg u_int, 216 | name *char, 217 | buf *char, 218 | buflen int) T.HANDLE 219 | 220 | WSAAsyncGetHostByAddr func( 221 | Wnd T.HWND, 222 | Msg u_int, 223 | addr *char, 224 | len int, 225 | typ int, 226 | buf *char, 227 | buflen int) T.HANDLE 228 | 229 | WSACancelAsyncRequest func(hAsyncTaskHandle T.HANDLE) int 230 | 231 | WSAAsyncSelect func( 232 | s T.SOCKET, 233 | Wnd T.HWND, 234 | Msg u_int, 235 | lEvent long) int 236 | 237 | WSARecvEx func( 238 | s T.SOCKET, 239 | buf *char, 240 | len int, 241 | flags *int) int 242 | 243 | TransmitFile func( 244 | Socket T.SOCKET, 245 | File T.HANDLE, 246 | NumberOfBytesToWrite T.DWORD, 247 | NumberOfBytesPerSend T.DWORD, 248 | Overlapped *T.OVERLAPPED, 249 | TransmitBuffers *T.TRANSMIT_FILE_BUFFERS, 250 | Reserved T.DWORD) T.BOOL 251 | 252 | AcceptEx func( 253 | ListenSocket T.SOCKET, 254 | AcceptSocket T.SOCKET, 255 | OutputBuffer *T.VOID, 256 | ReceiveDataLength T.DWORD, 257 | LocalAddressLength T.DWORD, 258 | RemoteAddressLength T.DWORD, 259 | BytesReceived *T.DWORD, 260 | Overlapped *T.OVERLAPPED) T.BOOL 261 | 262 | GetAcceptExSockaddrs func( 263 | OutputBuffer *T.VOID, 264 | ReceiveDataLength T.DWORD, 265 | LocalAddressLength T.DWORD, 266 | RemoteAddressLength T.DWORD, 267 | LocalSockaddr **sockaddr, 268 | LocalSockaddrLength *T.INT, 269 | RemoteSockaddr **sockaddr, 270 | RemoteSockaddrLength *T.INT) 271 | ) 272 | 273 | var WinSockApis = Apis{ 274 | {"accept", &Accept}, 275 | {"AcceptEx", &AcceptEx}, 276 | {"bind", &Bind}, 277 | {"closesocket", &Closesocket}, 278 | {"connect", &Connect}, 279 | {"GetAcceptExSockaddrs", &GetAcceptExSockaddrs}, 280 | {"gethostbyaddr", &Gethostbyaddr}, 281 | {"gethostbyname", &Gethostbyname}, 282 | {"gethostname", &Gethostname}, 283 | {"getpeername", &Getpeername}, 284 | {"getprotobyname", &Getprotobyname}, 285 | {"getprotobynumber", &Getprotobynumber}, 286 | {"getservbyname", &Getservbyname}, 287 | {"getservbyport", &Getservbyport}, 288 | {"getsockname", &Getsockname}, 289 | {"getsockopt", &Getsockopt}, 290 | {"htonl", &Htonl}, 291 | {"htons", &Htons}, 292 | {"inet_addr", &Inet_addr}, 293 | {"inet_ntoa", &Inet_ntoa}, 294 | {"ioctlsocket", &Ioctlsocket}, 295 | {"listen", &Listen}, 296 | {"ntohl", &Ntohl}, 297 | {"ntohs", &Ntohs}, 298 | {"recv", &Recv}, 299 | {"recvfrom", &Recvfrom}, 300 | {"select", &Select}, 301 | {"send", &Send}, 302 | {"sendto", &Sendto}, 303 | {"setsockopt", &Setsockopt}, 304 | {"shutdown", &Shutdown}, 305 | {"socket", &Socket}, 306 | {"TransmitFile", &TransmitFile}, 307 | {"WSAAsyncGetHostByAddr", &WSAAsyncGetHostByAddr}, 308 | {"WSAAsyncGetHostByName", &WSAAsyncGetHostByName}, 309 | {"WSAAsyncGetProtoByName", &WSAAsyncGetProtoByName}, 310 | {"WSAAsyncGetProtoByNumber", &WSAAsyncGetProtoByNumber}, 311 | {"WSAAsyncGetServByName", &WSAAsyncGetServByName}, 312 | {"WSAAsyncGetServByPort", &WSAAsyncGetServByPort}, 313 | {"WSAAsyncSelect", &WSAAsyncSelect}, 314 | {"WSACancelAsyncRequest", &WSACancelAsyncRequest}, 315 | {"WSACancelBlockingCall", &WSACancelBlockingCall}, 316 | {"WSACleanup", &WSACleanup}, 317 | {"__WSAFDIsSet", &WSAFDIsSet}, 318 | {"WSAGetLastError", &WSAGetLastError}, 319 | {"WSAIsBlocking", &WSAIsBlocking}, 320 | {"WSARecvEx", &WSARecvEx}, 321 | {"WSASetBlockingHook", &WSASetBlockingHook}, 322 | {"WSASetLastError", &WSASetLastError}, 323 | {"WSAStartup", &WSAStartup}, 324 | {"WSAUnhookBlockingHook", &WSAUnhookBlockingHook}, 325 | } 326 | -------------------------------------------------------------------------------- /winsock/winsock_test.go: -------------------------------------------------------------------------------- 1 | package winsock 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinSockApis) 8 | } 9 | -------------------------------------------------------------------------------- /winsock2/winsock2.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winsock2 provides API definitions for accessing 5 | //ws2_32.dll. 6 | package winsock2 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/ws2_32" 13 | ) 14 | 15 | var ( 16 | Accept func( 17 | s T.SOCKET, addr *T.SOCKADDR, addrlen *int) T.SOCKET 18 | 19 | Bind func(s T.SOCKET, name *T.SOCKADDR, namelen int) int 20 | 21 | Closesocket func(s T.SOCKET) int 22 | 23 | Connect func(s T.SOCKET, name *T.SOCKADDR, namelen int) int 24 | 25 | Ioctlsocket func(s T.SOCKET, cmd T.LONG, argp *T.U_long) int 26 | 27 | Getpeername func( 28 | s T.SOCKET, name *T.SOCKADDR, namelen *int) int 29 | 30 | Getsockname func( 31 | s T.SOCKET, name *T.SOCKADDR, namelen *int) int 32 | 33 | Getsockopt func(s T.SOCKET, 34 | level, optname int, optval *T.Char, optlen *int) int 35 | 36 | Htonl func(hostlong T.U_long) T.U_long 37 | 38 | Htons func(hostshort T.U_short) T.U_short 39 | 40 | Inet_addr func(cp *T.Char) T.Unsigned_long 41 | 42 | Inet_ntoa func(in T.IN_ADDR) *T.Char 43 | 44 | Listen func(s T.SOCKET, backlog int) int 45 | 46 | Ntohl func(netlong T.U_long) T.U_long 47 | 48 | Ntohs func(netshort T.U_short) T.U_short 49 | 50 | Recv func(s T.SOCKET, buf *T.Char, leng, flags int) int 51 | 52 | Recvfrom func(s T.SOCKET, buf *T.Char, 53 | leng, flags int, from *T.SOCKADDR, fromlen *int) int 54 | 55 | Select func(nfds int, readfds, 56 | writefds, exceptfds *T.FD_SET, timeout *T.TIMEVAL) int 57 | 58 | Send func(s T.SOCKET, buf *T.Char, len int, flags int) int 59 | 60 | Sendto func(s T.SOCKET, buf *T.Char, 61 | leng, flags int, to *T.SOCKADDR, tolen int) int 62 | 63 | Setsockopt func(s T.SOCKET, 64 | level, optname int, optval *T.Char, optlen int) int 65 | 66 | Shutdown func(s T.SOCKET, how int) int 67 | 68 | Socket func(af, typ, protocol int) T.SOCKET 69 | 70 | Gethostbyaddr func(addr *T.Char, leng, typ int) *T.HOSTENT 71 | 72 | Gethostbyname func(name *T.Char) *T.HOSTENT 73 | 74 | Gethostname func(name *T.Char, namelen int) int 75 | 76 | Getservbyport func(port int, proto *T.Char) *T.SERVENT 77 | 78 | Getservbyname func(name, proto *T.Char) *T.SERVENT 79 | 80 | Getprotobynumber func(number int) *T.PROTOENT 81 | 82 | Getprotobyname func(name *T.Char) *T.PROTOENT 83 | 84 | WSAStartup func( 85 | VersionRequested T.WORD, WSAData *T.WSADATA) int 86 | 87 | WSACleanup func() int 88 | 89 | WSASetLastError func(Error int) 90 | 91 | WSAGetLastError func() int 92 | 93 | WSAIsBlocking func() T.BOOL 94 | 95 | WSAUnhookBlockingHook func() int 96 | 97 | WSASetBlockingHook func(BlockFunc T.FARPROC) T.FARPROC 98 | 99 | WSACancelBlockingCall func() int 100 | 101 | WSAAsyncGetServByName func(Wnd T.HWND, Msg T.U_int, 102 | name, proto, buf *T.Char, buflen int) T.HANDLE 103 | 104 | WSAAsyncGetServByPort func(Wnd T.HWND, Msg T.U_int, 105 | port int, proto, buf *T.Char, buflen int) T.HANDLE 106 | 107 | WSAAsyncGetProtoByName func(Wnd T.HWND, 108 | Msg T.U_int, name, buf *T.Char, buflen int) T.HANDLE 109 | 110 | WSAAsyncGetProtoByNumber func(Wnd T.HWND, Msg T.U_int, 111 | number int, buf *T.Char, buflen int) T.HANDLE 112 | 113 | WSAAsyncGetHostByName func(Wnd T.HWND, Msg T.U_int, 114 | name *T.Char, buf *T.Char, buflen int) T.HANDLE 115 | 116 | WSAAsyncGetHostByAddr func(Wnd T.HWND, Msg T.U_int, addr *T.Char, 117 | leng, typ int, buf *T.Char, buflen int) T.HANDLE 118 | 119 | WSACancelAsyncRequest func(AsyncTaskHandle T.HANDLE) int 120 | 121 | WSAAsyncSelect func( 122 | s T.SOCKET, Wnd T.HWND, Msg T.U_int, lEvent T.LONG) int 123 | 124 | WSAAccept func( 125 | s T.SOCKET, 126 | addr *T.SOCKADDR, 127 | addrlen *T.INT, 128 | fnCondition *T.CONDITIONPROC, 129 | CallbackData T.DWORD_PTR) T.SOCKET 130 | 131 | WSACloseEvent func(Event T.WSAEVENT) T.BOOL 132 | 133 | WSAConnect func(s T.SOCKET, name *T.SOCKADDR, 134 | namelen int, 135 | CallerData, CalleeData *T.WSABUF, 136 | SQOS, GQOS *T.QOS) int 137 | 138 | WSACreateEvent func() T.WSAEVENT 139 | 140 | WSADuplicateSocketA func( 141 | s T.SOCKET, 142 | ProcessId T.DWORD, 143 | ProtocolInfo *T.WSAPROTOCOL_INFOA) int 144 | 145 | WSADuplicateSocketW func( 146 | s T.SOCKET, 147 | ProcessId T.DWORD, 148 | ProtocolInfo *T.WSAPROTOCOL_INFOW) int 149 | 150 | WSAEnumNetworkEvents func( 151 | s T.SOCKET, 152 | EventObject T.WSAEVENT, 153 | NetworkEvents *T.WSANETWORKEVENTS) int 154 | 155 | WSAEnumProtocolsA func( 156 | Protocols *T.INT, 157 | ProtocolBuffer *T.WSAPROTOCOL_INFOA, 158 | BufferLength *T.DWORD) int 159 | 160 | WSAEnumProtocolsW func( 161 | Protocols *T.INT, 162 | ProtocolBuffer *T.WSAPROTOCOL_INFOW, 163 | BufferLength *T.DWORD) int 164 | 165 | WSAEventSelect func( 166 | s T.SOCKET, 167 | EventObject T.WSAEVENT, 168 | NetworkEvents T.LONG) int 169 | 170 | WSAGetOverlappedResult func( 171 | s T.SOCKET, 172 | Overlapped *T.WSAOVERLAPPED, 173 | Transfer *T.DWORD, 174 | fWait T.BOOL, 175 | Flags *T.DWORD) T.BOOL 176 | 177 | WSAGetQOSByName func( 178 | s T.SOCKET, QOSName *T.WSABUF, QOS *T.QOS) T.BOOL 179 | 180 | WSAHtonl func( 181 | s T.SOCKET, hostlong T.U_long, netlong *T.U_long) int 182 | 183 | WSAHtons func( 184 | s T.SOCKET, hostshort T.U_short, netshort *T.U_short) int 185 | 186 | //TODO(t):Callback indirection 187 | 188 | WSAIoctl func( 189 | s T.SOCKET, 190 | IoControlCode T.DWORD, 191 | InBuffer *T.VOID, 192 | sInBuffer T.DWORD, 193 | OutBuffer *T.VOID, 194 | sOutBuffer T.DWORD, 195 | BytesReturned *T.DWORD, 196 | Overlapped *T.WSAOVERLAPPED, 197 | CompletionRoutine *T.WSAOVERLAPPED_COMPLETION_ROUTINE) int 198 | 199 | WSAJoinLeaf func(s T.SOCKET, name *T.SOCKADDR, namelen int, 200 | CallerData, CalleeData *T.WSABUF, 201 | SQOS, GQOS *T.QOS, Flags T.DWORD) T.SOCKET 202 | 203 | WSANtohl func( 204 | s T.SOCKET, netlong T.U_long, hostlong *T.U_long) int 205 | 206 | WSANtohs func( 207 | s T.SOCKET, netshort T.U_short, hostshort *T.U_short) int 208 | 209 | //TODO(t):Callback indirection 210 | 211 | WSARecv func(s T.SOCKET, Buffers *T.WSABUF, 212 | BufferCount T.DWORD, NumberOfBytesRecvd, Flags *T.DWORD, 213 | Overlapped *T.WSAOVERLAPPED, 214 | CompletionRoutine *T.WSAOVERLAPPED_COMPLETION_ROUTINE) int 215 | 216 | WSARecvDisconnect func(s T.SOCKET, 217 | InboundDisconnectData *T.WSABUF) int 218 | 219 | //TODO(t):Callback indirection 220 | 221 | WSARecvFrom func( 222 | s T.SOCKET, 223 | Buffers *T.WSABUF, 224 | BufferCount T.DWORD, 225 | NumberOfBytesRecvd *T.DWORD, 226 | Flags *T.DWORD, 227 | From *T.SOCKADDR, 228 | Fromlen *T.INT, 229 | Overlapped *T.WSAOVERLAPPED, 230 | CompletionRoutine *T.WSAOVERLAPPED_COMPLETION_ROUTINE) int 231 | 232 | WSAResetEvent func(Event T.WSAEVENT) T.BOOL 233 | 234 | //TODO(t):Callback indirection 235 | 236 | WSASend func( 237 | s T.SOCKET, 238 | Buffers *T.WSABUF, 239 | BufferCount T.DWORD, 240 | NumberOfBytesSent *T.DWORD, 241 | Flags T.DWORD, 242 | Overlapped *T.WSAOVERLAPPED, 243 | CompletionRoutine *T.WSAOVERLAPPED_COMPLETION_ROUTINE) int 244 | 245 | WSASendDisconnect func( 246 | s T.SOCKET, OutboundDisconnectData *T.WSABUF) int 247 | 248 | //TODO(t):Callback indirection 249 | 250 | WSASendTo func( 251 | s T.SOCKET, 252 | Buffers *T.WSABUF, 253 | BufferCount T.DWORD, 254 | NumberOfBytesSent *T.DWORD, 255 | Flags T.DWORD, 256 | To *T.SOCKADDR, 257 | iTolen int, 258 | Overlapped *T.WSAOVERLAPPED, 259 | CompletionRoutine *T.WSAOVERLAPPED_COMPLETION_ROUTINE) int 260 | 261 | WSASetEvent func(Event T.WSAEVENT) T.BOOL 262 | 263 | WSASocketA func( 264 | af, typ, protocol int, 265 | ProtocolInfo *T.WSAPROTOCOL_INFOA, 266 | g T.GROUP, 267 | Flags T.DWORD) T.SOCKET 268 | WSASocketW func( 269 | af, typ, protocol int, 270 | ProtocolInfo *T.WSAPROTOCOL_INFOW, 271 | g T.GROUP, 272 | Flags T.DWORD) T.SOCKET 273 | 274 | WSAWaitForMultipleEvents func( 275 | nEvents T.DWORD, 276 | Events *T.WSAEVENT, 277 | WaitAll T.BOOL, 278 | Timeout T.DWORD, 279 | Alertable T.BOOL) T.DWORD 280 | 281 | WSAAddressToStringA func( 282 | Address *T.SOCKADDR, 283 | AddressLength T.DWORD, 284 | ProtocolInfo *T.WSAPROTOCOL_INFOA, 285 | AddressString OVString, 286 | AddressStringLength *T.DWORD) T.INT 287 | 288 | WSAAddressToStringW func( 289 | Address *T.SOCKADDR, 290 | AddressLength T.DWORD, 291 | ProtocolInfo *T.WSAPROTOCOL_INFOW, 292 | AddressString OVString, 293 | AddressStringLength *T.DWORD) T.INT 294 | 295 | WSAStringToAddressA func( 296 | AddressString VString, 297 | AddressFamily T.INT, 298 | ProtocolInfo *T.WSAPROTOCOL_INFOA, 299 | Address *T.SOCKADDR, 300 | AddressLength *T.INT) T.INT 301 | 302 | WSAStringToAddressW func( 303 | AddressString VString, 304 | AddressFamily T.INT, 305 | ProtocolInfo *T.WSAPROTOCOL_INFOW, 306 | Address *T.SOCKADDR, 307 | AddressLength *T.INT) T.INT 308 | 309 | WSALookupServiceBegin func( 310 | Restrictions *T.WSAQUERYSET, 311 | ControlFlags T.DWORD, 312 | Lookup *T.HANDLE) T.INT 313 | 314 | WSALookupServiceNext func( 315 | Lookup T.HANDLE, 316 | ControlFlags T.DWORD, 317 | BufferLength *T.DWORD, 318 | Results *T.WSAQUERYSET) T.INT 319 | 320 | WSANSPIoctl func( 321 | Lookup T.HANDLE, 322 | ControlCode T.DWORD, 323 | InBuffer *T.VOID, 324 | sInBuffer T.DWORD, 325 | OutBuffer *T.VOID, 326 | sOutBuffer T.DWORD, 327 | BytesReturned *T.DWORD, 328 | Completion *T.WSACOMPLETION) T.INT 329 | 330 | WSALookupServiceEnd func(Lookup T.HANDLE) T.INT 331 | 332 | WSAInstallServiceClass func( 333 | ServiceClassInfo *T.WSASERVICECLASSINFO) T.INT 334 | 335 | WSARemoveServiceClass func(ServiceClassId *T.GUID) T.INT 336 | 337 | WSAGetServiceClassInfo func( 338 | ProviderId *T.GUID, 339 | ServiceClassId *T.GUID, 340 | BufSize *T.DWORD, 341 | ServiceClassInfo *T.WSASERVICECLASSINFO) T.INT 342 | 343 | WSAEnumNameSpaceProviders func( 344 | BufferLength *T.DWORD, 345 | Buffer *T.WSANAMESPACE_INFO) T.INT 346 | 347 | WSAGetServiceClassNameByClassId func( 348 | ServiceClassId *T.GUID, 349 | ServiceClassName OVString, 350 | BufferLength *T.DWORD) T.INT 351 | 352 | WSASetService func( 353 | RegInfo *T.WSAQUERYSET, 354 | essoperation T.WSAESETSERVICEOP, 355 | ControlFlags T.DWORD) T.INT 356 | 357 | //TODO(t):Callback indirection 358 | 359 | WSAProviderConfigChange func( 360 | NotificationHandle *T.HANDLE, 361 | Overlapped *T.WSAOVERLAPPED, 362 | CompletionRoutine *T.WSAOVERLAPPED_COMPLETION_ROUTINE) T.INT 363 | ) 364 | 365 | var WinSock2ANSIApis = outside.Apis{ 366 | {"WSAAddressToStringA", &WSAAddressToStringA}, 367 | {"WSADuplicateSocketA", &WSADuplicateSocketA}, 368 | {"WSAEnumNameSpaceProvidersA", &WSAEnumNameSpaceProviders}, 369 | {"WSAEnumProtocolsA", &WSAEnumProtocolsA}, 370 | {"WSAGetServiceClassInfoA", &WSAGetServiceClassInfo}, 371 | {"WSAGetServiceClassNameByClassIdA", &WSAGetServiceClassNameByClassId}, 372 | {"WSAInstallServiceClassA", &WSAInstallServiceClass}, 373 | {"WSALookupServiceBeginA", &WSALookupServiceBegin}, 374 | {"WSALookupServiceNextA", &WSALookupServiceNext}, 375 | {"WSASetServiceA", &WSASetService}, 376 | {"WSASocketA", &WSASocketA}, 377 | {"WSAStringToAddressA", &WSAStringToAddressA}, 378 | } 379 | 380 | var WinSock2UnicodeApis = outside.Apis{ 381 | {"WSAAddressToStringW", &WSAAddressToStringW}, 382 | {"WSADuplicateSocketW", &WSADuplicateSocketW}, 383 | {"WSAEnumNameSpaceProvidersW", &WSAEnumNameSpaceProviders}, 384 | {"WSAEnumProtocolsW", &WSAEnumProtocolsW}, 385 | {"WSAGetServiceClassInfoW", &WSAGetServiceClassInfo}, 386 | {"WSAGetServiceClassNameByClassIdW", &WSAGetServiceClassNameByClassId}, 387 | {"WSAInstallServiceClassW", &WSAInstallServiceClass}, 388 | {"WSALookupServiceBeginW", &WSALookupServiceBegin}, 389 | {"WSALookupServiceNextW", &WSALookupServiceNext}, 390 | {"WSASetServiceW", &WSASetService}, 391 | {"WSASocketW", &WSASocketW}, 392 | {"WSAStringToAddressW", &WSAStringToAddressW}, 393 | } 394 | 395 | var WinSock2Apis = outside.Apis{ 396 | {"accept", &Accept}, 397 | {"bind", &Bind}, 398 | {"closesocket", &Closesocket}, 399 | {"connect", &Connect}, 400 | {"ioctlsocket", &Ioctlsocket}, 401 | {"gethostbyaddr", &Gethostbyaddr}, 402 | {"gethostbyname", &Gethostbyname}, 403 | {"gethostname", &Gethostname}, 404 | {"getpeername", &Getpeername}, 405 | {"getservbyname", &Getservbyname}, 406 | {"getservbyport", &Getservbyport}, 407 | {"getprotobyname", &Getprotobyname}, 408 | {"getprotobynumber", &Getprotobynumber}, 409 | {"getsockname", &Getsockname}, 410 | {"getsockopt", &Getsockopt}, 411 | {"htonl", &Htonl}, 412 | {"htons", &Htons}, 413 | {"inet_addr", &Inet_addr}, 414 | {"inet_ntoa", &Inet_ntoa}, 415 | {"listen", &Listen}, 416 | {"ntohl", &Ntohl}, 417 | {"ntohs", &Ntohs}, 418 | {"recv", &Recv}, 419 | {"recvfrom", &Recvfrom}, 420 | {"select", &Select}, 421 | {"send", &Send}, 422 | {"sendto", &Sendto}, 423 | {"setsockopt", &Setsockopt}, 424 | {"shutdown", &Shutdown}, 425 | {"socket", &Socket}, 426 | {"WSAAccept", &WSAAccept}, 427 | {"WSAAsyncGetHostByAddr", &WSAAsyncGetHostByAddr}, 428 | {"WSAAsyncGetHostByName", &WSAAsyncGetHostByName}, 429 | {"WSAAsyncGetProtoByName", &WSAAsyncGetProtoByName}, 430 | {"WSAAsyncGetProtoByNumber", &WSAAsyncGetProtoByNumber}, 431 | {"WSAAsyncGetServByName", &WSAAsyncGetServByName}, 432 | {"WSAAsyncGetServByPort", &WSAAsyncGetServByPort}, 433 | {"WSAAsyncSelect", &WSAAsyncSelect}, 434 | {"WSACancelAsyncRequest", &WSACancelAsyncRequest}, 435 | {"WSACancelBlockingCall", &WSACancelBlockingCall}, 436 | {"WSACleanup", &WSACleanup}, 437 | {"WSACloseEvent", &WSACloseEvent}, 438 | {"WSAConnect", &WSAConnect}, 439 | {"WSACreateEvent", &WSACreateEvent}, 440 | {"WSAEnumNetworkEvents", &WSAEnumNetworkEvents}, 441 | {"WSAEventSelect", &WSAEventSelect}, 442 | {"WSAGetLastError", &WSAGetLastError}, 443 | {"WSAGetOverlappedResult", &WSAGetOverlappedResult}, 444 | {"WSAGetQOSByName", &WSAGetQOSByName}, 445 | {"WSAHtonl", &WSAHtonl}, 446 | {"WSAHtons", &WSAHtons}, 447 | {"WSAIoctl", &WSAIoctl}, 448 | {"WSAIsBlocking", &WSAIsBlocking}, 449 | {"WSAJoinLeaf", &WSAJoinLeaf}, 450 | {"WSALookupServiceEnd", &WSALookupServiceEnd}, 451 | {"WSANSPIoctl", &WSANSPIoctl}, 452 | {"WSANtohl", &WSANtohl}, 453 | {"WSANtohs", &WSANtohs}, 454 | {"WSAProviderConfigChange", &WSAProviderConfigChange}, 455 | {"WSARecv", &WSARecv}, 456 | {"WSARecvDisconnect", &WSARecvDisconnect}, 457 | {"WSARecvFrom", &WSARecvFrom}, 458 | {"WSARemoveServiceClass", &WSARemoveServiceClass}, 459 | {"WSAResetEvent", &WSAResetEvent}, 460 | {"WSASend", &WSASend}, 461 | {"WSASendDisconnect", &WSASendDisconnect}, 462 | {"WSASendTo", &WSASendTo}, 463 | {"WSASetBlockingHook", &WSASetBlockingHook}, 464 | {"WSASetEvent", &WSASetEvent}, 465 | {"WSASetLastError", &WSASetLastError}, 466 | {"WSAStartup", &WSAStartup}, 467 | {"WSAUnhookBlockingHook", &WSAUnhookBlockingHook}, 468 | {"WSAWaitForMultipleEvents", &WSAWaitForMultipleEvents}, 469 | } 470 | -------------------------------------------------------------------------------- /winsock2/winsock2_test.go: -------------------------------------------------------------------------------- 1 | package winsock2 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinSock2Apis) 8 | AddApis(WinSock2ANSIApis) 9 | AddApis(WinSock2UnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /winsvc/winsvc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2013 Tony Wilson. All rights reserved. 2 | // See LICENCE file for permissions and restrictions. 3 | 4 | //Package winsvc provides API definitions for accessing 5 | //advapi32.dll. 6 | package winsvc 7 | 8 | import ( 9 | "github.com/tHinqa/outside" 10 | T "github.com/tHinqa/outside-windows/types" 11 | . "github.com/tHinqa/outside/types" 12 | _ "github.com/tHinqa/outside/win32/advapi32" 13 | ) 14 | 15 | var ( 16 | ChangeServiceConfig func( 17 | Service T.SC_HANDLE, 18 | ServiceType, 19 | StartType, 20 | ErrorControl T.DWORD, 21 | BinaryPathName, 22 | LoadOrderGroup VString, 23 | TagId *T.DWORD, 24 | Dependencies, 25 | ServiceStartName, 26 | Password, 27 | DisplayName VString) T.BOOL 28 | 29 | ChangeServiceConfig2 func( 30 | Service T.SC_HANDLE, 31 | InfoLevel T.DWORD, 32 | Info *T.VOID) T.BOOL 33 | 34 | CloseServiceHandle func(SCObject T.SC_HANDLE) T.BOOL 35 | 36 | ControlService func( 37 | Service T.SC_HANDLE, 38 | Control T.DWORD, 39 | ServiceStatus *T.SERVICE_STATUS) T.BOOL 40 | 41 | CreateService func( 42 | SCManager T.SC_HANDLE, 43 | ServiceName, 44 | DisplayName VString, 45 | DesiredAccess, 46 | ServiceType, 47 | StartType, 48 | ErrorControl T.DWORD, 49 | BinaryPathName, 50 | LoadOrderGroup VString, 51 | TagId *T.DWORD, 52 | Dependencies, 53 | ServiceStartName, 54 | Password VString) T.SC_HANDLE 55 | 56 | DeleteService func(Service T.SC_HANDLE) T.BOOL 57 | 58 | EnumDependentServices func( 59 | Service T.SC_HANDLE, 60 | ServiceState T.DWORD, 61 | Services *T.ENUM_SERVICE_STATUS, 62 | BufSize T.DWORD, 63 | BytesNeeded, 64 | ServicesReturned *T.DWORD) T.BOOL 65 | 66 | EnumServicesStatus func( 67 | SCManager T.SC_HANDLE, 68 | ServiceType, 69 | ServiceState T.DWORD, 70 | Services *T.ENUM_SERVICE_STATUS, 71 | BufSize T.DWORD, 72 | BytesNeeded, 73 | ServicesReturned, 74 | ResumeHandle *T.DWORD) T.BOOL 75 | 76 | EnumServicesStatusEx func( 77 | SCManager T.SC_HANDLE, 78 | InfoLevel T.SC_ENUM_TYPE, 79 | ServiceType, 80 | ServiceState T.DWORD, 81 | Services *T.BYTE, 82 | BufSize T.DWORD, 83 | BytesNeeded, 84 | ServicesReturned, 85 | ResumeHandle *T.DWORD, 86 | pszGroupName VString) T.BOOL 87 | 88 | GetServiceKeyName func( 89 | SCManager T.SC_HANDLE, 90 | DisplayName VString, 91 | ServiceName OVString, 92 | cBuffer *T.DWORD) T.BOOL 93 | 94 | GetServiceDisplayName func( 95 | SCManager T.SC_HANDLE, 96 | ServiceName VString, 97 | DisplayName OVString, 98 | cBuffer *T.DWORD) T.BOOL 99 | 100 | LockServiceDatabase func(SCManager T.SC_HANDLE) T.SC_LOCK 101 | 102 | NotifyBootConfigStatus func(BootAcceptable T.BOOL) T.BOOL 103 | 104 | OpenSCManager func( 105 | MachineName, 106 | DatabaseName VString, 107 | DesiredAccess T.DWORD) T.SC_HANDLE 108 | 109 | OpenService func( 110 | SCManager T.SC_HANDLE, 111 | ServiceName VString, 112 | DesiredAccess T.DWORD) T.SC_HANDLE 113 | 114 | QueryServiceConfig func( 115 | Service T.SC_HANDLE, 116 | ServiceConfig *T.QUERY_SERVICE_CONFIG, 117 | BufSize T.DWORD, 118 | BytesNeeded *T.DWORD) T.BOOL 119 | 120 | QueryServiceConfig2 func( 121 | Service T.SC_HANDLE, 122 | InfoLevel T.DWORD, 123 | Buffer *T.BYTE, 124 | BufSize T.DWORD, 125 | BytesNeeded *T.DWORD) T.BOOL 126 | 127 | QueryServiceLockStatus func( 128 | SCManager T.SC_HANDLE, 129 | LockStatus *T.QUERY_SERVICE_LOCK_STATUS, 130 | BufSize T.DWORD, 131 | BytesNeeded *T.DWORD) T.BOOL 132 | 133 | QueryServiceObjectSecurity func( 134 | Service T.SC_HANDLE, 135 | SecurityInformation T.SECURITY_INFORMATION, 136 | SecurityDescriptor *T.SECURITY_DESCRIPTOR, 137 | BufSize T.DWORD, 138 | BytesNeeded *T.DWORD) T.BOOL 139 | 140 | QueryServiceStatus func( 141 | Service T.SC_HANDLE, 142 | ServiceStatus *T.SERVICE_STATUS) T.BOOL 143 | 144 | QueryServiceStatusEx func( 145 | Service T.SC_HANDLE, 146 | InfoLevel T.SC_STATUS_TYPE, 147 | Buffer *T.BYTE, 148 | BufSize T.DWORD, 149 | BytesNeeded *T.DWORD) T.BOOL 150 | 151 | RegisterServiceCtrlHandler func( 152 | ServiceName VString, 153 | HandlerProc *T.HANDLER_FUNCTION) T.SERVICE_STATUS_HANDLE 154 | 155 | RegisterServiceCtrlHandlerEx func( 156 | ServiceName VString, 157 | HandlerProc *T.HANDLER_FUNCTION_EX, 158 | Context *T.VOID) T.SERVICE_STATUS_HANDLE 159 | 160 | SetServiceObjectSecurity func( 161 | Service T.SC_HANDLE, 162 | SecurityInformation T.SECURITY_INFORMATION, 163 | SecurityDescriptor *T.SECURITY_DESCRIPTOR) T.BOOL 164 | 165 | SetServiceStatus func( 166 | ServiceStatusH T.SERVICE_STATUS_HANDLE, 167 | ServiceStatus *T.SERVICE_STATUS) T.BOOL 168 | 169 | StartServiceCtrlDispatcher func( 170 | ServiceStartTable *T.SERVICE_TABLE_ENTRY) T.BOOL 171 | 172 | StartService func( 173 | Service T.SC_HANDLE, 174 | NumServiceArgs T.DWORD, 175 | ServiceArgVectors *VString) T.BOOL 176 | 177 | UnlockServiceDatabase func(ScLock T.SC_LOCK) T.BOOL 178 | ) 179 | 180 | var WinSvcANSIApis = outside.Apis{ 181 | {"ChangeServiceConfigA", &ChangeServiceConfig}, 182 | {"ChangeServiceConfig2A", &ChangeServiceConfig2}, 183 | {"CreateServiceA", &CreateService}, 184 | {"EnumDependentServicesA", &EnumDependentServices}, 185 | {"EnumServicesStatusA", &EnumServicesStatus}, 186 | {"EnumServicesStatusExA", &EnumServicesStatusEx}, 187 | {"GetServiceKeyNameA", &GetServiceKeyName}, 188 | {"GetServiceDisplayNameA", &GetServiceDisplayName}, 189 | {"OpenSCManagerA", &OpenSCManager}, 190 | {"OpenServiceA", &OpenService}, 191 | {"QueryServiceConfigA", &QueryServiceConfig}, 192 | {"QueryServiceConfig2A", &QueryServiceConfig2}, 193 | {"QueryServiceLockStatusA", &QueryServiceLockStatus}, 194 | {"RegisterServiceCtrlHandlerA", &RegisterServiceCtrlHandler}, 195 | {"RegisterServiceCtrlHandlerExA", &RegisterServiceCtrlHandlerEx}, 196 | {"StartServiceCtrlDispatcherA", &StartServiceCtrlDispatcher}, 197 | {"StartServiceA", &StartService}, 198 | } 199 | 200 | var WinSvcUnicodeApis = outside.Apis{ 201 | {"ChangeServiceConfigW", &ChangeServiceConfig}, 202 | {"ChangeServiceConfig2W", &ChangeServiceConfig2}, 203 | {"CreateServiceW", &CreateService}, 204 | {"EnumDependentServicesW", &EnumDependentServices}, 205 | {"EnumServicesStatusW", &EnumServicesStatus}, 206 | {"EnumServicesStatusExW", &EnumServicesStatusEx}, 207 | {"GetServiceKeyNameW", &GetServiceKeyName}, 208 | {"GetServiceDisplayNameW", &GetServiceDisplayName}, 209 | {"OpenSCManagerW", &OpenSCManager}, 210 | {"OpenServiceW", &OpenService}, 211 | {"QueryServiceConfigW", &QueryServiceConfig}, 212 | {"QueryServiceConfig2W", &QueryServiceConfig2}, 213 | {"QueryServiceLockStatusW", &QueryServiceLockStatus}, 214 | {"RegisterServiceCtrlHandlerW", &RegisterServiceCtrlHandler}, 215 | {"RegisterServiceCtrlHandlerExW", &RegisterServiceCtrlHandlerEx}, 216 | {"StartServiceCtrlDispatcherW", &StartServiceCtrlDispatcher}, 217 | {"StartServiceW", &StartService}, 218 | } 219 | 220 | var WinSvcApis = outside.Apis{ 221 | {"CloseServiceHandle", &CloseServiceHandle}, 222 | {"ControlService", &ControlService}, 223 | {"DeleteService", &DeleteService}, 224 | {"LockServiceDatabase", &LockServiceDatabase}, 225 | {"NotifyBootConfigStatus", &NotifyBootConfigStatus}, 226 | {"QueryServiceObjectSecurity", &QueryServiceObjectSecurity}, 227 | {"QueryServiceStatus", &QueryServiceStatus}, 228 | {"QueryServiceStatusEx", &QueryServiceStatusEx}, 229 | {"SetServiceObjectSecurity", &SetServiceObjectSecurity}, 230 | {"SetServiceStatus", &SetServiceStatus}, 231 | {"UnlockServiceDatabase", &UnlockServiceDatabase}, 232 | } 233 | -------------------------------------------------------------------------------- /winsvc/winsvc_test.go: -------------------------------------------------------------------------------- 1 | package winsvc 2 | 3 | import . "github.com/tHinqa/outside" 4 | import "testing" 5 | 6 | func Test(*testing.T) { 7 | AddApis(WinSvcApis) 8 | AddApis(WinSvcANSIApis) 9 | AddApis(WinSvcUnicodeApis) 10 | } 11 | -------------------------------------------------------------------------------- /winuser/winuser_test.go: -------------------------------------------------------------------------------- 1 | package winuser 2 | 3 | import ( 4 | . "fmt" 5 | "github.com/tHinqa/outside" 6 | . "github.com/tHinqa/outside-windows/types" 7 | . "github.com/tHinqa/outside/types" 8 | "testing" 9 | "unsafe" 10 | ) 11 | 12 | // import "unsafe" 13 | 14 | func init() { 15 | outside.AddApis(WinUserApis) 16 | // outside.AddApis(WinUserANSIApis) 17 | outside.AddApis(WinUserUnicodeApis) 18 | } 19 | 20 | //TODO(t): Handle output string buffers 21 | 22 | func callback(h HWND, l LPARAM) BOOL { 23 | var t [256]WChar 24 | GetClassName(h, &t[0], 255) 25 | // c := CStrToString((uintptr)(unsafe.Pointer(&t[0]))) 26 | // c := UniStrToString((uintptr)(unsafe.Pointer(&t[0]))) 27 | // s := GetWindowTextLength(h) 28 | // for i := LPARAM(0); i < l; i++ { 29 | // Print("\t") 30 | // } 31 | 32 | // Print(c) 33 | // if s != 0 { 34 | // GetWindowText(h, &t[0], 255) 35 | // // Print(" ", CStrToString((uintptr)(unsafe.Pointer(&t[0])))) 36 | // // Print(" ", UniStrToString((uintptr)(unsafe.Pointer(&t[0])))) 37 | // } 38 | // Println() 39 | EnumChildWindows(h, callback, l+1) 40 | W++ 41 | return 1 42 | } 43 | 44 | var W uint32 45 | 46 | var tT *testing.T 47 | 48 | func wscallback(c *VString, l LPARAM) BOOL { 49 | if l != 123 { 50 | return 0 51 | } 52 | tT.Log(*c) 53 | return 1 54 | } 55 | 56 | func TestEnumWindows(t *testing.T) { 57 | tT = t 58 | if EnumWindows(callback, 0) == 0 { 59 | t.Fail() 60 | } 61 | Println(W, "Windows") 62 | } 63 | func TestEnumDesktops(t *testing.T) { 64 | tT = t 65 | h := GetProcessWindowStation() 66 | if EnumDesktops(h, wscallback, 123) == 0 { 67 | t.Fail() 68 | } 69 | } 70 | func TestEnumWindowStations(t *testing.T) { 71 | tT = t 72 | if EnumWindowStations(wscallback, 123) == 0 { 73 | t.Fail() 74 | } 75 | } 76 | 77 | func TestWsprintf(t *testing.T) { 78 | var o [1000]WChar 79 | Wsprintf(&o[0], "%d %d %d", 123, 456, 789) 80 | t.Log(outside.UniStrToString((uintptr)(unsafe.Pointer(&o[0])))) 81 | } 82 | --------------------------------------------------------------------------------