实现当前目录下开启CMD
我们都知道在WIN7下,可以按shift+鼠标右键->在此处打开命令窗口
或者在
输入cmd,回车
那么,怎样去实现这样的功能呢?
//当前目录下开启CMD#include <stdio.h>
#include <windows.h>int main()
{TCHAR pathString[100] = { 0 };TCHAR batString[150] = { 0 };TCHAR regString[200];DWORD dwSize;HWND hwnd = NULL;HKEY hkey;lstrcpy(batString, TEXT("/c start /d \""));hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL);if (hwnd == NULL){// 读取注册表获取桌面路径dwSize = sizeof(regString);RegOpenKey(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"),&hkey);RegQueryValueEx(hkey, TEXT("Desktop"), NULL, NULL, (LPBYTE)regString, &dwSize);wsprintf(pathString, TEXT("%s"), regString);}else{HWND hToolBar;hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("WorkerW"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("ReBarWindow32"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("Address Band Root"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("msctls_progress32"), NULL);hToolBar = FindWindowEx(hwnd, NULL, TEXT("ToolbarWindow32"), NULL);SendMessage(hToolBar, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));SendMessage(hToolBar, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(0, 0));SendMessage(hToolBar, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));SendMessage(hToolBar, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(0, 0));hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBoxEx32"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("ComboBox"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("Edit"), NULL);SendMessage(hwnd, WM_GETTEXT, 100, (LPARAM)pathString);}lstrcat(batString, pathString);lstrcat(batString, TEXT("\""));//MessageBox(NULL, batString, TEXT("Caption"), 0);ShellExecute(NULL, NULL, TEXT("cmd.exe"), batString, NULL, SW_SHOW);return 0;
}
在网络、回收站、控制面板这些窗口下是不能开启cmd的,该程序没有判断这些情况。
当然简单的做法是:
//当前目录下开启CMD#include <stdio.h>
#include <windows.h>int main()
{TCHAR pathString[100] = { 0 };TCHAR batString[150] = { 0 };TCHAR regString[200];DWORD dwSize;HWND hwnd = NULL;HKEY hkey;lstrcpy(batString, TEXT("/c start /d \""));hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL);if (hwnd == NULL){// 读取注册表获取桌面路径dwSize = sizeof(regString);RegOpenKey(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"),&hkey);RegQueryValueEx(hkey, TEXT("Desktop"), NULL, NULL, (LPBYTE)regString, &dwSize);wsprintf(pathString, TEXT("%s"), regString);}else{hwnd = FindWindowEx(NULL, NULL, TEXT("CabinetWClass"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("WorkerW"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("ReBarWindow32"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("Address Band Root"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("msctls_progress32"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("Breadcrumb Parent"), NULL);hwnd = FindWindowEx(hwnd, NULL, TEXT("ToolbarWindow32"), NULL);SendMessage(hwnd, WM_GETTEXT, 100, (LPARAM)pathString);lstrcpy(pathString, pathString + 4);}lstrcat(batString, pathString);lstrcat(batString, TEXT("\""));//MessageBox(NULL, batString, TEXT("Caption"), 0);//wprintf(TEXT("%s"), batString);ShellExecute(NULL, NULL, TEXT("cmd.exe"), batString, NULL, SW_SHOW);return 0;
}
简单点做法是:
在标题栏显示完整路径
则可以直接使用GetWindowText
转载于:https://www.cnblogs.com/lgh1992314/p/5834693.html
实现当前目录下开启CMD相关推荐
- windows系统中,在当前目录下打开cmd命令行的两种方法
windows系统中,在当前目录下打开cmd命令行的两种方法 1.在当前路径地址栏中直接输入'cmd',然后回车. 2.在当前路径下,按住'shift'键同时点击鼠标右键,点击"在此处打开P ...
- 三种方法在当前目录下打开cmd命令窗口
概述 总结了三种在当前目录下直接打开cmd窗口的方法,供以后开发时参考,相信对其他人也有用. 方法一 在当前目录上面的路径显示框中输入CMD,然后回车即可. 方法二 在当前目录按住shift再右键. ...
- Cmd下开启3389
1.2000系统 简要说一下如何进行DNS溢出***.我用的溢出利用程序是dns.exe,在CMD下运行它可以看到它的使用参数等信息.执行"dns -s IP"命令检测目标IP是否 ...
- cmd远程打开服务器,CMD下开启远程桌面服务
<CMD下开启远程桌面服务>由会员分享,可在线阅读,更多相关<CMD下开启远程桌面服务(9页珍藏版)>请在人人文库网上搜索. 1.CMD下开启远程桌面服务CMD下开启近程桌里办 ...
- windows下的cmd命令(全面)
2019独角兽企业重金招聘Python工程师标准>>> 命令提示符是在操作系统中,提示进行命令输入的一种工作提示符.在不同的操作系统环境下,命令提示符各不相同. 在windows环境 ...
- c语言基础学习02_windows系统下的cmd命令
============================================================================= 注意:cmd的命令很多,需要用的时候可以查询 ...
- 在批处理脚本所在目录下打开cmd
@cd /d %~dp0 @cmd cd 命令是不会修改当前的drive的. cd /d 切换盘符和切换路径二合一了.相当于c:和cd c:/temp两个命令. %~dp0 可以理解为批处理脚本所在的 ...
- sql server 2005下开启xp_cmdshell的办法
sql server 2005下开启xp_cmdshell的办法 2009年05月09日 星期六 下午 06:06 sql server 2005下开启xp_cmdshell的办法 EXEC sp_c ...
- win7下的cmd窗口可以全屏显示吗
以前鄙人写了<在windows上运行linux命令>一文,以在windows上运行一些类linux的bash命令,文中只是罗列了一些命令,没有任何说明. 一些网友和我的同事表示喜欢这个工具 ...
最新文章
- log_bin.index not found 启动报错解决
- Nat.Commun. | DeepAccNet:基于深度学习的准确性估计改善蛋白质结构优化
- 堪比Focal Loss!解决目标检测中样本不平衡的无采样方法
- Spring.NET的AOP怎么玩
- re Python正则
- 面向对象,面向过程编程
- 电源完整性仿真让电路板更完美
- 那些你踩过的币圈投资陷阱(下)
- 搜索引擎设计实用教程(2)-以百度为例
- 模拟退火算法(代码可直接运行)
- PAT1036.跟奥巴马一起编程
- 各种数值积分方法总结(从梯形积分、辛普森积分到龙贝格积分、自适应积分、高斯积分等)
- 苹果cms播放器html,解决苹果cmsv10版本ckplayer播放器高度自适应兼容问题
- otsu阈值分割算法原理_OpenCV学习30--阈值分割的OTSU算法
- 【010Editor】010Editor使用技巧汇总(不断更新中)
- defer和async的区别
- 李开复就中国移动开发者大会的演讲总结
- xkcd 单线程下载图片
- 第一篇什么都没写的博客
- java mysql 订单表设计
热门文章
- FPGrowth算法总结复习
- Front End Developer Questions 前端开发人员问题(三)JavaScript部分
- 基础 - jQuery选项卡
- log4cxx编译过程–linux
- Python参考手册----第一章: Python简介(四)
- Android中解析XML---数据存储
- 2月28日云栖精选夜读 | 阿里云率先达成国家绿色数据中心标准,平均PUE低于1.3...
- Duilib嵌入CEF出现窗口显示不正常
- Java泛型通用常量类案例
- 多线程-Thread、Runnable、Callbale、Future