VC中退出应用程序-几种很有用的方法
1、OnOK()或OnCancel()//只对对话框有用
2、PostQuitMessage(0);//最常用
PostMessage(WM_QUIT,0,0);//最常用
::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用 ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用
3、ExitProcess(0);注意使用时先释放分配的内存,以免造成内存泄露
4、exit(0) 正常终止程序; exit(非0)非正常终止程序
5、OnClose();
void CMainFrame::OnClose() { // TODO: Add your message handler code here and/or call default if (MessageBox("确定要退出吗?","提示",MB_YESNO|MB_DEFBUTTON2)==IDYES) { CFrameWnd::OnClose(); } }
6、向主窗口发送WM_CLOSE消息 SendMessage(WM_CLOSE); 如果要在其它类关闭应用程序,则 AfxGetMainWnd->SendMessage(WM_CLOSE)
Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。
该函数原型如下: VOID keybd_event( BYTE bVk, // virtual-key code BYTE bScan, // hardware scan code DWORD dwFlags, // flags specifying various function options DWORD dwExtraInfo // additional data associated with keystroke ); 从原型可以看出,Keybd_event()共有四个参数:
第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常用模拟键的键值对照表);
第二个参数为扫描码,一般不用设置,用0代替就行;
第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP";
第四个参数一般也是置0即可。
例子1:模拟按下'A'键 keybd_event(65,0,0,0); keybd_event(65,0,KEYEVENTF_KEYUP,0);
例子2:模拟按下'ALT+F4'键 keybd_event(18,0,0,0); keybd_event(115,0,0,0); keybd_event(115,0,KEYEVENTF_KEYUP,0); keybd_event(18,0,KEYEVENTF_KEYUP,0);
HWND npWnd,childWnd; npWnd=FindWindow("notepad",NULL); childWnd=FindWindowEx(npWnd, NULL, "Edit", NULL); SendMessage(childWnd, (UINT) WM_SETTEXT, NULL, (LPARAM)"hello!");
发键盘消息 SendMessage(hwnd,WM_KENDOWN,wParam,lParam);//hwnd是记事本窗口句柄 SendMessage(hwnd,WM_KENUP,wParam,lParam); 模拟键盘按下,放开
C语言可以调用所有dos命令。 通过system()函数调用。 不要新的黑窗加 start system( "start /B notepad abc.txt"); 启动 notepad,编 abc.txt。 start 的选择很多,例如: /B -- 不开新窗 /min -- 窗最小化
假如在我的电脑上有一个a.exe的程序,存在D盘,现在要用C语言写一段代码,用上dos的at命令,让程序在每天的中午12点调用a.exe。
#include <stdio.h> #include <stdlib.h> void main() { char* comStr1="at 12:00 /interactive /every:M,T,W,Th,F,S,Su d:\a.exe";//每天12点自动执行,弹出a.exe界面 char* comStr2="at 12:00 /every:M,T,W,Th,F,S,Su d:\a.exe";//每天12点自动执行,不弹出a.exe界面,后台执行 char* comDel="at /delete /yes"; //删除计划 char c; printf("执行时是否弹出界面(y/n):\n"); scanf("%c",&c); c=tolower(c); if(c=='y')//需要弹出界面进行交互 system(comStr1); else if(c=='n')//后台运行 system(comStr2); else printf("输入错误!\n"); //下面是取消计划的功能,如果你不想有取消功能,就删除下面的代码 printf("是否要删除所有计划(y/n):\n"); getchar();//清空刚提示输入时输入的回车符 scanf("%c",&c); c=tolower(c); if(c=='y')//此时删除所有计划 { system(comDel); printf("已删除所有计划!\n"); } getchar(); }C++如何移动文件
MoveFile(); 加头文件<windows.h>
MoveFile(TEXT("C:\\1.JPG"),TEXT("D:\\1.JPG"));