go-sciter在golang中直接关闭窗口

1、go-sciter现有方式关闭window


go-sciter通过tiscript语言,使用全局变量view的close函数来关闭所在的窗口。

但很多时候,我们需要被动地关闭窗口。例如,我们在一个自动化的业务中,当业务完成,自动关闭当前窗口。
当然,也可以通过比较曲折的方式:通过go与tiscript之间相互调用,golang中回调到再现再使用view.close()来关闭。

2、通过Windows API主动关闭 window

这个方法需要使用到一个第三方库:

go get github.com/lxn/win

这个库其实就是封装了Windows API。

然后在golang中使用:

hwdn := win.HWND(unsafe.Pointer(this.MainWindow.GetHwnd()))
win.DestroyWindow(hwdn)

首先是获得当道MainWindow窗口的句柄:

unsafe.Pointer(this.MainWindow.GetHwnd())

然后将句柄封装成lxn/win能识别的类型,再通过lxn/win的DestroyWindow函数关闭就可以。

经过测试,发现这个方案虽然通过窗口的点击事件,可以关闭掉窗口,但是业务完成后无法通过此方法自动关闭窗口。

3、通过Windows API来被动关闭 window

参考:https://blog.csdn.net/jiaoyaziyang/article/details/79135863
经过度娘后发现了上面的一文章。通过SendMessage这个API来修改,发现这个方案即可以主动关闭窗口,也可以被动去关闭窗口。

hwdn := win.HWND(unsafe.Pointer(this.cameraPage.MainWindow.GetHwnd()))
win.SendMessage(hwdn,win.WM_CLOSE,0,0)

你可能感兴趣的:(golang)