将putty移植为DLL的形式


修改:
1.在load_open_settings()函数内修改日志记录
gppi(sesskey, "LogType", /*0*/1, &cfg->logtype);//gppi此函数是获取一个注册表的项的值(整型)//默认为总是保存
    gppi(sesskey, "LogFileClash", /*LGXF_ASK*/LGXF_APN, &cfg->logxfovr); //默认为追加
   
   2.在putty.h文件内,结构体config_tag中的&cfg->logtype和&cfg->logxfovr是设置,记录日志和追加写的,因此可在初始化此结构体的时候进行设置,(也可以在load_open_settings里面设置)
   
过程1:(设置exe运行直接进入会话)
1.修改load内的默认选中的是第二条,或者直接在添加ip的文本框内填写要指定的ip地址(在load_open_settings()函数内,在hostname设置ip地址,使其默认显示在文本框内)
2.设置程序使open按钮生效,让其直接进入会话。
3.在sessionsaver_handler()函数内,直接添加了 “dlg_end(dlg, 1);//worldwang 再此修改,为使程序运行的时候直接进入到会话。20120507”, 使其程序直接打开会话。

过程2:(能够实现发送root和rooter,使其直接连接到Linux的terminal)
1.此过程是通过设置来完成的,参看http://www.2cto.com/os/201112/113464.html说明。
20120508:(15092062)
过程3:设计代替在终端上输入的api,能够通过此api来发送命令。
1.在ldisc.c文件内,函数void ldisc_send(void *handle, char *buf, int len, int interactive)将终端上敲入的字符发送到服务器端,worldwang20120508
2.从键盘输入到发送到服务区的调用过程:
WndPro->TranslateKey->luni_send(ldisc, &keybuf, 1, 1)->void luni_send(void *handle, wchar_t * widebuf, int len, int interactive)
->void ldisc_send(void *handle, char *buf, int len, int interactive)
->ldisc->back->send(ldisc->backhandle, buf,len);
此过程实现了往服务器的发送。
因为要实现的是,使用程序代替终端输入命令,所以应该在luni_send()函数被调用的地方截获数据。
3.CreateProcess 实现将参数传递给exe程序,然后在exe内,将参数传递给luni_send()函数.


20120510
将exe移植为dll:
1.使用vs2005创建一个win32的dll工程,此工程是空的,然后点击属性,c++->Precompiled Headers->Not Using Precompiled Headers.(就是不使用头文件“stdafx.h”)
2.将putty的文件放进工程文件夹内,并加载到工程中。
3.在编译过程中,会有一些函数的api在链接的时候报错,需要查找msdn,在文件中添加#pragma comment(lib,"。。。")

20120515:
1.由于在windows下和在linux下的换行符不一样,导致两个系统之间传输换行的数据的时候,会有乱码的出现
解决:在接收字符换的时候,当在linux下接收到\r(0x0d)的时候就不在复制给接收数据的全局变量, 而是使用字符'('']',分别代替 \r,\n。
然后在将数据传递给windows的接口的时候,将数据赋值给字符串二维数组, 每行是一维数据,间隔符为‘(’‘]’
2.在IMM的API方面,将各个功能的接口,都作成API的接口, 让用户使用起来不需要考虑命令, 只需要接收返回的数据即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值