在Go中加载Windows DLL?

时间:2018-10-14 22:50:29

标签: go

我需要在我的应用程序中使用Windows DLL,具体来说是kernel32.dll。 我只找到这个:WindowsDLL

但是那个“指南”并不是那么直观。

例如,在Python中,您使用ctypes。 ej:ctypes.windll.kernel32.SetConsoleTextAtribute(handle, color)

除了Golang外,我如何能做同样的事情?

任何人都可以举出我想要的例子吗?

1 个答案:

答案 0 :(得分:2)

实际上,您拥有的链接是一个很好的参考。 您现在需要的只是选择建议的实现之一。

您可以在这里找到@Bean public TcpConnectionFactoryFactoryBean factory(LengthHeaderDeserializer deserializer) throws Exception { CompletableFuture.runAsync(() -> waitForSocket(port)).get(5, TimeUnit.MINUTES); TcpConnectionFactoryFactoryBean fact = new TcpConnectionFactoryFactoryBean(); .... } private void waitForSocket(int port) { do { try { SocketUtils.findAvailableTcpPort(port, port); return; } catch (Exception e) { try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e1) { return; } } } while (true); } 的文档:https://docs.microsoft.com/en-us/windows/console/setconsoletextattribute

公开的API定义为:

kernel32.SetConsoleTextAtribute

第二个选项的示例(使用BOOL WINAPI SetConsoleTextAttribute( _In_ HANDLE hConsoleOutput, _In_ WORD   wAttributes ); ):

syscall.NewProc