新增动态链接库调用

This commit is contained in:
2025-03-21 22:33:07 +08:00
parent ded0148ba6
commit e3490fa5b1
4 changed files with 34 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
package main package client
import ( import (
"ShotRDP/common" "ShotRDP/common"
@@ -181,7 +181,7 @@ func (client *RdpClient) setEventHandler() {
去除requestedProtocol中的PROTOCOL_HYBRID避免使用NLA 去除requestedProtocol中的PROTOCOL_HYBRID避免使用NLA
*/ */
func getScreen(host string) ([]byte, error) { func RealGetScreen(host string) ([]byte, error) {
client := Newclient(host, glog.INFO) client := Newclient(host, glog.INFO)
return client.Login("", "", "") return client.Login("", "", "")
} }

View File

@@ -1,4 +1,4 @@
package main package client
import ( import (
"testing" "testing"

29
mainDLL.go Normal file
View File

@@ -0,0 +1,29 @@
package main
/*
#include <stdlib.h>
*/
import "C"
import (
"ShotRDP/client"
"unsafe"
)
//export GetScreen
func GetScreen(host *C.char, data **C.char, length *C.int) *C.char {
imgBytes, err := client.RealGetScreen(C.GoString(host))
if err != nil {
return C.CString(err.Error())
}
*data = (*C.char)(C.CBytes(imgBytes))
*length = C.int(len(imgBytes))
return nil
}
//export Free
func Free(p *C.char) {
C.free(unsafe.Pointer(p))
}
func main() {}

View File

@@ -1,6 +1,7 @@
package main package main
import ( import (
"ShotRDP/client"
"context" "context"
"google.golang.org/grpc" "google.golang.org/grpc"
"net" "net"
@@ -13,7 +14,7 @@ type Server struct {
} }
func (server *Server) GetScreen(ctx context.Context, in *pb.Request) (*pb.Response, error) { func (server *Server) GetScreen(ctx context.Context, in *pb.Request) (*pb.Response, error) {
imgBytes, err := getScreen(in.GetHost()) imgBytes, err := client.RealGetScreen(in.GetHost())
return &pb.Response{ImageBytes: imgBytes}, err return &pb.Response{ImageBytes: imgBytes}, err
} }