VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 920|回复: 5

[已解决]打开cmd模拟输入telnet失败

[复制链接]
81_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-31 00:23:37 | 显示全部楼层 |阅读模式
本帖最后由 fqyzhx 于 2020-12-31 00:27 编辑

用xxx.vbs实现了  自动化登录telnet备份交换机配置到D盘

可是交换机很多
用VS2015做了个程序
[code]#include<windows.h>
#include<stdio.h>
#include<WinUser.h>
int main()
{
WinExec("c:\\windows\\system32\\cmd.exe", SW_SHOW);
        Sleep(1000);
        //发送telnet
        keybd_event(0x54, 0, 0, 0);
        Sleep(100);
        keybd_event(0x45, 0, 0, 0);
        Sleep(100);
        keybd_event(0x4C, 0, 0, 0);
        Sleep(100);
        keybd_event(0x4E, 0, 0, 0);
        Sleep(100);
        keybd_event(0x45, 0, 0, 0);
        Sleep(100);
        keybd_event(0x54, 0, 0, 0);
        Sleep(500);
        //发送回车
        keybd_event(13, 0, 0, 0);
        return 0;
}
运行后提示
打开cmd模拟输入telnet失败

但是我直接在运行中输入CMD,然后输入telnet又正常呢?
打开cmd模拟输入telnet失败
最佳答案
70_avatar_small
2020-12-31 23:25:30
应该是文件路径重定位的问题,在64位的电脑上运行的32位程序,会产生重定位问题。
解决方法
1.在64位电脑上运行64位的程序

2.关闭重定位
  1. int  main() {
  2.     char sysDir[MAX_PATH];
  3.     GetSystemDirectory(sysDir,MAX_PATH);
  4.     strcat_s(sysDir, "\\telnet.exe");
  5.     LPVOID pVoid = NULL;
  6.     Wow64DisableWow64FsRedirection(&pVoid);
  7.     WinExec(sysDir, SW_SHOW);
  8.     Wow64RevertWow64FsRedirection(pVoid);
  9.     return 0;
  10. }
复制代码




上一篇:求助一下程序运行崩溃是什么原因?
下一篇:win32窗口下WindowProc报错问题
19_avatar_middle
最佳答案
12 
在线会员 发表于 2020-12-31 15:49:51 | 显示全部楼层
把程序拿到桌面上试试 或者 把你的F盘编译的程序设置个环境变量试试  估计是不到你F盘的exe路径吧
81_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-31 19:13:19 | 显示全部楼层
236a 发表于 2020-12-31 15:49
把程序拿到桌面上试试 或者 把你的F盘编译的程序设置个环境变量试试  估计是不到你F盘的exe路径吧

放桌面了还是不行,
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-12-31 23:25:30 | 显示全部楼层    本楼为最佳答案   
bestAnswer
应该是文件路径重定位的问题,在64位的电脑上运行的32位程序,会产生重定位问题。
解决方法
1.在64位电脑上运行64位的程序

2.关闭重定位
  1. int  main() {
  2.     char sysDir[MAX_PATH];
  3.     GetSystemDirectory(sysDir,MAX_PATH);
  4.     strcat_s(sysDir, "\\telnet.exe");
  5.     LPVOID pVoid = NULL;
  6.     Wow64DisableWow64FsRedirection(&pVoid);
  7.     WinExec(sysDir, SW_SHOW);
  8.     Wow64RevertWow64FsRedirection(pVoid);
  9.     return 0;
  10. }
复制代码
81_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-1-1 18:45:18 | 显示全部楼层
本帖最后由 fqyzhx 于 2021-1-1 21:11 编辑
tony666 发表于 2020-12-31 23:25
应该是文件路径重定位的问题,在64位的电脑上运行的32位程序,会产生重定位问题。
解决方法
1.在64位电脑 ...


编译生成X64程序?我把cmd放程序目录就可以调用了。
                ShellExecute(NULL, "open", "cmd.exe", NULL, NULL, SW_SHOWNORMAL);
暂时这么解决的/
晚上试试你的代码 打开cmd模拟输入telnet失败

666,这是高手。真解决了,也说明了遇见的问题
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-1-1 22:42:34 | 显示全部楼层
fqyzhx 发表于 2021-1-1 18:45
编译生成X64程序?我把cmd放程序目录就可以调用了。
                ShellExecute(NULL, "open", "cmd.exe", NULL,  ...

是的,直接编译x64就没这个问题了(但只能在64位机器上用)。
如果问题解决了就给个最佳答案吧,方便其他遇到问题的朋友解决问题打开cmd模拟输入telnet失败
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-6-10 05:01

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表