我们在打代码时,通常会遇到要重新启动程序的事情,我们可以先打开一个新的程序,然后再关闭原来的程序,当然也能直接切换。
方法一:
打开新程序可以用 system() 这个函数解决。system(" start 现在正在运行的程序的文件名.exe ") 。一定要加双引号!!!
示例:(“ test.exe ”可以换成其他的文件)
system("start test.exe");
然后可以从电脑自动按下键盘,使用 keybd_event() 函数。
Windows 提供了一个模拟键盘 API 函数 Keybd_event() ,使用该函数可以相应的屏蔽键盘的动作。Keybd_event() 函数能触发一个按键事件,也就是说会产生 WM_KEYDOWN 或 WM_KEYUP 消息。
Keybd_event()共有四个参数:
第一个为按键的虚拟键值。(参见虚拟键码 (Winuser.h) - Win32 apps | Microsoft Learn);
第二个参数为扫描码,一般不用设置,用 0 代替就行;
第三个参数为选项标志,如果为按下则置 0 即可,如果为松开则设成2;
第四个参数一般也是置 0 即可。
Windows 系统下需要调用 <windows.h> , Linux 系统下需要调用 <unistd.h>。
先按下 alt ,再按下 F4(即 alt+F4 组合键),最后一定一定要停止按下键盘,否则~~~
keybd_event(0x12,0,0,0);//按下alt
keybd_event(0x73,0,0,0);//按下F4
keybd_event(0x12,0,2,0);//松开alt
keybd_event(0x73,0,2,0);//松开F4
最后,要想重启程序,可以使用如下代码,直接放在 int main() 主函数内,不需要新建函数。
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int main(){
Sleep(3000);//常与Sleep()搭配,程序执行到这里,自动停止3秒(3000毫秒)。(需包含<windows.h>头文件)
system("start test.exe");
keybd_event(0x12,0,0,0);
keybd_event(0x73,0,0,0);
keybd_event(0x12,0,2,0);
keybd_event(0x73,0,2,0);
}
方法二:
如上方法有种缺点,即如果打开其他应用将误关这个应用。
要解决的话可以用更简单的方法:
system("test.exe")
这样虽然简单,但只能直接切换为test.exe,没有切换的感觉。
如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
system("test.exe");
}