gpt4 book ai didi

c++ - 如何在 Chrome Native Messaging Extension 的 native 应用程序中使用 native 主机消息

转载 作者:行者123 更新时间:2023-11-28 06:27:47 26 4
gpt4 key购买 nike

我正在开发带有本地主机消息的 Chrome 扩展。我无法在我的主机应用程序中使用消息文本。从建立连接到获得扩展响应,一切正常。我需要在我的应用程序中使用消息文本,以便在简单文本数据类型(字符串/字符)中进一步使用/执行。我知道消息采用 UTF8 编码形式,我尝试解码但仍然遇到问题,有人可以帮助我吗?

当我解码消息时,chrome 扩展控制台显示错误:“与 native 消息传递主机通信时出错。”如果我在“cout”之后使用该消息文本,则会出现“与 native 消息传递主机通信时出错”的相同错误。直接发送和接收消息对我来说很好用。

代码是这样的:

 std::string mycode(std::string data){
data= data+"abc"; //changing text to any thing.
cout<< data;
anotherFunction(data);//killing processes using string data
}
int main(int argc, char* argv[])
{
std::cout.setf( std::ios_base::unitbuf );
while (true)
{
unsigned int ch, inMsgLen = 0, outMsgLen = 0;
std::string input = "", response = "";
std::cin.read((char*)&inMsgLen, 4);
if (inMsgLen == 0)
{
break;
}
else
{
for (int i=0; i < inMsgLen; i++)
{
ch = getchar();
input += ch;
}
}
response.append("{\"echo\":").append(input).append("}");
outMsgLen = response.length();
std::cout.write((char*)&outMsgLen, 4);
std::cout << response;
cout<< input;
//using "input" variable for further user
mycode(input);
}
return 0;
}

最佳答案

错了,你读过文档了吗?尝试这样的事情......

_setmode( _fileno( stdin ), _O_BINARY ); 
_setmode( _fileno( stdout ), _O_BINARY );

char cBuffer[65536] = {0};
while(true)
{
unsigned int uiSize = 0;
std::cin.read((char*)&uiSize, sizeof(unsigned int));

if(uiSize != 0 && uiSize < 65536)
{
memset(cBuffer, 0, 65536);
std::cin.read(cBuffer, uiSize);

std::string strIn(cBuffer);

std::string strOut = "{\"result\":\"This is a Test\"}";
uiSize = strOut.length();

std::cout << char(((uiSize>>0) & 0xFF));
std::cout << char(((uiSize>>8) & 0xFF));
std::cout << char(((uiSize>>16) & 0xFF));
std::cout << char(((uiSize>>24) & 0xFF));
std::cout << strOut.c_str();
}
else
break;
}

你需要将 io 设置为二进制,否则可能会发生这样的事情......如果存在值为 00011010 (CTRL ALT Z = 26) 的字节,它将被视为 EOF 并结束通信。 :)

关于c++ - 如何在 Chrome Native Messaging Extension 的 native 应用程序中使用 native 主机消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com