您的位置:首页 > 编程语言 > C语言/C++

C++ 随笔 知识点 Sendmessage,FindWindow,keybd_event

2015-07-05 19:37 696 查看

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(); voidCMainFrame::OnClose() { //TODO:Addyourmessagehandlercodehereand/orcalldefault 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消息。 该函数原型如下:   VOIDkeybd_event(   BYTEbVk,//virtual-keycode   BYTEbScan,//hardwarescancode   DWORDdwFlags,//flagsspecifyingvariousfunctionoptions   DWORDdwExtraInfo//additionaldataassociatedwithkeystroke   );   从原型可以看出,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);



HWNDnpWnd,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/Bnotepadabc.txt");
启动notepad,编abc.txt。

start的选择很多,例如:
/B--不开新窗
/min--窗最小化


C语言调用dos命令的问题

假如在我的电脑上有一个a.exe的程序,存在D盘,现在要用C语言写一段代码,用上dos的at命令,让程序在每天的中午12点调用a.exe。


#include<stdio.h>
#include<stdlib.h>

voidmain()
{
char*comStr1="at12:00/interactive/every:M,T,W,Th,F,S,Sud:\a.exe";//每天12点自动执行,弹出a.exe界面
char*comStr2="at12:00/every:M,T,W,Th,F,S,Sud:\a.exe";//每天12点自动执行,不弹出a.exe界面,后台执行
char*comDel="at/delete/yes";//删除计划
charc;

printf("执行时是否弹出界面(y/n):\n");
scanf("%c",&c);
c=tolower(c);
if(c=='y')//需要弹出界面进行交互
system(comStr1);
elseif(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"));

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: