export
const winwin =new WinWin();
winwin.user32();
winwin.kernel32();
const winFns = winwin.winFns(); // include user32 and kernel32
const _createEnumWindowProc = () => ffi.Callback(CPP.BOOL, [CPP.HWND, CPP.LPARAM],
(hWnd: TS.HWND) => {
......
return true;
});
winFns.EnumWindows(this._createEnumWindowProc(), 0);
const tmp: TS.HWND = FindWindowExW(0, 0, L('progman'), null);
import {ref, StructType,CPP} from 'win-win';
const Struct = StructType(ref);
const MSG = Struct({
hwnd: CPP.HWND,
message: CPP.UINT,
wParam: CPP.WPARAM,
lParam: CPP.LPARAM,
time: CPP.DWORD,
pt: CPP.POINT
});
const msg = new MSG();
console.log(msg.ref());
overwrite.ts
import { CPP, ref } from 'win-win';
export const customFns = {
CallNextHookEx: [CPP.LRESULT, [CPP.HHOOK, CPP.INT, CPP.WPARAM, ref.refType(CPP.MOUSEHOOKSTRUCT)]]
};
index.ts
import { customFns } from './overwrite';
WinWin.overwrite({ user32Fns: customFns });
SendMessage
to achieve, winwin providesexport const MAKELONG = (a: number, b: number): number => (a & 0xfff) | ((b & 0xfff) << 16);
c++
MOUSEHOOKSTRUCT* mouse = (MOUSEHOOKSTRUCT*)(lParam)
ts
ffi.Callback(CPP.LRESULT, [CPP.INT, CPP.WPARAM, ref.refType(CPP.MOUSEHOOKSTRUCT)],(nCode: TS.INT, wParam: TS.WPARAM, lParam: TS.RefStruct) => {})
const { WinWin, ffi, CPP, L, NULL } = require('win-win');
const { CreateThread, MessageBoxW } = new WinWin().winFns();
const proc = ffi.Callback(CPP.INT, [CPP.PVOID], () => {
MessageBoxW(0, L("exmpale"), null, CPP.MB_OK | CPP.MB_ICONEXCLAMATION);
});
CreateThread(null, 0, proc, NULL, 0, NULL);
const _createMouseHookProc = () => ffi.Callback(CPP.LRESULT, [CPP.INT, CPP.WPARAM, ref.refType(CPP.StructMOUSEHOOKSTRUCT)],
(nCode: TS.INT, wParam: TS.WPARAM, lParam: TS.RefStruct) => {
const mouse: TS.MOUSEHOOKSTRUCT = lParam.deref();
const pt = mouse.pt;
const { x, y } = pt;
const currentHwnd = WindowFromPoint(mouse.pt);
return CallNextHookEx(0, nCode, wParam, lParam); // need overwrite
}
)
const _mouseHook = SetWindowsHookExW(CPP.WH_MOUSE_LL, this._createMouseHookProc(), 0, 0);
const msg: TS.RefStruct = new CPP.StructMSG();
while (GetMessageW(msg.ref(), 0, 0, 0) && this._trigger) {
TranslateMessage(msg.ref());
DispatchMessageW(msg.ref());
}
UnhookWindowsHookEx(_mouseHook);
Generated using TypeDoc